diff --git a/src/main/java/com/hbm/blocks/machine/Watz.java b/src/main/java/com/hbm/blocks/machine/Watz.java index 8edb70cb7..0b9767e4d 100644 --- a/src/main/java/com/hbm/blocks/machine/Watz.java +++ b/src/main/java/com/hbm/blocks/machine/Watz.java @@ -1,12 +1,14 @@ package com.hbm.blocks.machine; import com.hbm.blocks.BlockDummyable; +import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityWatz; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; public class Watz extends BlockDummyable { @@ -17,9 +19,8 @@ public class Watz extends BlockDummyable { @Override public TileEntity createNewTileEntity(World world, int meta) { - if(meta >= 12) - return new TileEntityWatz(); - + if(meta >= 12) return new TileEntityWatz(); + if(meta >= 6) return new TileEntityProxyCombo().inventory().fluid(); return null; } @@ -37,4 +38,26 @@ public class Watz extends BlockDummyable { public int getOffset() { return 3; } + + @Override + protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { + return super.checkRequirement(world, x, y, z, dir, o); //TODO + } + + @Override + protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + x += dir.offsetX * o; + z += dir.offsetZ * o; + + this.makeExtra(world, x + 2, y, z); + this.makeExtra(world, x - 2, y, z); + this.makeExtra(world, x, y, z + 2); + this.makeExtra(world, x, y, z - 2); + this.makeExtra(world, x + 2, y + 2, z); + this.makeExtra(world, x - 2, y + 2, z); + this.makeExtra(world, x, y + 2, z + 2); + this.makeExtra(world, x, y + 2, z - 2); + } } diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index e9a261459..fc9352d8e 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -14,7 +14,6 @@ import com.hbm.entity.mob.botprime.*; import com.hbm.entity.mob.siege.*; import com.hbm.entity.particle.*; import com.hbm.entity.projectile.*; -import com.hbm.entity.qic.*; import com.hbm.main.MainRegistry; import com.hbm.util.Tuple.Quartet; @@ -201,7 +200,6 @@ public class EntityMappings { addEntity(EntityArtilleryShell.class, "entity_artillery_shell", 1000); addEntity(EntityArtilleryRocket.class, "entity_himars", 1000); addEntity(EntitySiegeTunneler.class, "entity_meme_tunneler", 1000); - addEntity(EntitySPV.class, "entity_self_propelled_vehicle_mark_1", 1000); addEntity(EntityCog.class, "entity_stray_cog", 1000); addEntity(EntitySawblade.class, "entity_stray_saw", 1000); addEntity(EntityChemical.class, "entity_chemthrower_splash", 1000); diff --git a/src/main/java/com/hbm/entity/qic/EntitySPV.java b/src/main/java/com/hbm/entity/qic/EntitySPV.java deleted file mode 100644 index e82fa07d2..000000000 --- a/src/main/java/com/hbm/entity/qic/EntitySPV.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.hbm.entity.qic; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; - -public class EntitySPV extends Entity { - - public EntitySPV(World p_i1582_1_) { - super(p_i1582_1_); - this.setSize(0.5F, 0.5F); - } - - @Override - protected void entityInit() { } - - @Override - protected void readEntityFromNBT(NBTTagCompound p_70037_1_) { } - - @Override - protected void writeEntityToNBT(NBTTagCompound p_70014_1_) { } - - @Override - public void onUpdate() { - - if(this.riddenByEntity != null && this.riddenByEntity instanceof EntityLivingBase && ((EntityLivingBase)this.riddenByEntity).moveForward != 0) { - EntityLivingBase riding = (EntityLivingBase) this.riddenByEntity; - Vec3 vec = riding.getLookVec(); - this.motionX = vec.xCoord * riding.moveForward * 0.25D; - this.motionY = vec.yCoord * riding.moveForward * 0.25D; - this.motionZ = vec.zCoord * riding.moveForward * 0.25D; - - } else if(this.riddenByEntity == null) { - this.motionY -= 0.01D; - - if(this.onGround) { - this.motionX = 0; - this.motionY = 0; - this.motionZ = 0; - } - - } else { - this.motionX = 0; - this.motionY = 0; - this.motionZ = 0; - } - - this.moveEntity(this.motionX, this.motionY, this.motionZ); - //this.setPositionAndRotation(this.posX + motionX, this.posY + motionY, this.posZ + motionZ, this.rotationYaw, this.rotationPitch); - - super.onUpdate(); - } - - @Override - public boolean canBeCollidedWith() { - return true; - } - - @Override - public boolean interactFirst(EntityPlayer player) { - if(super.interactFirst(player)) { - return true; - } else if(!this.worldObj.isRemote && (this.riddenByEntity == null || this.riddenByEntity == player)) { - player.mountEntity(this); - return true; - } else { - return false; - } - } -} diff --git a/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java b/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java index d36b1ad1e..3569d3c52 100644 --- a/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java @@ -12,6 +12,7 @@ import com.google.gson.stream.JsonWriter; import com.hbm.blocks.ModBlocks; import com.hbm.config.GeneralConfig; import com.hbm.handler.imc.IMCCentrifuge; +import static com.hbm.inventory.OreDictManager.*; import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.RecipesCommon; import com.hbm.inventory.RecipesCommon.AStack; @@ -140,115 +141,115 @@ public class CentrifugeRecipes extends SerializableRecipe { new ItemStack(ModItems.dust, 1), new ItemStack(ModItems.dust, 1) }); - recipes.put(new OreDictStack("oreCoal"), new ItemStack[] { + recipes.put(new OreDictStack(COAL.ore()), new ItemStack[] { new ItemStack(ModItems.powder_coal, 2), new ItemStack(ModItems.powder_coal, 2), new ItemStack(ModItems.powder_coal, 2), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreLignite"), new ItemStack[] { + recipes.put(new OreDictStack(LIGNITE.ore()), new ItemStack[] { new ItemStack(ModItems.powder_lignite, 2), new ItemStack(ModItems.powder_lignite, 2), new ItemStack(ModItems.powder_lignite, 2), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreIron"), new ItemStack[] { + recipes.put(new OreDictStack(IRON.ore()), new ItemStack[] { new ItemStack(ModItems.powder_iron, 1), new ItemStack(ModItems.powder_iron, 1), new ItemStack(ModItems.powder_iron, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreGold"), new ItemStack[] { + recipes.put(new OreDictStack(GOLD.ore()), new ItemStack[] { lbs ? new ItemStack(ModItems.powder_gold, 2) : new ItemStack(ModItems.powder_gold, 1), new ItemStack(ModItems.powder_gold, 1), lbs ? new ItemStack(ModItems.nugget_bismuth, 1) : new ItemStack(ModItems.powder_gold, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreDiamond"), new ItemStack[] { + recipes.put(new OreDictStack(DIAMOND.ore()), new ItemStack[] { new ItemStack(ModItems.powder_diamond, 1), new ItemStack(ModItems.powder_diamond, 1), new ItemStack(ModItems.powder_diamond, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreEmerald"), new ItemStack[] { + recipes.put(new OreDictStack(EMERALD.ore()), new ItemStack[] { new ItemStack(ModItems.powder_emerald, 1), new ItemStack(ModItems.powder_emerald, 1), new ItemStack(ModItems.powder_emerald, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreTitanium"), new ItemStack[] { + recipes.put(new OreDictStack(TI.ore()), new ItemStack[] { lbs ? new ItemStack(ModItems.powder_titanium, 2) : new ItemStack(ModItems.powder_titanium, 1), lbs ? new ItemStack(ModItems.powder_titanium, 2) : new ItemStack(ModItems.powder_titanium, 1), new ItemStack(ModItems.powder_iron, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreQuartz"), new ItemStack[] { + recipes.put(new OreDictStack(NETHERQUARTZ.ore()), new ItemStack[] { new ItemStack(ModItems.powder_quartz, 1), new ItemStack(ModItems.powder_quartz, 1), new ItemStack(ModItems.powder_lithium_tiny, 1), new ItemStack(Blocks.netherrack, 1) }); - recipes.put(new OreDictStack("oreTungsten"), new ItemStack[] { + recipes.put(new OreDictStack(W.ore()), new ItemStack[] { lbs ? new ItemStack(ModItems.powder_tungsten, 2) : new ItemStack(ModItems.powder_tungsten, 1), new ItemStack(ModItems.powder_tungsten, 1), new ItemStack(ModItems.powder_iron, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreCopper"), new ItemStack[] { + recipes.put(new OreDictStack(CU.ore()), new ItemStack[] { lbs ? new ItemStack(ModItems.powder_copper, 2) : new ItemStack(ModItems.powder_copper, 1), new ItemStack(ModItems.powder_copper, 1), new ItemStack(ModItems.powder_gold, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreAluminum"), new ItemStack[] { + recipes.put(new OreDictStack(AL.ore()), new ItemStack[] { new ItemStack(ModItems.powder_aluminium, 1), new ItemStack(ModItems.powder_aluminium, 1), new ItemStack(ModItems.powder_iron, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreLead"), new ItemStack[] { + recipes.put(new OreDictStack(PB.ore()), new ItemStack[] { lbs ? new ItemStack(ModItems.powder_lead, 2) : new ItemStack(ModItems.powder_lead, 1), lbs ? new ItemStack(ModItems.nugget_bismuth, 1) : new ItemStack(ModItems.powder_lead, 1), new ItemStack(ModItems.powder_gold, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreSchrabidium"), new ItemStack[] { + recipes.put(new OreDictStack(SA326.ore()), new ItemStack[] { new ItemStack(ModItems.powder_schrabidium, 1), new ItemStack(ModItems.powder_schrabidium, 1), new ItemStack(ModItems.nugget_solinium, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new ComparableStack(ModBlocks.ore_rare), new ItemStack[] { + recipes.put(new OreDictStack("oreRareEarth"), new ItemStack[] { new ItemStack(ModItems.powder_desh_mix, 1), new ItemStack(ModItems.nugget_zirconium, 1), new ItemStack(ModItems.nugget_zirconium, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("orePlutonium"), new ItemStack[] { + recipes.put(new OreDictStack(PU.ore()), new ItemStack[] { new ItemStack(ModItems.powder_plutonium, 1), new ItemStack(ModItems.powder_plutonium, 1), new ItemStack(ModItems.nugget_polonium, 3), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreUranium"), new ItemStack[] { + recipes.put(new OreDictStack(U.ore()), new ItemStack[] { lbs ? new ItemStack(ModItems.powder_uranium, 2) : new ItemStack(ModItems.powder_uranium, 1), lbs ? new ItemStack(ModItems.nugget_technetium, 2) : new ItemStack(ModItems.powder_uranium, 1), lbs ? new ItemStack(ModItems.nugget_ra226, 2) : new ItemStack(ModItems.nugget_ra226, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreThorium"), new ItemStack[] { + recipes.put(new OreDictStack(TH232.ore()), new ItemStack[] { new ItemStack(ModItems.powder_thorium, 1), new ItemStack(ModItems.powder_thorium, 1), new ItemStack(ModItems.powder_uranium, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreBeryllium"), new ItemStack[] { + recipes.put(new OreDictStack(BE.ore()), new ItemStack[] { new ItemStack(ModItems.powder_beryllium, 1), new ItemStack(ModItems.powder_beryllium, 1), new ItemStack(ModItems.powder_emerald, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreRedstone"), new ItemStack[] { + recipes.put(new OreDictStack(REDSTONE.ore()), new ItemStack[] { new ItemStack(Items.redstone, 3), new ItemStack(Items.redstone, 3), lbs ? new ItemStack(ModItems.ingot_mercury, 3) : new ItemStack(ModItems.ingot_mercury, 1), @@ -260,7 +261,7 @@ public class CentrifugeRecipes extends SerializableRecipe { new ItemStack(ModItems.powder_niobium, 2), new ItemStack(Blocks.end_stone, 1) }); - recipes.put(new OreDictStack("oreLapis"), new ItemStack[] { + recipes.put(new OreDictStack(LAPIS.ore()), new ItemStack[] { new ItemStack(ModItems.powder_lapis, 3), new ItemStack(ModItems.powder_lapis, 3), new ItemStack(ModItems.powder_cobalt_tiny, 1), @@ -284,7 +285,7 @@ public class CentrifugeRecipes extends SerializableRecipe { new ItemStack(ModItems.ingot_phosphorus), new ItemStack(Blocks.netherrack) }); - recipes.put(new OreDictStack("oreCobalt"), new ItemStack[] { + recipes.put(new OreDictStack(CO.ore()), new ItemStack[] { new ItemStack(ModItems.powder_cobalt, 2), new ItemStack(ModItems.powder_iron, 1), new ItemStack(ModItems.powder_copper, 1), diff --git a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java index c4930766a..070e9f221 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java @@ -140,13 +140,19 @@ public class CrystallizerRecipes extends SerializableRecipe { registerRecipe(KEY_SAND, new CrystallizerRecipe(Blocks.clay, 20), new FluidStack(Fluids.COLLOID, 1_000)); + /// COMPAT CERTUS QUARTZ /// List quartz = OreDictionary.getOres("crystalCertusQuartz"); - if(quartz != null && !quartz.isEmpty()) { ItemStack qItem = quartz.get(0).copy(); qItem.stackSize = 12; registerRecipe("oreCertusQuartz", new CrystallizerRecipe(qItem, baseTime)); } + + /// COMPAT WHITE PHOSPHORUS DUST /// + List dustWhitePhosphorus = OreDictionary.getOres(P_WHITE.dust()); + if(dustWhitePhosphorus != null && !dustWhitePhosphorus.isEmpty()) { + registerRecipe(P_WHITE.dust(), new CrystallizerRecipe(new ItemStack(ModItems.ingot_phosphorus), utilityTime), new FluidStack(Fluids.AROMATICS, 50)); + } if(!IMCCrystallizer.buffer.isEmpty()) { recipes.putAll(IMCCrystallizer.buffer); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java b/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java index f5e8f68de..b66e14d9e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java @@ -3,6 +3,7 @@ package com.hbm.tileentity.machine; import java.util.ArrayList; import java.util.List; +import com.hbm.blocks.ModBlocks; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.container.ContainerWatz; import com.hbm.inventory.fluid.Fluids; @@ -64,6 +65,7 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand if(!worldObj.isRemote && !updateLock()) { + boolean turnedOn = worldObj.getBlock(xCoord, yCoord + 3, zCoord) == ModBlocks.watz_pump && worldObj.getIndirectPowerLevelTo(xCoord, yCoord + 5, zCoord, 0) > 0; List segments = new ArrayList(); segments.add(this); this.subscribeToTop(); @@ -97,11 +99,11 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand } /* update reaction, top to bottom */ - this.updateReaction(null, sharedTanks); + this.updateReaction(null, sharedTanks, turnedOn); for(int i = 1; i < segments.size(); i++) { TileEntityWatz segment = segments.get(i); TileEntityWatz above = segments.get(i - 1); - segment.updateReaction(above, sharedTanks); + segment.updateReaction(above, sharedTanks, turnedOn); } /* re-distribute fluid from shared tanks back into actual tanks, bottom to top */ @@ -153,57 +155,64 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand } /** enforces strict top to bottom update order (instead of semi-random based on placement) */ - public void updateReaction(TileEntityWatz above, FluidTank[] tanks) { + public void updateReaction(TileEntityWatz above, FluidTank[] tanks, boolean turnedOn) { - List pellets = new ArrayList(); - - for(int i = 0; i < 24; i++) { - ItemStack stack = slots[i]; - if(stack != null && stack.getItem() == ModItems.watz_pellet) { - pellets.add(stack); - } - } - - double baseFlux = 0D; - - /* init base flux */ - for(ItemStack stack : pellets) { - EnumWatzType type = EnumUtil.grabEnumSafely(EnumWatzType.class, stack.getItemDamage()); - baseFlux += type.passive; - } - - double inputFlux = baseFlux + fluxLastReaction; - double addedFlux = 0D; - double addedHeat = 0D; - - for(ItemStack stack : pellets) { - EnumWatzType type = EnumUtil.grabEnumSafely(EnumWatzType.class, stack.getItemDamage()); - Function burnFunc = type.burnFunc; - Function heatMod = type.heatMult; + if(turnedOn) { + List pellets = new ArrayList(); - if(burnFunc != null) { - double mod = heatMod != null ? heatMod.effonix(heat) : 1D; - double burn = burnFunc.effonix(inputFlux) * mod; - ItemWatzPellet.setYield(stack, ItemWatzPellet.getYield(stack) - burn); - addedFlux += burn; - addedHeat += type.heatEmission * burn; - tanks[2].setFill(tanks[2].getFill() + (int) Math.round(type.mudContent * burn)); + for(int i = 0; i < 24; i++) { + ItemStack stack = slots[i]; + if(stack != null && stack.getItem() == ModItems.watz_pellet) { + pellets.add(stack); + } } - } - - for(ItemStack stack : pellets) { - EnumWatzType type = EnumUtil.grabEnumSafely(EnumWatzType.class, stack.getItemDamage()); - Function absorbFunc = type.absorbFunc; - if(absorbFunc != null) { - addedHeat += absorbFunc.effonix(baseFlux + fluxLastReaction); + double baseFlux = 0D; + + /* init base flux */ + for(ItemStack stack : pellets) { + EnumWatzType type = EnumUtil.grabEnumSafely(EnumWatzType.class, stack.getItemDamage()); + baseFlux += type.passive; } + + double inputFlux = baseFlux + fluxLastReaction; + double addedFlux = 0D; + double addedHeat = 0D; + + for(ItemStack stack : pellets) { + EnumWatzType type = EnumUtil.grabEnumSafely(EnumWatzType.class, stack.getItemDamage()); + Function burnFunc = type.burnFunc; + Function heatMod = type.heatMult; + + if(burnFunc != null) { + double mod = heatMod != null ? heatMod.effonix(heat) : 1D; + double burn = burnFunc.effonix(inputFlux) * mod; + ItemWatzPellet.setYield(stack, ItemWatzPellet.getYield(stack) - burn); + addedFlux += burn; + addedHeat += type.heatEmission * burn; + tanks[2].setFill(tanks[2].getFill() + (int) Math.round(type.mudContent * burn)); + } + } + + for(ItemStack stack : pellets) { + EnumWatzType type = EnumUtil.grabEnumSafely(EnumWatzType.class, stack.getItemDamage()); + Function absorbFunc = type.absorbFunc; + + if(absorbFunc != null) { + addedHeat += absorbFunc.effonix(baseFlux + fluxLastReaction); + } + } + + this.heat += addedHeat; + this.fluxLastBase = baseFlux; + this.fluxLastReaction = addedFlux; + + } else { + this.fluxLastBase = 0; + this.fluxLastReaction = 0; + } - this.heat += addedHeat; - this.fluxLastBase = baseFlux; - this.fluxLastReaction = addedFlux; - if(above != null) { for(int i = 0; i < 24; i++) { ItemStack stackBottom = slots[i]; @@ -307,7 +316,9 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand @Override public boolean isItemValidForSlot(int i, ItemStack stack) { - return stack.getItem() == ModItems.watz_pellet; + if(stack.getItem() != ModItems.watz_pellet) return false; + if(!this.isLocked) return true; + return this.locks[i] != null && this.locks[i].getItem() == stack.getItem() && locks[i].getItemDamage() == stack.getItemDamage(); } @Override