forked from TAIGA/TAIGA
first implementaion of a custom TickHandler
This commit is contained in:
@@ -15,7 +15,8 @@ import java.lang.reflect.Field;
|
||||
import java.util.Arrays;
|
||||
|
||||
import static com.sosnitzka.taiga.MaterialTraits.*;
|
||||
import static com.sosnitzka.taiga.util.Utils.*;
|
||||
import static com.sosnitzka.taiga.util.Utils.PREFIX_BLOCK;
|
||||
import static com.sosnitzka.taiga.util.Utils.PREFIX_ORE;
|
||||
import static slimeknights.tconstruct.library.utils.HarvestLevels.*;
|
||||
|
||||
public class Blocks {
|
||||
@@ -90,8 +91,6 @@ public class Blocks {
|
||||
public static Block proxideumBlock = new BasicBlock("proxideum_block", Material.ROCK, 25.0f, 25.0f, 4, PREFIX_BLOCK);
|
||||
public static Block astriumBlock = new BasicBlock("astrium_block", Material.ROCK, 55.0f, 400.0f, 7, PREFIX_BLOCK);
|
||||
|
||||
//public static Block fluidBlock = new BlockMolten(Fluids.astriumFluid);
|
||||
|
||||
|
||||
public static void register() {
|
||||
Field[] declaredFields = Blocks.class.getDeclaredFields();
|
||||
|
@@ -102,10 +102,10 @@ public class Items {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
OreDictionary.registerOre("nuggetIron", iron_nugget);
|
||||
OreDictionary.registerOre("ingotIron", slagironIngot);
|
||||
OreDictionary.registerOre("ingotGold", slaggoldIngot);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -19,11 +19,13 @@ public class TraitCascade extends AbstractTrait {
|
||||
public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) {
|
||||
float f = random.nextFloat();
|
||||
float b = 0.99F * calcBonus(tool);
|
||||
|
||||
if (!world.isRemote && tool.canHarvestBlock(state) && f <= b) {
|
||||
double x, y, z, sx, sy, sz;
|
||||
sx = x = pos.getX();
|
||||
sy = y = pos.getY();
|
||||
sz = z = pos.getZ();
|
||||
|
||||
for (int i = random.nextInt(ToolHelper.getCurrentDurability(tool)); i > 0; i--) {
|
||||
int r = random.nextInt(3);
|
||||
int d = random.nextBoolean() ? 1 : -1;
|
||||
@@ -42,11 +44,8 @@ public class TraitCascade extends AbstractTrait {
|
||||
y = sy;
|
||||
z = sz;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private float calcBonus(ItemStack tool) {
|
||||
|
28
src/main/java/com/sosnitzka/taiga/util/TickTask.java
Normal file
28
src/main/java/com/sosnitzka/taiga/util/TickTask.java
Normal file
@@ -0,0 +1,28 @@
|
||||
package com.sosnitzka.taiga.util;
|
||||
|
||||
|
||||
public class TickTask {
|
||||
private Runnable task;
|
||||
private int targetTicks = 0;
|
||||
private int ticks;
|
||||
|
||||
public TickTask(int targetTicks, Runnable runnable) {
|
||||
this.task = runnable;
|
||||
this.targetTicks = targetTicks;
|
||||
}
|
||||
|
||||
public TickTask(Runnable runnable) {
|
||||
this.task = runnable;
|
||||
this.targetTicks = 1;
|
||||
}
|
||||
|
||||
public boolean tickRun() {
|
||||
ticks++;
|
||||
|
||||
if (ticks >= targetTicks) {
|
||||
this.task.run();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
39
src/main/java/com/sosnitzka/taiga/util/TickTaskHandler.java
Normal file
39
src/main/java/com/sosnitzka/taiga/util/TickTaskHandler.java
Normal file
@@ -0,0 +1,39 @@
|
||||
package com.sosnitzka.taiga.util;
|
||||
|
||||
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.gameevent.TickEvent;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
public class TickTaskHandler {
|
||||
private List<TickTask> tickTasks = new ArrayList<TickTask>();
|
||||
|
||||
|
||||
private TickTaskHandler() {
|
||||
}
|
||||
|
||||
public static TickTaskHandler getInstance() {
|
||||
return InstanceHolder.INSTANCE;
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onTick(TickEvent.ServerTickEvent e) {
|
||||
for (Iterator<TickTask> iterator = tickTasks.iterator(); iterator.hasNext(); ) {
|
||||
TickTask task = iterator.next();
|
||||
if (task.tickRun()) {
|
||||
iterator.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void addTask(TickTask tickTask) {
|
||||
tickTasks.add(tickTask);
|
||||
}
|
||||
|
||||
private static final class InstanceHolder {
|
||||
static final TickTaskHandler INSTANCE = new TickTaskHandler();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user