From 13c3250005e5481c5dff9653d455ece0106a2ab1 Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 14 Mar 2022 22:45:04 +0100 Subject: [PATCH 01/10] the new AT mine model nobody asked for --- .../java/com/hbm/blocks/bomb/Landmine.java | 3 +- .../java/com/hbm/main/ResourceManager.java | 4 +- .../hbm/render/item/ItemRenderLibrary.java | 15 +- .../hbm/render/tileentity/RenderLandmine.java | 35 +- .../tileentity/bomb/TileEntityLandmine.java | 27 +- src/main/java/com/hbm/util/InventoryUtil.java | 72 ++ src/main/java/com/hbm/util/ItemStackUtil.java | 9 + .../assets/hbm/models/bombs/marelet.obj | 815 ++++++++++++++++++ .../textures/models/bombs/mine_marelet.png | Bin 0 -> 1039 bytes 9 files changed, 947 insertions(+), 33 deletions(-) create mode 100644 src/main/resources/assets/hbm/models/bombs/marelet.obj create mode 100644 src/main/resources/assets/hbm/textures/models/bombs/mine_marelet.png diff --git a/src/main/java/com/hbm/blocks/bomb/Landmine.java b/src/main/java/com/hbm/blocks/bomb/Landmine.java index 804be5825..e1050e32e 100644 --- a/src/main/java/com/hbm/blocks/bomb/Landmine.java +++ b/src/main/java/com/hbm/blocks/bomb/Landmine.java @@ -155,7 +155,8 @@ public class Landmine extends BlockContainer implements IBomb { world.newExplosion(null, x + 0.5, y + 0.5, z + 0.5, 2.5F, false, false); } if(this == ModBlocks.mine_he) { - ExplosionLarge.explode(world, x + 0.5, y + 0.5, z + 0.5, 10F, true, false, false); + ExplosionLarge.explode(world, x + 0.5, y + 0.5, z + 0.5, 3F, true, false, false); + world.newExplosion(null, x + 0.5, y + 2, z + 0.5, 15F, false, false); } if(this == ModBlocks.mine_shrap) { ExplosionLarge.explode(world, x + 0.5, y + 0.5, z + 0.5, 1, true, false, false); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index c1ffd90ec..150e213df 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -57,6 +57,7 @@ public class ResourceManager { //Landmines public static final IModelCustom mine_ap = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/mine_ap.obj")); public static final IModelCustom mine_he = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/mine_he.obj")); + public static final IModelCustom mine_marelet = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/marelet.obj")); public static final IModelCustom mine_fat = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/mine_fat.obj")); //Oil Pumps @@ -342,7 +343,8 @@ public class ResourceManager { //Landmines public static final ResourceLocation mine_ap_tex = new ResourceLocation(RefStrings.MODID, "textures/models/mine_ap.png"); - public static final ResourceLocation mine_he_tex = new ResourceLocation(RefStrings.MODID, "textures/models/mine_he.png"); + //public static final ResourceLocation mine_he_tex = new ResourceLocation(RefStrings.MODID, "textures/models/mine_he.png"); + public static final ResourceLocation mine_marelet_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/mine_marelet.png"); public static final ResourceLocation mine_shrap_tex = new ResourceLocation(RefStrings.MODID, "textures/models/mine_shrap.png"); public static final ResourceLocation mine_fat_tex = new ResourceLocation(RefStrings.MODID, "textures/models/mine_fat.png"); diff --git a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java index c7bde4b4f..dab0a2c30 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java +++ b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java @@ -617,11 +617,20 @@ public class ItemRenderLibrary { public void renderInventory() { GL11.glScaled(6, 6, 6); } + public void renderNonInv() { + GL11.glTranslated(0.25, 0.625, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glRotated(-15, 0, 0, 1); + } public void renderCommon() { GL11.glScaled(4, 4, 4); - bindTexture(ResourceManager.mine_he_tex); - ResourceManager.mine_he.renderAll(); - }}); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.mine_marelet_tex); ResourceManager.mine_marelet.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + } + }); renderers.put(Item.getItemFromBlock(ModBlocks.mine_shrap), new ItemRenderBase() { public void renderInventory() { diff --git a/src/main/java/com/hbm/render/tileentity/RenderLandmine.java b/src/main/java/com/hbm/render/tileentity/RenderLandmine.java index bc41fc0f7..33314bb68 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderLandmine.java +++ b/src/main/java/com/hbm/render/tileentity/RenderLandmine.java @@ -11,39 +11,42 @@ import net.minecraft.tileentity.TileEntity; public class RenderLandmine extends TileEntitySpecialRenderer { - @Override - public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) - { - GL11.glPushMatrix(); - GL11.glTranslated(x + 0.5D, y, z + 0.5D); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glRotatef(180, 0F, 1F, 0F); Block block = tileEntity.getWorldObj().getBlock(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord); if(block == ModBlocks.mine_ap) { - GL11.glTranslated(0, -0.075, 0); + GL11.glTranslated(0, -0.075, 0); GL11.glScaled(1.5D, 1.5D, 1.5D); bindTexture(ResourceManager.mine_ap_tex); - ResourceManager.mine_ap.renderAll(); + ResourceManager.mine_ap.renderAll(); } if(block == ModBlocks.mine_he) { - bindTexture(ResourceManager.mine_he_tex); - ResourceManager.mine_he.renderAll(); + GL11.glRotatef(-90, 0F, 1F, 0F); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.mine_marelet_tex); + ResourceManager.mine_marelet.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); } if(block == ModBlocks.mine_shrap) { bindTexture(ResourceManager.mine_shrap_tex); - ResourceManager.mine_he.renderAll(); + ResourceManager.mine_he.renderAll(); } if(block == ModBlocks.mine_fat) { GL11.glScaled(0.25D, 0.25D, 0.25D); bindTexture(ResourceManager.mine_fat_tex); - ResourceManager.mine_fat.renderAll(); + ResourceManager.mine_fat.renderAll(); } - GL11.glPopMatrix(); - } + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glPopMatrix(); + } } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLandmine.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLandmine.java index 6ea852f6b..b6b909f62 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLandmine.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLandmine.java @@ -37,29 +37,32 @@ public class TileEntityLandmine extends TileEntity { if (block == ModBlocks.mine_fat) { range = 2.5D; } + + if(!isPrimed) + range *= 2; List list = worldObj.getEntitiesWithinAABBExcludingEntity(null, - AxisAlignedBB.getBoundingBox(xCoord - range, yCoord - height, zCoord - range, xCoord + range, yCoord + height, zCoord + range)); + AxisAlignedBB.getBoundingBox(xCoord - range, yCoord - height, zCoord - range, xCoord + range + 1, yCoord + height, zCoord + range + 1)); boolean flag = false; - for (Object o : list) { - - if (o instanceof EntityLivingBase) { - + for(Object o : list) { + + if(o instanceof EntityLivingBase) { + flag = true; - + if(isPrimed) { - - ((Landmine)block).explode(worldObj, xCoord, yCoord, zCoord); + //why did i do it like that? + ((Landmine) block).explode(worldObj, xCoord, yCoord, zCoord); } - + return; } } - + if(!isPrimed && !flag) { - - this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "hbm:item.techBoop", 2.0F, 1.0F); + + this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "hbm:weapon.fstbmbStart", 3.0F, 1.0F); isPrimed = true; } } diff --git a/src/main/java/com/hbm/util/InventoryUtil.java b/src/main/java/com/hbm/util/InventoryUtil.java index 19477712e..54420bfdf 100644 --- a/src/main/java/com/hbm/util/InventoryUtil.java +++ b/src/main/java/com/hbm/util/InventoryUtil.java @@ -7,6 +7,7 @@ import com.hbm.inventory.recipes.anvil.AnvilRecipes.AnvilOutput; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.OreDictionary; @@ -447,4 +448,75 @@ public class InventoryUtil { return true; } + + public static boolean mergeItemStack(List slots, ItemStack stack, int start, int end, boolean reverse) { + + boolean success = false; + int index = start; + + if(reverse) { + index = end - 1; + } + + Slot slot; + ItemStack currentStack; + + if(stack.isStackable()) { + while(stack.stackSize > 0 && (!reverse && index < end || reverse && index >= start)) { + slot = slots.get(index); + currentStack = slot.getStack(); + + if(currentStack != null && currentStack.getItem() == stack.getItem() && (!stack.getHasSubtypes() || stack.getItemDamage() == currentStack.getItemDamage()) && ItemStack.areItemStackTagsEqual(stack, currentStack)) { + int l = currentStack.stackSize + stack.stackSize; + + if(l <= stack.getMaxStackSize()) { + stack.stackSize = 0; + currentStack.stackSize = l; + slot.onSlotChanged(); + success = true; + } else if(currentStack.stackSize < stack.getMaxStackSize()) { + stack.stackSize -= stack.getMaxStackSize() - currentStack.stackSize; + currentStack.stackSize = stack.getMaxStackSize(); + slot.onSlotChanged(); + success = true; + } + } + + if(reverse) { + --index; + } else { + ++index; + } + } + } + + if(stack.stackSize > 0) { + if(reverse) { + index = end - 1; + } else { + index = start; + } + + while(!reverse && index < end || reverse && index >= start) { + slot = slots.get(index); + currentStack = slot.getStack(); + + if(currentStack == null) { + slot.putStack(stack.copy()); + slot.onSlotChanged(); + stack.stackSize = 0; + success = true; + break; + } + + if(reverse) { + --index; + } else { + ++index; + } + } + } + + return success; + } } diff --git a/src/main/java/com/hbm/util/ItemStackUtil.java b/src/main/java/com/hbm/util/ItemStackUtil.java index f2eaa87b5..01cad08e8 100644 --- a/src/main/java/com/hbm/util/ItemStackUtil.java +++ b/src/main/java/com/hbm/util/ItemStackUtil.java @@ -15,6 +15,15 @@ public class ItemStackUtil { return stack.copy(); } + public static ItemStack carefulCopyWithSize(ItemStack stack, int size) { + if(stack == null) + return null; + + ItemStack copy = stack.copy(); + copy.stackSize = size; + return copy; + } + /** * Runs carefulCopy over the entire ItemStack array. * @param array diff --git a/src/main/resources/assets/hbm/models/bombs/marelet.obj b/src/main/resources/assets/hbm/models/bombs/marelet.obj new file mode 100644 index 000000000..b23cecb2f --- /dev/null +++ b/src/main/resources/assets/hbm/models/bombs/marelet.obj @@ -0,0 +1,815 @@ +# Blender v2.79 (sub 0) OBJ File: 'marelet.blend' +# www.blender.org +o Circle +v -0.000000 0.000000 -0.250000 +v -0.095671 0.000000 -0.230970 +v -0.176777 0.000000 -0.176777 +v -0.230970 0.000000 -0.095671 +v -0.250000 0.000000 0.000000 +v -0.230970 0.000000 0.095671 +v -0.176777 0.000000 0.176777 +v -0.095671 0.000000 0.230970 +v -0.000000 0.000000 0.250000 +v 0.095671 0.000000 0.230970 +v 0.176777 0.000000 0.176777 +v 0.230970 0.000000 0.095671 +v 0.250000 0.000000 -0.000000 +v 0.230970 0.000000 -0.095671 +v 0.176777 0.000000 -0.176777 +v 0.095671 0.000000 -0.230970 +v -0.000000 0.093750 -0.250000 +v -0.095671 0.093750 -0.230970 +v -0.176777 0.093750 -0.176777 +v -0.230970 0.093750 -0.095671 +v -0.250000 0.093750 0.000000 +v -0.230970 0.093750 0.095671 +v -0.176777 0.093750 0.176777 +v -0.095671 0.093750 0.230970 +v -0.000000 0.093750 0.250000 +v 0.095671 0.093750 0.230970 +v 0.176777 0.093750 0.176777 +v 0.230970 0.093750 0.095671 +v 0.250000 0.093750 -0.000000 +v 0.230970 0.093750 -0.095671 +v 0.176777 0.093750 -0.176777 +v 0.095671 0.093750 -0.230970 +v -0.000000 0.093750 -0.156250 +v -0.059794 0.093750 -0.144356 +v -0.110485 0.093750 -0.110485 +v -0.144356 0.093750 -0.059794 +v -0.156250 0.093750 -0.000000 +v -0.144356 0.093750 0.059794 +v -0.110485 0.093750 0.110485 +v -0.059794 0.093750 0.144356 +v -0.000000 0.093750 0.156250 +v 0.059794 0.093750 0.144356 +v 0.110485 0.093750 0.110485 +v 0.144356 0.093750 0.059794 +v 0.156250 0.093750 -0.000000 +v 0.144356 0.093750 -0.059794 +v 0.110485 0.093750 -0.110485 +v 0.059794 0.093750 -0.144356 +v -0.059794 0.125000 -0.144356 +v -0.000000 0.125000 -0.156250 +v -0.110485 0.125000 -0.110485 +v -0.144356 0.125000 -0.059794 +v -0.156250 0.125000 -0.000000 +v -0.144356 0.125000 0.059794 +v -0.110485 0.125000 0.110485 +v -0.059794 0.125000 0.144356 +v -0.000000 0.125000 0.156250 +v 0.059794 0.125000 0.144356 +v 0.110485 0.125000 0.110485 +v 0.144356 0.125000 0.059794 +v 0.156250 0.125000 -0.000000 +v 0.144356 0.125000 -0.059794 +v 0.110485 0.125000 -0.110485 +v 0.059794 0.125000 -0.144356 +v -0.018686 0.125000 -0.045111 +v -0.000000 0.125000 -0.048828 +v -0.034527 0.125000 -0.034527 +v -0.045111 0.125000 -0.018686 +v -0.048828 0.125000 -0.000000 +v -0.045111 0.125000 0.018686 +v -0.034527 0.125000 0.034527 +v -0.018686 0.125000 0.045111 +v -0.000000 0.125000 0.048828 +v 0.018686 0.125000 0.045111 +v 0.034527 0.125000 0.034527 +v 0.045111 0.125000 0.018686 +v 0.048828 0.125000 -0.000000 +v 0.045111 0.125000 -0.018686 +v 0.034527 0.125000 -0.034527 +v 0.018686 0.125000 -0.045111 +v -0.018686 0.156250 -0.045111 +v -0.000000 0.156250 -0.048828 +v -0.034527 0.156250 -0.034527 +v -0.045111 0.156250 -0.018686 +v -0.048828 0.156250 -0.000000 +v -0.045111 0.156250 0.018686 +v -0.034527 0.156250 0.034527 +v -0.018686 0.156250 0.045111 +v -0.000000 0.156250 0.048828 +v 0.018686 0.156250 0.045111 +v 0.034527 0.156250 0.034527 +v 0.045111 0.156250 0.018686 +v 0.048828 0.156250 -0.000000 +v 0.045111 0.156250 -0.018686 +v 0.034527 0.156250 -0.034527 +v 0.018686 0.156250 -0.045111 +v -0.062500 0.071843 -0.299278 +v -0.062500 0.084642 -0.290316 +v -0.078125 0.080805 -0.312078 +v -0.078125 0.093604 -0.303116 +v 0.062500 0.071843 -0.299278 +v 0.062500 0.084642 -0.290316 +v 0.078125 0.080805 -0.312078 +v 0.078125 0.093604 -0.303116 +v -0.078125 0.025957 -0.233746 +v -0.062500 0.025957 -0.233746 +v -0.062500 0.038756 -0.224784 +v -0.078125 0.038756 -0.224784 +v 0.078125 0.038756 -0.224784 +v 0.078125 0.025957 -0.233746 +v 0.062500 0.025957 -0.233746 +v 0.062500 0.038756 -0.224784 +v -0.007813 0.125000 -0.061035 +v -0.007813 0.125000 0.061035 +v -0.007813 0.140625 -0.061035 +v -0.007813 0.140625 0.061035 +v 0.007812 0.125000 -0.061035 +v 0.007812 0.125000 0.061035 +v 0.007812 0.140625 -0.061035 +v 0.007812 0.140625 0.061035 +v -0.023438 0.125000 -0.092285 +v -0.023438 0.140625 -0.092285 +v 0.023437 0.125000 -0.092285 +v 0.023437 0.140625 -0.092285 +v -0.023438 0.125000 0.092285 +v -0.023438 0.140625 0.092285 +v 0.023437 0.125000 0.092285 +v 0.023437 0.140625 0.092285 +v 0.023437 0.140625 0.076660 +v 0.023437 0.125000 0.076660 +v -0.023438 0.140625 0.076660 +v -0.023438 0.125000 0.076660 +v -0.007813 0.125000 0.107910 +v -0.007813 0.140625 0.107910 +v 0.007812 0.125000 0.107910 +v 0.007812 0.140625 0.107910 +v -0.000000 0.000000 -0.250000 +v -0.095671 0.000000 -0.230970 +v -0.176777 0.000000 -0.176777 +v -0.230970 0.000000 -0.095671 +v -0.250000 0.000000 0.000000 +v -0.230970 0.000000 0.095671 +v -0.176777 0.000000 0.176777 +v -0.095671 0.000000 0.230970 +v -0.000000 0.000000 0.250000 +v 0.095671 0.000000 0.230970 +v 0.176777 0.000000 0.176777 +v 0.230970 0.000000 0.095671 +v 0.250000 0.000000 -0.000000 +v 0.230970 0.000000 -0.095671 +v 0.176777 0.000000 -0.176777 +v 0.095671 0.000000 -0.230970 +v -0.059794 0.125000 -0.144356 +v -0.000000 0.125000 -0.156250 +v -0.110485 0.125000 -0.110485 +v -0.144356 0.125000 -0.059794 +v -0.156250 0.125000 -0.000000 +v -0.144356 0.125000 0.059794 +v -0.110485 0.125000 0.110485 +v -0.059794 0.125000 0.144356 +v -0.000000 0.125000 0.156250 +v 0.059794 0.125000 0.144356 +v 0.110485 0.125000 0.110485 +v 0.144356 0.125000 0.059794 +v 0.156250 0.125000 -0.000000 +v 0.144356 0.125000 -0.059794 +v 0.110485 0.125000 -0.110485 +v 0.059794 0.125000 -0.144356 +v -0.018686 0.125000 -0.045111 +v -0.000000 0.125000 -0.048828 +v -0.034527 0.125000 -0.034527 +v -0.045111 0.125000 -0.018686 +v -0.048828 0.125000 -0.000000 +v -0.045111 0.125000 0.018686 +v -0.034527 0.125000 0.034527 +v -0.018686 0.125000 0.045111 +v -0.000000 0.125000 0.048828 +v 0.018686 0.125000 0.045111 +v 0.034527 0.125000 0.034527 +v 0.045111 0.125000 0.018686 +v 0.048828 0.125000 -0.000000 +v 0.045111 0.125000 -0.018686 +v 0.034527 0.125000 -0.034527 +v 0.018686 0.125000 -0.045111 +v -0.018686 0.156250 -0.045111 +v -0.000000 0.156250 -0.048828 +v -0.034527 0.156250 -0.034527 +v -0.045111 0.156250 -0.018686 +v -0.048828 0.156250 -0.000000 +v -0.045111 0.156250 0.018686 +v -0.034527 0.156250 0.034527 +v -0.018686 0.156250 0.045111 +v -0.000000 0.156250 0.048828 +v 0.018686 0.156250 0.045111 +v 0.034527 0.156250 0.034527 +v 0.045111 0.156250 0.018686 +v 0.048828 0.156250 -0.000000 +v 0.045111 0.156250 -0.018686 +v 0.034527 0.156250 -0.034527 +v 0.018686 0.156250 -0.045111 +v -0.000000 0.093750 -0.250000 +v -0.095671 0.093750 -0.230970 +v -0.176777 0.093750 -0.176777 +v -0.230970 0.093750 -0.095671 +v -0.250000 0.093750 0.000000 +v -0.230970 0.093750 0.095671 +v -0.176777 0.093750 0.176777 +v -0.095671 0.093750 0.230970 +v -0.000000 0.093750 0.250000 +v 0.095671 0.093750 0.230970 +v 0.176777 0.093750 0.176777 +v 0.230970 0.093750 0.095671 +v 0.250000 0.093750 -0.000000 +v 0.230970 0.093750 -0.095671 +v 0.176777 0.093750 -0.176777 +v 0.095671 0.093750 -0.230970 +v -0.000000 0.093750 -0.156250 +v -0.059794 0.093750 -0.144356 +v -0.110485 0.093750 -0.110485 +v -0.144356 0.093750 -0.059794 +v -0.156250 0.093750 -0.000000 +v -0.144356 0.093750 0.059794 +v -0.110485 0.093750 0.110485 +v -0.059794 0.093750 0.144356 +v -0.000000 0.093750 0.156250 +v 0.059794 0.093750 0.144356 +v 0.110485 0.093750 0.110485 +v 0.144356 0.093750 0.059794 +v 0.156250 0.093750 -0.000000 +v 0.144356 0.093750 -0.059794 +v 0.110485 0.093750 -0.110485 +v 0.059794 0.093750 -0.144356 +v 0.217422 0.093750 0.115947 +v 0.245242 0.093750 0.023918 +v 0.235727 0.093750 -0.071753 +v 0.135888 0.093750 0.072467 +v 0.153277 0.093750 0.014949 +v 0.147330 0.093750 -0.044846 +v 0.135888 0.093750 -0.072467 +v 0.153277 0.093750 -0.014949 +v 0.147330 0.093750 0.044846 +v 0.118953 0.093750 0.097813 +v 0.217422 0.093750 -0.115947 +v 0.245242 0.093750 -0.023918 +v 0.235727 0.093750 0.071753 +v 0.190325 0.093750 0.156500 +v 0.127421 0.093750 -0.085140 +v 0.150303 0.093750 -0.029897 +v 0.150303 0.093750 0.029897 +v 0.127421 0.093750 0.085140 +v 0.203873 0.093750 -0.136224 +v 0.240485 0.093750 -0.047835 +v 0.240485 0.093750 0.047835 +v 0.203873 0.093750 0.136224 +vt 0.021128 0.848623 +vt 0.002102 0.881181 +vt 0.002102 0.848622 +vt 0.024844 0.881181 +vt 0.062003 0.913740 +vt 0.024844 0.913740 +vt 0.084745 0.881181 +vt 0.084745 0.913740 +vt 0.058287 0.848623 +vt 0.028560 0.816064 +vt 0.058287 0.816065 +vt 0.028560 0.946298 +vt 0.062003 0.881181 +vt 0.021128 0.946298 +vt 0.002102 0.913739 +vt 0.065719 0.816064 +vt 0.084745 0.848623 +vt 0.065719 0.848623 +vt 0.065719 0.946299 +vt 0.084745 0.946299 +vt 0.021128 0.816064 +vt 0.002102 0.816064 +vt 0.064819 0.101506 +vt 0.075401 0.567673 +vt 0.022198 0.660399 +vt 0.119565 0.500000 +vt 0.116848 1.000000 +vt 0.116848 0.500000 +vt 0.141304 0.500000 +vt 0.138587 1.000000 +vt 0.138587 0.500000 +vt 0.122283 0.500000 +vt 0.119565 1.000000 +vt 0.103261 0.500000 +vt 0.100543 1.000000 +vt 0.100543 0.500000 +vt 0.144022 1.000000 +vt 0.141304 1.000000 +vt 0.125000 0.500000 +vt 0.122283 1.000000 +vt 0.105978 0.500000 +vt 0.103261 1.000000 +vt 0.127717 0.500000 +vt 0.125000 1.000000 +vt 0.108696 0.500000 +vt 0.105978 1.000000 +vt 0.130435 1.000000 +vt 0.127717 1.000000 +vt 0.111413 0.500000 +vt 0.108696 1.000000 +vt 0.130435 0.500000 +vt 0.133152 1.000000 +vt 0.114130 1.000000 +vt 0.111413 1.000000 +vt 0.135870 0.500000 +vt 0.133152 0.500000 +vt 0.114130 0.500000 +vt 0.135870 1.000000 +vt 0.029848 0.595825 +vt 0.022768 0.283972 +vt 0.058360 0.221940 +vt 0.028560 0.848623 +vt 0.058287 0.946299 +vt 0.002102 0.946298 +vt 0.084745 0.816064 +vt 0.011615 0.194232 +vt 0.022198 0.101506 +vt 0.036025 0.051323 +vt 0.050991 0.051323 +vt 0.075401 0.194232 +vt 0.081129 0.315385 +vt 0.081129 0.446520 +vt 0.064819 0.660399 +vt 0.050991 0.710582 +vt 0.036025 0.710582 +vt 0.011615 0.567672 +vt 0.005887 0.446520 +vt 0.005887 0.315385 +vt 0.144022 0.500000 +vt 0.022768 0.533794 +vt 0.018937 0.452746 +vt 0.018937 0.365020 +vt 0.029848 0.221940 +vt 0.039098 0.188369 +vt 0.049110 0.188369 +vt 0.065440 0.283971 +vt 0.069271 0.365020 +vt 0.069271 0.452746 +vt 0.065440 0.533794 +vt 0.058360 0.595825 +vt 0.049110 0.629397 +vt 0.039098 0.629397 +vt 0.828804 0.500000 +vt 0.771739 -0.000000 +vt 0.828804 -0.000000 +vt 0.429348 0.500000 +vt 0.372283 -0.000000 +vt 0.429348 -0.000000 +vt 0.885870 0.500000 +vt 0.885870 -0.000000 +vt 0.486413 0.500000 +vt 0.486413 -0.000000 +vt 0.942935 0.500000 +vt 0.942935 -0.000000 +vt 0.543478 0.500000 +vt 0.543478 -0.000000 +vt 0.144022 0.500000 +vt 0.086957 -0.000000 +vt 0.144022 -0.000000 +vt 1.000000 0.500000 +vt 1.000000 -0.000000 +vt 0.600543 0.500000 +vt 0.600543 -0.000000 +vt 0.201087 0.500000 +vt 0.201087 -0.000000 +vt 0.657609 0.500000 +vt 0.657609 -0.000000 +vt 0.258152 0.500000 +vt 0.258152 -0.000000 +vt 0.714674 0.500000 +vt 0.714674 -0.000000 +vt 0.315217 0.500000 +vt 0.315217 -0.000000 +vt 0.771739 0.500000 +vt 0.372283 0.500000 +vt 0.105978 0.880952 +vt 0.103261 1.000000 +vt 0.103261 0.880952 +vt 0.127717 0.880952 +vt 0.125000 1.000000 +vt 0.125000 0.880952 +vt 0.108696 0.880952 +vt 0.105978 1.000000 +vt 0.130435 0.880952 +vt 0.127717 1.000000 +vt 0.111413 0.880952 +vt 0.108696 1.000000 +vt 0.133152 0.880952 +vt 0.130435 1.000000 +vt 0.114130 0.880952 +vt 0.111413 1.000000 +vt 0.135870 0.880952 +vt 0.133152 1.000000 +vt 0.116848 0.880952 +vt 0.114130 1.000000 +vt 0.138587 0.880952 +vt 0.135870 1.000000 +vt 0.119565 0.880952 +vt 0.116848 1.000000 +vt 0.141304 0.880952 +vt 0.138587 1.000000 +vt 0.122283 0.880952 +vt 0.119565 1.000000 +vt 0.100543 1.000000 +vt 0.100543 0.880952 +vt 0.144022 0.880952 +vt 0.141304 1.000000 +vt 0.122283 1.000000 +vt 0.133152 0.904762 +vt 0.130435 1.000000 +vt 0.130435 0.904762 +vt 0.114130 0.904762 +vt 0.111413 1.000000 +vt 0.111413 0.904762 +vt 0.135870 0.904762 +vt 0.133152 1.000000 +vt 0.116848 1.000000 +vt 0.114130 1.000000 +vt 0.138587 0.904762 +vt 0.135870 1.000000 +vt 0.116848 0.904762 +vt 0.119565 1.000000 +vt 0.141304 0.904762 +vt 0.138587 1.000000 +vt 0.122283 0.904762 +vt 0.119565 0.904762 +vt 0.100543 0.904762 +vt 0.103261 1.000000 +vt 0.100543 1.000000 +vt 0.144022 0.904762 +vt 0.141304 1.000000 +vt 0.125000 0.904762 +vt 0.122283 1.000000 +vt 0.105978 0.904762 +vt 0.103261 0.904762 +vt 0.127717 0.904762 +vt 0.125000 1.000000 +vt 0.108696 0.904762 +vt 0.105978 1.000000 +vt 0.127717 1.000000 +vt 0.108696 1.000000 +vt 0.009109 0.867647 +vt 0.030876 0.892060 +vt 0.009109 0.892060 +vt 0.054996 0.892060 +vt 0.076764 0.867648 +vt 0.076764 0.892060 +vt 0.002879 0.892060 +vt 0.082994 0.892060 +vt 0.037603 0.867648 +vt 0.034817 0.892060 +vt 0.034817 0.867648 +vt 0.051056 0.892060 +vt 0.048270 0.867648 +vt 0.051056 0.867648 +vt 0.054996 0.867648 +vt 0.030876 0.867648 +vt 0.041543 0.867648 +vt 0.037603 0.892060 +vt 0.048270 0.892060 +vt 0.044329 0.867648 +vt 0.044329 0.892060 +vt 0.674592 0.500000 +vt 0.660326 1.000000 +vt 0.660326 0.500000 +vt 0.845788 0.500000 +vt 0.831522 1.000000 +vt 0.831522 0.500000 +vt 0.788723 0.500000 +vt 0.774457 1.000000 +vt 0.774457 0.500000 +vt 0.731658 0.500000 +vt 0.717391 1.000000 +vt 0.717391 0.500000 +vt 0.688859 0.500000 +vt 0.703125 1.000000 +vt 0.688859 1.000000 +vt 0.802989 0.500000 +vt 0.817255 1.000000 +vt 0.802989 1.000000 +vt 0.745924 0.500000 +vt 0.760190 1.000000 +vt 0.745924 1.000000 +vt 0.674592 1.000000 +vt 0.860054 0.500000 +vt 0.845788 1.000000 +vt 0.788723 1.000000 +vt 0.731658 1.000000 +vt 0.703125 0.500000 +vt 0.603261 1.000000 +vt 0.603261 0.500000 +vt 0.543478 1.000000 +vt 0.543478 0.500000 +vt 0.486413 0.500000 +vt 0.486413 1.000000 +vt 0.429348 1.000000 +vt 0.429348 0.500000 +vt 0.372283 1.000000 +vt 0.372283 0.500000 +vt 0.312500 0.500000 +vt 0.312500 1.000000 +vt 0.255435 1.000000 +vt 0.255435 0.500000 +vt 0.201087 1.000000 +vt 0.201087 0.500000 +vt 0.144022 1.000000 +vt 0.144022 0.500000 +vt 0.086957 0.500000 +vt 0.086957 1.000000 +vt 1.000000 0.500000 +vt 0.945652 1.000000 +vt 0.945652 0.500000 +vt 0.888587 0.500000 +vt 0.888587 1.000000 +vt 0.860054 1.000000 +vt 0.817255 0.500000 +vt 0.760190 0.500000 +vt 0.086957 0.500000 +vt 0.144022 1.000000 +vt 0.144022 1.000000 +vt 0.002879 0.867647 +vt 0.082994 0.867648 +vt 0.041543 0.892060 +vt 1.000000 1.000000 +vn 0.0000 0.8192 0.5736 +vn 0.0000 0.5736 -0.8192 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 -0.5736 0.8192 +vn 0.0000 -0.8192 -0.5736 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.9239 0.0000 -0.3827 +vn -0.7071 0.0000 0.7071 +vn -0.9239 0.0000 0.3827 +vn 0.7071 0.0000 -0.7071 +vn -0.3827 0.0000 0.9239 +vn 0.3827 0.0000 -0.9239 +vn 0.0000 0.0000 1.0000 +vn -0.3827 0.0000 -0.9239 +vn 0.0000 0.0000 -1.0000 +vn 0.3827 0.0000 0.9239 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.9239 0.0000 -0.3827 +vn 0.9239 0.0000 0.3827 +vn 0.9732 0.0000 0.2297 +vn -0.9732 0.0000 0.2297 +vn 0.8944 0.0000 0.4472 +vn -0.8944 0.0000 0.4472 +s off +f 98/1/1 108/2/1 107/3/1 +f 100/4/2 103/5/2 99/6/2 +f 103/5/3 109/7/3 110/8/3 +f 102/9/4 97/10/4 101/11/4 +f 103/5/5 97/12/5 99/6/5 +f 100/4/1 102/9/1 104/13/1 +f 97/14/5 105/15/5 99/6/5 +f 101/16/6 112/17/6 102/18/6 +f 101/19/5 110/8/5 111/20/5 +f 99/6/6 108/2/6 100/4/6 +f 97/21/3 107/3/3 106/22/3 +f 102/18/1 109/7/1 104/13/1 +f 151/23/7 147/24/7 143/25/7 +f 160/26/8 175/27/8 159/28/8 +f 168/29/8 183/30/8 167/31/8 +f 161/32/8 176/33/8 160/26/8 +f 153/34/8 170/35/8 154/36/8 +f 168/29/8 170/37/8 184/38/8 +f 162/39/8 177/40/8 161/32/8 +f 155/41/8 169/42/8 153/34/8 +f 163/43/8 178/44/8 162/39/8 +f 156/45/8 171/46/8 155/41/8 +f 163/43/8 180/47/8 179/48/8 +f 157/49/8 172/50/8 156/45/8 +f 164/51/8 181/52/8 180/47/8 +f 157/49/8 174/53/8 173/54/8 +f 166/55/8 181/52/8 165/56/8 +f 159/28/8 174/53/8 158/57/8 +f 167/31/8 182/58/8 166/55/8 +f 186/59/8 189/60/8 193/61/8 +f 98/1/1 100/4/1 108/2/1 +f 100/4/2 104/13/2 103/5/2 +f 103/5/3 104/13/3 109/7/3 +f 102/9/4 98/62/4 97/10/4 +f 103/5/5 101/63/5 97/12/5 +f 100/4/1 98/62/1 102/9/1 +f 97/14/5 106/64/5 105/15/5 +f 101/16/6 111/65/6 112/17/6 +f 101/19/5 103/5/5 110/8/5 +f 99/6/6 105/15/6 108/2/6 +f 97/21/3 98/1/3 107/3/3 +f 102/18/1 112/17/1 109/7/1 +f 139/66/7 138/67/7 137/68/7 +f 137/68/7 152/69/7 151/23/7 +f 151/23/7 150/70/7 149/71/7 +f 149/71/7 148/72/7 151/23/7 +f 148/72/7 147/24/7 151/23/7 +f 147/24/7 146/73/7 145/74/7 +f 145/74/7 144/75/7 147/24/7 +f 144/75/7 143/25/7 147/24/7 +f 143/25/7 142/76/7 141/77/7 +f 141/77/7 140/78/7 139/66/7 +f 139/66/7 137/68/7 151/23/7 +f 143/25/7 141/77/7 139/66/7 +f 139/66/7 151/23/7 143/25/7 +f 160/26/8 176/33/8 175/27/8 +f 168/29/8 184/38/8 183/30/8 +f 161/32/8 177/40/8 176/33/8 +f 153/34/8 169/42/8 170/35/8 +f 168/29/8 154/79/8 170/37/8 +f 162/39/8 178/44/8 177/40/8 +f 155/41/8 171/46/8 169/42/8 +f 163/43/8 179/48/8 178/44/8 +f 156/45/8 172/50/8 171/46/8 +f 163/43/8 164/51/8 180/47/8 +f 157/49/8 173/54/8 172/50/8 +f 164/51/8 165/56/8 181/52/8 +f 157/49/8 158/57/8 174/53/8 +f 166/55/8 182/58/8 181/52/8 +f 159/28/8 175/27/8 174/53/8 +f 167/31/8 183/30/8 182/58/8 +f 186/59/8 185/80/8 189/60/8 +f 185/80/8 187/81/8 189/60/8 +f 187/81/8 188/82/8 189/60/8 +f 189/60/8 190/83/8 191/84/8 +f 191/84/8 192/85/8 189/60/8 +f 192/85/8 193/61/8 189/60/8 +f 193/61/8 194/86/8 195/87/8 +f 195/87/8 196/88/8 197/89/8 +f 197/89/8 198/90/8 199/91/8 +f 199/91/8 200/92/8 186/59/8 +f 193/61/8 195/87/8 186/59/8 +f 195/87/8 197/89/8 186/59/8 +f 197/89/8 199/91/8 186/59/8 +s 1 +f 30/93/9 13/94/3 14/95/9 +f 23/96/10 6/97/11 7/98/10 +f 31/99/12 14/95/9 15/100/12 +f 24/101/13 7/98/10 8/102/13 +f 32/103/14 15/100/12 16/104/14 +f 25/105/15 8/102/13 9/106/15 +f 18/107/16 1/108/17 2/109/16 +f 17/110/17 16/104/14 1/111/17 +f 26/112/18 9/106/15 10/113/18 +f 19/114/19 2/109/16 3/115/19 +f 27/116/20 10/113/18 11/117/20 +f 20/118/21 3/115/19 4/119/21 +f 28/120/22 11/117/20 12/121/22 +f 21/122/6 4/119/21 5/123/6 +f 29/124/3 12/121/22 13/94/3 +f 22/125/11 5/123/6 6/97/11 +f 35/126/19 49/127/16 34/128/16 +f 43/129/20 58/130/18 42/131/18 +f 36/132/21 51/133/19 35/126/19 +f 44/134/22 59/135/20 43/129/20 +f 37/136/6 52/137/21 36/132/21 +f 45/138/3 60/139/22 44/134/22 +f 38/140/11 53/141/6 37/136/6 +f 46/142/9 61/143/3 45/138/3 +f 39/144/10 54/145/11 38/140/11 +f 47/146/12 62/147/9 46/142/9 +f 40/148/13 55/149/10 39/144/10 +f 48/150/14 63/151/12 47/146/12 +f 41/152/15 56/153/13 40/148/13 +f 34/128/16 50/154/17 33/155/17 +f 33/156/17 64/157/14 48/150/14 +f 42/131/18 57/158/15 41/152/15 +f 77/159/3 92/160/22 76/161/22 +f 70/162/11 85/163/6 69/164/6 +f 78/165/9 93/166/3 77/159/3 +f 70/162/11 87/167/10 86/168/11 +f 79/169/12 94/170/9 78/165/9 +f 71/171/10 88/172/13 87/167/10 +f 80/173/14 95/174/12 79/169/12 +f 73/175/15 88/172/13 72/176/13 +f 66/177/17 81/178/16 82/179/17 +f 66/180/17 96/181/14 80/173/14 +f 74/182/18 89/183/15 73/175/15 +f 67/184/19 81/178/16 65/185/16 +f 75/186/20 90/187/18 74/182/18 +f 68/188/21 83/189/19 67/184/19 +f 75/186/20 92/160/22 91/190/20 +f 69/164/6 84/191/21 68/188/21 +f 119/192/23 118/193/9 117/194/23 +f 114/195/21 115/196/24 113/197/24 +f 123/198/25 119/192/23 117/194/23 +f 115/196/24 121/199/26 113/197/24 +f 128/200/22 130/201/9 129/202/9 +f 132/203/21 126/204/11 131/205/21 +f 114/195/21 131/205/21 116/206/21 +f 129/202/9 118/193/9 120/207/9 +f 136/208/18 127/209/22 128/200/22 +f 125/210/11 134/211/13 126/204/11 +f 133/212/13 136/208/18 134/211/13 +f 246/213/8 227/214/8 211/215/8 +f 243/216/8 230/217/8 214/218/8 +f 244/219/8 229/220/8 213/221/8 +f 245/222/8 228/223/8 212/224/8 +f 254/225/8 236/226/8 250/227/8 +f 252/228/8 238/229/8 248/230/8 +f 253/231/8 237/232/8 249/233/8 +f 254/225/8 242/234/8 246/213/8 +f 251/235/8 239/236/8 243/216/8 +f 252/228/8 240/237/8 244/219/8 +f 253/231/8 241/238/8 245/222/8 +f 233/239/8 228/223/8 236/226/8 +f 211/215/8 226/240/8 210/241/8 +f 210/241/8 225/242/8 209/243/8 +f 208/244/8 225/242/8 224/245/8 +f 208/244/8 223/246/8 207/247/8 +f 207/247/8 222/248/8 206/249/8 +f 205/250/8 222/248/8 221/251/8 +f 205/250/8 220/252/8 204/253/8 +f 204/253/8 219/254/8 203/255/8 +f 203/255/8 218/256/8 202/257/8 +f 201/258/8 218/256/8 217/259/8 +f 201/260/8 232/261/8 216/262/8 +f 215/263/8 232/261/8 231/264/8 +f 251/235/8 231/264/8 247/265/8 +f 235/266/8 230/217/8 238/229/8 +f 234/267/8 229/220/8 237/232/8 +f 30/93/9 29/124/3 13/94/3 +f 23/96/10 22/125/11 6/97/11 +f 31/99/12 30/93/9 14/95/9 +f 24/101/13 23/96/10 7/98/10 +f 32/103/14 31/99/12 15/100/12 +f 25/105/15 24/101/13 8/102/13 +f 18/107/16 17/268/17 1/108/17 +f 17/110/17 32/103/14 16/104/14 +f 26/112/18 25/105/15 9/106/15 +f 19/114/19 18/107/16 2/109/16 +f 27/116/20 26/112/18 10/113/18 +f 20/118/21 19/114/19 3/115/19 +f 28/120/22 27/116/20 11/117/20 +f 21/122/6 20/118/21 4/119/21 +f 29/124/3 28/120/22 12/121/22 +f 22/125/11 21/122/6 5/123/6 +f 35/126/19 51/133/19 49/127/16 +f 43/129/20 59/135/20 58/130/18 +f 36/132/21 52/137/21 51/133/19 +f 44/134/22 60/139/22 59/135/20 +f 37/136/6 53/141/6 52/137/21 +f 45/138/3 61/143/3 60/139/22 +f 38/140/11 54/145/11 53/141/6 +f 46/142/9 62/147/9 61/143/3 +f 39/144/10 55/149/10 54/145/11 +f 47/146/12 63/151/12 62/147/9 +f 40/148/13 56/153/13 55/149/10 +f 48/150/14 64/157/14 63/151/12 +f 41/152/15 57/158/15 56/153/13 +f 34/128/16 49/127/16 50/154/17 +f 33/156/17 50/269/17 64/157/14 +f 42/131/18 58/130/18 57/158/15 +f 77/159/3 93/166/3 92/160/22 +f 70/162/11 86/168/11 85/163/6 +f 78/165/9 94/170/9 93/166/3 +f 70/162/11 71/171/10 87/167/10 +f 79/169/12 95/174/12 94/170/9 +f 71/171/10 72/176/13 88/172/13 +f 80/173/14 96/181/14 95/174/12 +f 73/175/15 89/183/15 88/172/13 +f 66/177/17 65/185/16 81/178/16 +f 66/180/17 82/270/17 96/181/14 +f 74/182/18 90/187/18 89/183/15 +f 67/184/19 83/189/19 81/178/16 +f 75/186/20 91/190/20 90/187/18 +f 68/188/21 84/191/21 83/189/19 +f 75/186/20 76/161/22 92/160/22 +f 69/164/6 85/163/6 84/191/21 +f 119/192/23 120/207/9 118/193/9 +f 114/195/21 116/206/21 115/196/24 +f 123/198/25 124/271/25 119/192/23 +f 115/196/24 122/272/26 121/199/26 +f 128/200/22 127/209/22 130/201/9 +f 132/203/21 125/210/11 126/204/11 +f 114/195/21 132/203/21 131/205/21 +f 129/202/9 130/201/9 118/193/9 +f 136/208/18 135/273/18 127/209/22 +f 125/210/11 133/212/13 134/211/13 +f 133/212/13 135/273/18 136/208/18 +f 246/213/8 242/234/8 227/214/8 +f 243/216/8 239/236/8 230/217/8 +f 244/219/8 240/237/8 229/220/8 +f 245/222/8 241/238/8 228/223/8 +f 254/225/8 233/239/8 236/226/8 +f 252/228/8 235/266/8 238/229/8 +f 253/231/8 234/267/8 237/232/8 +f 254/225/8 250/227/8 242/234/8 +f 251/235/8 247/265/8 239/236/8 +f 252/228/8 248/230/8 240/237/8 +f 253/231/8 249/233/8 241/238/8 +f 233/239/8 212/224/8 228/223/8 +f 211/215/8 227/214/8 226/240/8 +f 210/241/8 226/240/8 225/242/8 +f 208/244/8 209/243/8 225/242/8 +f 208/244/8 224/245/8 223/246/8 +f 207/247/8 223/246/8 222/248/8 +f 205/250/8 206/249/8 222/248/8 +f 205/250/8 221/251/8 220/252/8 +f 204/253/8 220/252/8 219/254/8 +f 203/255/8 219/254/8 218/256/8 +f 201/258/8 202/257/8 218/256/8 +f 201/260/8 217/274/8 232/261/8 +f 215/263/8 216/262/8 232/261/8 +f 251/235/8 215/263/8 231/264/8 +f 235/266/8 214/218/8 230/217/8 +f 234/267/8 213/221/8 229/220/8 diff --git a/src/main/resources/assets/hbm/textures/models/bombs/mine_marelet.png b/src/main/resources/assets/hbm/textures/models/bombs/mine_marelet.png new file mode 100644 index 0000000000000000000000000000000000000000..1ef34e4571793556de733bdca2b14fb38cf32f8f GIT binary patch literal 1039 zcmV+q1n~QbP)8nu5WsP!$d(Vo$Zq5j0u<=fC+O6*Z;(xch8meX70#eR zn;);p9vIHY+ztf|>dX@<+9^%z|62lC{5W{HUM{M5c6WF8$7J;7>*t)?138FAYgdiBj-6+ds&9;3OODajw`;ri`r>rg zJM|<^3k4W~LnSipAA#5PdvMGl);`2~r-TX|7>Rmbnc3}Zo7n1kwKFER{b8%+r{7P( zF`;qwyfV$Q^?shht;S#1@8)WHx{oT8z=4tQB{KP0U)AbX@$NXcRna$QNLZjimyog#wIB%+o0QB*4D8G3$oLX!pmGv|Y4N0H9DLZ~!P22^;_l zmAwc4vU$rL0ss^#djfxZNqbQZ0E`_i6aXkx_6nRsjR7D{_5{wM#sH9p7773qiUbY- zh05MS0q{@iVZfH}@ZUquOI`n?_CHiS`+jdZk-&i?Vh=uWe_Eky-{HURIQw()_+S=4 ze?`w5IxhCwjVEP)`OfjwIJEuc_tY0pF0@d9BiF8)&TCYC*T(F=rB6GN=5_tPom0=N z;JkWXdB@2UcC@(UI=*;P_P5DYJKa7uPT&4^KlghI#ghXG95^z*>e7AFp6}Wx_U(M3 zHxV|=)?7_5yys_z;*{&A#I5aL&nr{i*E Date: Tue, 15 Mar 2022 15:51:30 +0100 Subject: [PATCH 02/10] some fixes, infinite bounding box block --- src/main/java/com/hbm/blocks/ModBlocks.java | 6 ++++++ src/main/java/com/hbm/blocks/test/TestBB.java | 18 ++++++++++++++++++ .../java/com/hbm/crafting/ArmorRecipes.java | 6 +++++- .../modifier/HazardModifierFuelRadiation.java | 1 - .../modifier/HazardModifierRBMKRadiation.java | 2 +- .../java/com/hbm/items/armor/ItemModPads.java | 9 +++++++++ .../com/hbm/items/machine/ItemRBMKPellet.java | 4 ---- .../hbm/textures/blocks/test_bb_bork.png | Bin 0 -> 191 bytes .../hbm/textures/blocks/test_bb_inf.png | Bin 0 -> 197 bytes 9 files changed, 39 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/test/TestBB.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/test_bb_bork.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/test_bb_inf.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 01f371737..b24dc073b 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -52,6 +52,8 @@ public class ModBlocks { public static Block test_conductor; public static Block test_ct; public static Block test_rail; + public static Block test_bb_bork; + public static Block test_bb_inf; public static Block ore_uranium; public static Block ore_uranium_scorched; @@ -1251,6 +1253,8 @@ public class ModBlocks { test_conductor = new TestConductor(Material.iron).setBlockName("test_conductor").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cable_neo"); test_ct = new TestCT(Material.iron).setBlockName("test_ct").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":test_ct"); test_rail = new TestRail(Material.iron).setBlockName("test_rail").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":test_rail"); + test_bb_bork = new TestRail(Material.iron).setBlockName("test_bb_bork").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":test_bb_bork"); + test_bb_inf = new TestBB(Material.iron).setBlockName("test_bb_inf").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":test_bb_inf"); ore_uranium = new BlockOutgas(Material.rock, true, 5, true).setBlockName("ore_uranium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_uranium"); ore_uranium_scorched = new BlockOutgas(Material.rock, true, 5, true).setBlockName("ore_uranium_scorched").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_uranium_scorched"); @@ -2256,6 +2260,8 @@ public class ModBlocks { GameRegistry.registerBlock(test_conductor, test_conductor.getUnlocalizedName()); GameRegistry.registerBlock(test_ct, test_ct.getUnlocalizedName()); GameRegistry.registerBlock(test_rail, test_rail.getUnlocalizedName()); + GameRegistry.registerBlock(test_bb_bork, test_bb_bork.getUnlocalizedName()); + GameRegistry.registerBlock(test_bb_inf, test_bb_inf.getUnlocalizedName()); //Ores GameRegistry.registerBlock(ore_uranium, ore_uranium.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/test/TestBB.java b/src/main/java/com/hbm/blocks/test/TestBB.java new file mode 100644 index 000000000..20d2bfa5c --- /dev/null +++ b/src/main/java/com/hbm/blocks/test/TestBB.java @@ -0,0 +1,18 @@ +package com.hbm.blocks.test; + +import com.hbm.blocks.ModBlocks; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; + +public class TestBB extends Block { + + public TestBB(Material mat) { + super(mat); + + if(this == ModBlocks.test_bb_bork) + this.setBlockBounds(-1000F, -1000F, -1000F, 1001F, 1001F, 1001F); + else + this.setBlockBounds(Float.NEGATIVE_INFINITY, Float.NEGATIVE_INFINITY, Float.NEGATIVE_INFINITY, Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY); + } +} diff --git a/src/main/java/com/hbm/crafting/ArmorRecipes.java b/src/main/java/com/hbm/crafting/ArmorRecipes.java index 358de71d4..965b8e066 100644 --- a/src/main/java/com/hbm/crafting/ArmorRecipes.java +++ b/src/main/java/com/hbm/crafting/ArmorRecipes.java @@ -78,7 +78,7 @@ public class ArmorRecipes { CraftingManager.addShapelessAuto(new ItemStack(ModItems.ajro_boots, 1), new Object[] { ModItems.ajr_boots, KEY_RED, KEY_BLACK }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.bj_helmet, 1), new Object[] { "SBS", " C ", " I ", 'S', Items.string, 'B', new ItemStack(Blocks.wool, 1, 15), 'C', ModItems.circuit_targeting_tier4, 'I', STAR.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.bj_plate, 1), new Object[] { "N N", "MSM", "NCN", 'N', ModItems.plate_armor_lunar, 'M', ModItems.motor_desh, 'S', ModItems.starmetal_plate, 'C', ModItems.circuit_targeting_tier5 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.bj_plate_jetpack, 1), new Object[] { "NFN", "TPT", "ICI", 'N', ModItems.plate_armor_lunar, 'F', ModItems.fins_quad_titanium, 'T', new ItemStack(ModItems.fluid_tank_full, 1, Fluids.XENON.ordinal()), 'P', ModItems.bj_plate, 'I', ModItems.mp_thruster_10_xenon, 'C', ModItems.crystal_phosphorus }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.bj_plate_jetpack, 1), new Object[] { "NFN", "TPT", "ICI", 'N', ModItems.plate_armor_lunar, 'F', ModItems.fins_quad_titanium, 'T', new ItemStack(ModItems.fluid_tank_full, 1, Fluids.XENON.getID()), 'P', ModItems.bj_plate, 'I', ModItems.mp_thruster_10_xenon, 'C', ModItems.crystal_phosphorus }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.bj_legs, 1), new Object[] { "MBM", "NSN", "N N", 'N', ModItems.plate_armor_lunar, 'M', ModItems.motor_desh, 'S', ModItems.starmetal_legs, 'B', ModBlocks.block_starmetal }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.bj_boots, 1), new Object[] { "N N", "BSB", 'N', ModItems.plate_armor_lunar, 'S', ModItems.starmetal_boots, 'B', ModBlocks.block_starmetal }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.hev_helmet, 1), new Object[] { "PPC", "PBP", "IFI", 'P', ModItems.plate_armor_hev, 'C', ModItems.circuit_targeting_tier4, 'B', ModItems.titanium_helmet, 'I', ModItems.plate_polymer, 'F', ModItems.gas_mask_filter }); @@ -97,6 +97,10 @@ public class ArmorRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.rpa_plate, 1), new Object[] { "P P", "MLM", "PKP", 'L', DictFrame.fromOne(ModItems.parts_legendary, EnumLegendaryType.TIER2), 'K', ModItems.plate_kevlar, 'P', ModItems.plate_armor_ajr, 'M', ModItems.motor_desh }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.rpa_legs, 1), new Object[] { "MPM", "KLK", "P P", 'L', DictFrame.fromOne(ModItems.parts_legendary, EnumLegendaryType.TIER2), 'K', ModItems.plate_kevlar, 'P', ModItems.plate_armor_ajr, 'M', ModItems.motor_desh }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.rpa_boots, 1), new Object[] { "KLK", "P P", 'L', DictFrame.fromOne(ModItems.parts_legendary, EnumLegendaryType.TIER2), 'K', ModItems.plate_kevlar, 'P', ModItems.plate_armor_ajr }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.steamsuit_helmet, 1), new Object[] { "DCD", "CXC", " F ", 'D', DESH.ingot(), 'C', CU.plate(), 'X', ModItems.steel_helmet, 'F', ModItems.gas_mask_filter }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.steamsuit_plate, 1), new Object[] { "C C", "DXD", "CFC", 'D', DESH.ingot(), 'C', CU.plate(), 'X', ModItems.steel_plate, 'F', ModItems.tank_steel }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.steamsuit_legs, 1), new Object[] { "CCC", "DXD", "C C", 'D', DESH.ingot(), 'C', CU.plate(), 'X', ModItems.steel_legs }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.steamsuit_legs, 1), new Object[] { "C C", "DXD", 'D', DESH.ingot(), 'C', CU.plate(), 'X', ModItems.steel_boots }); //Euphemium armor CraftingManager.addRecipeAuto(new ItemStack(ModItems.euphemium_helmet, 1), new Object[] { "EEE", "E E", 'E', ModItems.plate_euphemium }); diff --git a/src/main/java/com/hbm/hazard/modifier/HazardModifierFuelRadiation.java b/src/main/java/com/hbm/hazard/modifier/HazardModifierFuelRadiation.java index 7dfb687f1..c95a1e213 100644 --- a/src/main/java/com/hbm/hazard/modifier/HazardModifierFuelRadiation.java +++ b/src/main/java/com/hbm/hazard/modifier/HazardModifierFuelRadiation.java @@ -1,6 +1,5 @@ package com.hbm.hazard.modifier; -import com.hbm.hazard.HazardRegistry; import com.hbm.items.machine.ItemFuelRod; import net.minecraft.entity.EntityLivingBase; diff --git a/src/main/java/com/hbm/hazard/modifier/HazardModifierRBMKRadiation.java b/src/main/java/com/hbm/hazard/modifier/HazardModifierRBMKRadiation.java index e864c5480..fdd3c7bfd 100644 --- a/src/main/java/com/hbm/hazard/modifier/HazardModifierRBMKRadiation.java +++ b/src/main/java/com/hbm/hazard/modifier/HazardModifierRBMKRadiation.java @@ -27,7 +27,7 @@ public class HazardModifierRBMKRadiation extends HazardModifier { } else if(stack.getItem() instanceof ItemRBMKPellet) { - level = level + (target - level) * (ItemRBMKPellet.rectify(stack.getItemDamage()) / 4F); + level = level + (target - level) * ((ItemRBMKPellet.rectify(stack.getItemDamage()) % 5) / 4F); if(ItemRBMKPellet.hasXenon(stack.getItemDamage())) level += HazardRegistry.xe135 * HazardRegistry.nugget; diff --git a/src/main/java/com/hbm/items/armor/ItemModPads.java b/src/main/java/com/hbm/items/armor/ItemModPads.java index c936aa513..9e7d62556 100644 --- a/src/main/java/com/hbm/items/armor/ItemModPads.java +++ b/src/main/java/com/hbm/items/armor/ItemModPads.java @@ -8,7 +8,9 @@ import com.hbm.items.ModItems; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.util.DamageSource; import net.minecraft.util.EnumChatFormatting; +import net.minecraftforge.event.entity.living.LivingHurtEvent; public class ItemModPads extends ItemArmorMod { @@ -40,6 +42,13 @@ public class ItemModPads extends ItemArmorMod { else list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (-" + Math.round((1F - damageMod) * 100) + "% fall dmg)"); } + + @Override + public void modDamage(LivingHurtEvent event, ItemStack armor) { + + if(event.source == DamageSource.fall) + event.ammount *= damageMod; + } @Override public void modUpdate(EntityLivingBase entity, ItemStack armor) { diff --git a/src/main/java/com/hbm/items/machine/ItemRBMKPellet.java b/src/main/java/com/hbm/items/machine/ItemRBMKPellet.java index 72a77098e..5c416e640 100644 --- a/src/main/java/com/hbm/items/machine/ItemRBMKPellet.java +++ b/src/main/java/com/hbm/items/machine/ItemRBMKPellet.java @@ -9,15 +9,11 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.IIcon; -import net.minecraft.world.World; public class ItemRBMKPellet extends ItemNuclearWaste { diff --git a/src/main/resources/assets/hbm/textures/blocks/test_bb_bork.png b/src/main/resources/assets/hbm/textures/blocks/test_bb_bork.png new file mode 100644 index 0000000000000000000000000000000000000000..7286794bcf5cad5f821d266ad1c696219e48b203 GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfVjx)vIjc+LZNZOLtv*y9$5WZmc*eQZ%-dNlSIdD7AH6qsU`U#oTLoXEzn{}Oz mHy*F=oqJrQkfs0rPi9sFOEpg2T~~oFVDNPHb6Mw<&;$TaV?_r5 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/test_bb_inf.png b/src/main/resources/assets/hbm/textures/blocks/test_bb_inf.png new file mode 100644 index 0000000000000000000000000000000000000000..107de4238b09fc4dd43458b52da9c476f0318e47 GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfome)q7){1E^l43Z{ti`b7e&&ow;SMDO;WHMlp4#S->oppe zr|^XwxwY>%Pn)t!^W2QHD|Q_)OBTNV%B=JQdowd%(X$lI34-B@-<6L{xofJmTqE)O sgpvaSk2;y%&Odl!m@0Glarr-nlBxCv>-V@k0J?+0)78&qol`;+0Dl!lVgLXD literal 0 HcmV?d00001 From abc87d6fa985018ac7d8b47f6d7cd5d0a97bc893 Mon Sep 17 00:00:00 2001 From: Bob Date: Tue, 15 Mar 2022 21:06:08 +0100 Subject: [PATCH 03/10] fixed chemplant IO crash, broken recipes --- src/main/java/com/hbm/blocks/ModBlocks.java | 2 +- src/main/java/com/hbm/crafting/ArmorRecipes.java | 2 +- src/main/java/com/hbm/lib/RefStrings.java | 2 +- .../machine/TileEntityMachineChemplantBase.java | 9 ++++++--- src/main/resources/mcmod.info | 2 +- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index b24dc073b..3becf77ae 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1253,7 +1253,7 @@ public class ModBlocks { test_conductor = new TestConductor(Material.iron).setBlockName("test_conductor").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cable_neo"); test_ct = new TestCT(Material.iron).setBlockName("test_ct").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":test_ct"); test_rail = new TestRail(Material.iron).setBlockName("test_rail").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":test_rail"); - test_bb_bork = new TestRail(Material.iron).setBlockName("test_bb_bork").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":test_bb_bork"); + test_bb_bork = new TestBB(Material.iron).setBlockName("test_bb_bork").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":test_bb_bork"); test_bb_inf = new TestBB(Material.iron).setBlockName("test_bb_inf").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":test_bb_inf"); ore_uranium = new BlockOutgas(Material.rock, true, 5, true).setBlockName("ore_uranium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_uranium"); diff --git a/src/main/java/com/hbm/crafting/ArmorRecipes.java b/src/main/java/com/hbm/crafting/ArmorRecipes.java index 965b8e066..000071599 100644 --- a/src/main/java/com/hbm/crafting/ArmorRecipes.java +++ b/src/main/java/com/hbm/crafting/ArmorRecipes.java @@ -100,7 +100,7 @@ public class ArmorRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.steamsuit_helmet, 1), new Object[] { "DCD", "CXC", " F ", 'D', DESH.ingot(), 'C', CU.plate(), 'X', ModItems.steel_helmet, 'F', ModItems.gas_mask_filter }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.steamsuit_plate, 1), new Object[] { "C C", "DXD", "CFC", 'D', DESH.ingot(), 'C', CU.plate(), 'X', ModItems.steel_plate, 'F', ModItems.tank_steel }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.steamsuit_legs, 1), new Object[] { "CCC", "DXD", "C C", 'D', DESH.ingot(), 'C', CU.plate(), 'X', ModItems.steel_legs }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.steamsuit_legs, 1), new Object[] { "C C", "DXD", 'D', DESH.ingot(), 'C', CU.plate(), 'X', ModItems.steel_boots }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.steamsuit_boots, 1), new Object[] { "C C", "DXD", 'D', DESH.ingot(), 'C', CU.plate(), 'X', ModItems.steel_boots }); //Euphemium armor CraftingManager.addRecipeAuto(new ItemStack(ModItems.euphemium_helmet, 1), new Object[] { "EEE", "E E", 'E', ModItems.plate_euphemium }); diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index fe91bfe3c..9e2f8a1e4 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (4172)"; + public static final String VERSION = "1.0.27 BETA (4174)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java index 177d69c80..1a3aeeb53 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java @@ -18,6 +18,7 @@ import com.hbm.util.InventoryUtil; import api.hbm.energy.IEnergyUser; import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; @@ -266,6 +267,7 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa if(te instanceof IInventory) { IInventory inv = (IInventory) te; + //ISidedInventory sided = inv instanceof ISidedInventory ? (ISidedInventory) inv : null; for(int i = indices[2]; i <= indices[3]; i++) { @@ -276,7 +278,7 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa for(int j = 0; j < inv.getSizeInventory(); j++) { ItemStack target = inv.getStackInSlot(j); - if(InventoryUtil.doesStackDataMatch(out, target) && target.stackSize < target.getMaxStackSize()) { + if(InventoryUtil.doesStackDataMatch(out, target) && target.stackSize < target.getMaxStackSize() && target.stackSize < inv.getInventoryStackLimit()) { this.decrStackSize(i, 1); target.stackSize++; return; @@ -286,8 +288,9 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa for(int j = 0; j < inv.getSizeInventory(); j++) { if(inv.getStackInSlot(j) == null) { - inv.setInventorySlotContents(j, out.copy()); - inv.getStackInSlot(j).stackSize = 1; + ItemStack copy = out.copy(); + copy.stackSize = 1; + inv.setInventorySlotContents(j, copy); this.decrStackSize(i, 1); return; } diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index 32035c5e1..84a3db2de 100755 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -3,7 +3,7 @@ "modid": "hbm", "name": "Hbm's Nuclear Tech", "description": "A mod that adds weapons, nuclear themed stuff and machines", - "version":"1.0.27_X4172", + "version":"1.0.27_X4174", "mcversion": "1.7.10", "url": "", "updateUrl": "", From 61ab7e156deeec8405cc56b03764b570a82957e5 Mon Sep 17 00:00:00 2001 From: TehTemmie <36060353+TehTemmie@users.noreply.github.com> Date: Thu, 17 Mar 2022 17:47:06 +0800 Subject: [PATCH 04/10] Update ItemRBMKRod.java I should probably do this in a proper dev environment --- src/main/java/com/hbm/items/machine/ItemRBMKRod.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/items/machine/ItemRBMKRod.java b/src/main/java/com/hbm/items/machine/ItemRBMKRod.java index 1643dae67..8fc4735c5 100644 --- a/src/main/java/com/hbm/items/machine/ItemRBMKRod.java +++ b/src/main/java/com/hbm/items/machine/ItemRBMKRod.java @@ -239,7 +239,7 @@ public class ItemRBMKRod extends Item { case PASSIVE: return selfRate * enrichment; case LOG_TEN: return Math.log10(flux + 1) * 0.5D * reactivity; case PLATEU: return (1 - Math.pow(Math.E, -flux / 25D)) * reactivity; - case ARCH: return Math.max(flux - (flux * flux / 10000D) / 100D * reactivity, 0D); + case ARCH: return Math.max((flux - (flux * flux / 10000D)) / 100D * reactivity, 0D); case SIGMOID: return reactivity / (1 + Math.pow(Math.E, -(flux - 50D) / 10D)); case SQUARE_ROOT: return Math.sqrt(flux) * reactivity / 10D; case LINEAR: return flux / 100D * reactivity; From 0138c145add61753c10f181a2e110bfe66e42475 Mon Sep 17 00:00:00 2001 From: TehTemmie <36060353+TehTemmie@users.noreply.github.com> Date: Thu, 17 Mar 2022 17:51:46 +0800 Subject: [PATCH 05/10] Update ItemPlateFuel.java Fixed a rounding error and order of operations error --- src/main/java/com/hbm/items/machine/ItemPlateFuel.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/hbm/items/machine/ItemPlateFuel.java b/src/main/java/com/hbm/items/machine/ItemPlateFuel.java index 62b99da99..7184db282 100644 --- a/src/main/java/com/hbm/items/machine/ItemPlateFuel.java +++ b/src/main/java/com/hbm/items/machine/ItemPlateFuel.java @@ -64,9 +64,9 @@ public class ItemPlateFuel extends ItemFuelRod { switch(this.function) { case LOGARITHM: return (int) (Math.log10(flux + 1) * 0.5D * reactivity); - case SQUARE_ROOT: return (int) (Math.sqrt(flux) * this.reactivity / 10); - case NEGATIVE_QUADRATIC: return (int) (Math.max(flux - (flux * flux / 10000) / 100 * reactivity, 0)); - case LINEAR: return (int) (flux / 100 * reactivity); + case SQUARE_ROOT: return (int) (Math.sqrt(flux) * this.reactivity / 10D); + case NEGATIVE_QUADRATIC: return (int) (Math.max((flux - (flux * flux / 10000D)) / 100D * reactivity, 0)); + case LINEAR: return (int) (flux / 100D * reactivity); case PASSIVE: setLifeTime(stack, getLifeTime(stack) + reactivity); return reactivity; From fabdeb69479ded6abfbf488e1d77e1bc251b09e0 Mon Sep 17 00:00:00 2001 From: TehTemmie <36060353+TehTemmie@users.noreply.github.com> Date: Thu, 17 Mar 2022 17:56:48 +0800 Subject: [PATCH 06/10] Fixing another small mistake --- src/main/java/com/hbm/hazard/HazardRegistry.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/hazard/HazardRegistry.java b/src/main/java/com/hbm/hazard/HazardRegistry.java index 1c007d3ff..86e1e392e 100644 --- a/src/main/java/com/hbm/hazard/HazardRegistry.java +++ b/src/main/java/com/hbm/hazard/HazardRegistry.java @@ -526,7 +526,7 @@ public class HazardRegistry { HazardData data = new HazardData(); data.addEntry(new HazardEntry(RADIATION, base).addMod(new HazardModifierRTGRadiation(target))); if(hot > 0) data.addEntry(new HazardEntry(HOT, hot)); - if(blinding > 0) data.addEntry(new HazardEntry(BLINDING, hot)); + if(blinding > 0) data.addEntry(new HazardEntry(BLINDING, blinding)); HazardSystem.register(pellet, data); } From 980fe377a0cacfc96bf7d21d3f24f9045112a5b1 Mon Sep 17 00:00:00 2001 From: Bob Date: Thu, 17 Mar 2022 18:33:17 +0100 Subject: [PATCH 07/10] ore layer system, new amat cell explosion, particle settings for jetpack --- .../hbm/explosion/vanillant/ExplosionVNT.java | 14 ++ .../interfaces/ICustomDamageHandler.java | 10 ++ .../interfaces/IEntityRangeMutator.java | 8 + .../standard/CustomDamageHandlerAmat.java | 25 +++ .../standard/EntityProcessorStandard.java | 28 ++++ .../standard/ExplosionEffectAmat.java | 27 ++++ .../java/com/hbm/inventory/RecipesCommon.java | 10 +- .../java/com/hbm/items/special/ItemDrop.java | 8 +- src/main/java/com/hbm/main/ClientProxy.java | 127 ++++++++------- src/main/java/com/hbm/main/MainRegistry.java | 4 + .../com/hbm/particle/ParticleAmatFlash.java | 145 ++++++++++++++++++ .../java/com/hbm/world/feature/OreLayer.java | 109 +++++++++++++ 12 files changed, 457 insertions(+), 58 deletions(-) create mode 100644 src/main/java/com/hbm/explosion/vanillant/interfaces/ICustomDamageHandler.java create mode 100644 src/main/java/com/hbm/explosion/vanillant/interfaces/IEntityRangeMutator.java create mode 100644 src/main/java/com/hbm/explosion/vanillant/standard/CustomDamageHandlerAmat.java create mode 100644 src/main/java/com/hbm/explosion/vanillant/standard/ExplosionEffectAmat.java create mode 100644 src/main/java/com/hbm/particle/ParticleAmatFlash.java create mode 100644 src/main/java/com/hbm/world/feature/OreLayer.java diff --git a/src/main/java/com/hbm/explosion/vanillant/ExplosionVNT.java b/src/main/java/com/hbm/explosion/vanillant/ExplosionVNT.java index 254874315..891c10213 100644 --- a/src/main/java/com/hbm/explosion/vanillant/ExplosionVNT.java +++ b/src/main/java/com/hbm/explosion/vanillant/ExplosionVNT.java @@ -11,7 +11,9 @@ import com.hbm.explosion.vanillant.interfaces.IExplosionSFX; import com.hbm.explosion.vanillant.interfaces.IPlayerProcessor; import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; +import com.hbm.explosion.vanillant.standard.CustomDamageHandlerAmat; import com.hbm.explosion.vanillant.standard.EntityProcessorStandard; +import com.hbm.explosion.vanillant.standard.ExplosionEffectAmat; import com.hbm.explosion.vanillant.standard.ExplosionEffectStandard; import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; @@ -127,4 +129,16 @@ public class ExplosionVNT { this.setSFX(new ExplosionEffectStandard()); return this; } + + public ExplosionVNT makeAmat() { + this.setBlockAllocator(new BlockAllocatorStandard(this.size < 15 ? 16 : 32)); + this.setBlockProcessor(new BlockProcessorStandard() + .setNoDrop()); + this.setEntityProcessor(new EntityProcessorStandard() + .withRangeMod(2F) + .withDamageMod(new CustomDamageHandlerAmat(50F))); + this.setPlayerProcessor(new PlayerProcessorStandard()); + this.setSFX(new ExplosionEffectAmat()); + return this; + } } diff --git a/src/main/java/com/hbm/explosion/vanillant/interfaces/ICustomDamageHandler.java b/src/main/java/com/hbm/explosion/vanillant/interfaces/ICustomDamageHandler.java new file mode 100644 index 000000000..3034782eb --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/interfaces/ICustomDamageHandler.java @@ -0,0 +1,10 @@ +package com.hbm.explosion.vanillant.interfaces; + +import com.hbm.explosion.vanillant.ExplosionVNT; + +import net.minecraft.entity.Entity; + +public interface ICustomDamageHandler { + + public void handleAttack(ExplosionVNT explosion, Entity entity, double distanceScaled); +} diff --git a/src/main/java/com/hbm/explosion/vanillant/interfaces/IEntityRangeMutator.java b/src/main/java/com/hbm/explosion/vanillant/interfaces/IEntityRangeMutator.java new file mode 100644 index 000000000..f513ec6f8 --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/interfaces/IEntityRangeMutator.java @@ -0,0 +1,8 @@ +package com.hbm.explosion.vanillant.interfaces; + +import com.hbm.explosion.vanillant.ExplosionVNT; + +public interface IEntityRangeMutator { + + public float mutateRange(ExplosionVNT explosion, float range); +} diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/CustomDamageHandlerAmat.java b/src/main/java/com/hbm/explosion/vanillant/standard/CustomDamageHandlerAmat.java new file mode 100644 index 000000000..5a98cb19b --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/standard/CustomDamageHandlerAmat.java @@ -0,0 +1,25 @@ +package com.hbm.explosion.vanillant.standard; + +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.interfaces.ICustomDamageHandler; +import com.hbm.util.ContaminationUtil; +import com.hbm.util.ContaminationUtil.ContaminationType; +import com.hbm.util.ContaminationUtil.HazardType; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; + +public class CustomDamageHandlerAmat implements ICustomDamageHandler { + + protected float radiation; + + public CustomDamageHandlerAmat(float radiation) { + this.radiation = radiation; + } + + @Override + public void handleAttack(ExplosionVNT explosion, Entity entity, double distanceScaled) { + if(entity instanceof EntityLivingBase) + ContaminationUtil.contaminate((EntityLivingBase)entity, HazardType.RADIATION, ContaminationType.CREATIVE, (float) (radiation * (1D - distanceScaled) * explosion.size)); + } +} diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorStandard.java b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorStandard.java index f9fbdb272..626887245 100644 --- a/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorStandard.java +++ b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorStandard.java @@ -4,7 +4,9 @@ import java.util.HashMap; import java.util.List; import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.interfaces.ICustomDamageHandler; import com.hbm.explosion.vanillant.interfaces.IEntityProcessor; +import com.hbm.explosion.vanillant.interfaces.IEntityRangeMutator; import net.minecraft.enchantment.EnchantmentProtection; import net.minecraft.entity.Entity; @@ -17,6 +19,9 @@ import net.minecraftforge.event.ForgeEventFactory; public class EntityProcessorStandard implements IEntityProcessor { + protected IEntityRangeMutator range; + protected ICustomDamageHandler damage; + @Override public HashMap process(ExplosionVNT explosion, World world, double x, double y, double z, float size) { @@ -24,6 +29,10 @@ public class EntityProcessorStandard implements IEntityProcessor { size *= 2.0F; + if(range != null) { + size = range.mutateRange(explosion, size); + } + double minX = x - (double) size - 1.0D; double maxX = x + (double) size + 1.0D; double minY = y - (double) size - 1.0D; @@ -67,10 +76,29 @@ public class EntityProcessorStandard implements IEntityProcessor { if(entity instanceof EntityPlayer) { affectedPlayers.put((EntityPlayer) entity, Vec3.createVectorHelper(deltaX * knockback, deltaY * knockback, deltaZ * knockback)); } + + if(damage != null) { + damage.handleAttack(explosion, entity, distanceScaled); + } } } } return affectedPlayers; } + + public EntityProcessorStandard withRangeMod(float mod) { + range = new IEntityRangeMutator() { + @Override + public float mutateRange(ExplosionVNT explosion, float range) { + return range * mod; + } + }; + return this; + } + + public EntityProcessorStandard withDamageMod(ICustomDamageHandler damage) { + this.damage = damage; + return this; + } } diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/ExplosionEffectAmat.java b/src/main/java/com/hbm/explosion/vanillant/standard/ExplosionEffectAmat.java new file mode 100644 index 000000000..088c38a83 --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/standard/ExplosionEffectAmat.java @@ -0,0 +1,27 @@ +package com.hbm.explosion.vanillant.standard; + +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.interfaces.IExplosionSFX; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; + +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class ExplosionEffectAmat implements IExplosionSFX { + + @Override + public void doEffect(ExplosionVNT explosion, World world, double x, double y, double z, float size) { + + if(size < 15) + world.playSoundEffect(x, y, z, "random.explode", 4.0F, (1.4F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.2F) * 0.7F); + else + world.playSoundEffect(x, y, z, "hbm:weapon.mukeExplosion", 15.0F, 1.0F); + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "amat"); + data.setFloat("scale", size); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x, y, z), new TargetPoint(world.provider.dimensionId, x, y, z, 200)); + } +} diff --git a/src/main/java/com/hbm/inventory/RecipesCommon.java b/src/main/java/com/hbm/inventory/RecipesCommon.java index f29d3740e..a4c68e67c 100644 --- a/src/main/java/com/hbm/inventory/RecipesCommon.java +++ b/src/main/java/com/hbm/inventory/RecipesCommon.java @@ -403,7 +403,7 @@ public class RecipesCommon { } public static class MetaBlock { - + public Block block; public int meta; @@ -415,6 +415,14 @@ public class RecipesCommon { public MetaBlock(Block block) { this(block, 0); } + + public int getID() { + final int prime = 31; + int result = 1; + result = prime * result + Block.getIdFromBlock(block); + result = prime * result + meta; + return result; + } } } diff --git a/src/main/java/com/hbm/items/special/ItemDrop.java b/src/main/java/com/hbm/items/special/ItemDrop.java index 346057e97..ea1b7c368 100644 --- a/src/main/java/com/hbm/items/special/ItemDrop.java +++ b/src/main/java/com/hbm/items/special/ItemDrop.java @@ -16,6 +16,7 @@ import com.hbm.explosion.ExplosionChaos; import com.hbm.explosion.ExplosionLarge; import com.hbm.explosion.ExplosionNT; import com.hbm.explosion.ExplosionNT.ExAttrib; +import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.interfaces.IBomb; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; @@ -85,15 +86,12 @@ public class ItemDrop extends Item { if (stack.getItem() != null && stack.getItem() == ModItems.cell_antimatter && WeaponConfig.dropCell) { if (!entityItem.worldObj.isRemote) { - entityItem.worldObj.createExplosion(entityItem, entityItem.posX, entityItem.posY, - entityItem.posZ, 10.0F, true); + new ExplosionVNT(entityItem.worldObj, entityItem.posX, entityItem.posY, entityItem.posZ, 3F).makeAmat().explode(); } } if (stack.getItem() != null && stack.getItem() == ModItems.pellet_antimatter && WeaponConfig.dropCell) { if (!entityItem.worldObj.isRemote) { - new ExplosionNT(entityItem.worldObj, entityItem, entityItem.posX, entityItem.posY, entityItem.posZ, 30).overrideResolution(64).addAttrib(ExAttrib.FIRE).addAttrib(ExAttrib.NOSOUND).explode(); - ExplosionLarge.spawnParticles(entityItem.worldObj, entityItem.posX, entityItem.posY, entityItem.posZ, ExplosionLarge.cloudFunction(100)); - entityItem.worldObj.playSoundEffect(entityItem.posX, entityItem.posY, entityItem.posZ, "hbm:weapon.mukeExplosion", 15.0F, 1.0F); + new ExplosionVNT(entityItem.worldObj, entityItem.posX, entityItem.posY, entityItem.posZ, 20F).makeAmat().explode(); } } if (stack.getItem() != null && stack.getItem() == ModItems.cell_anti_schrabidium && WeaponConfig.dropCell) { diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index fff10aed4..5c628a20a 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -745,7 +745,6 @@ public class ClientProxy extends ServerProxy { @Deprecated @Override public void spawnParticle(double x, double y, double z, String type, float args[]) { - World world = Minecraft.getMinecraft().theWorld; TextureManager man = Minecraft.getMinecraft().renderEngine; @@ -789,6 +788,7 @@ public class ClientProxy extends ServerProxy { TextureManager man = Minecraft.getMinecraft().renderEngine; EntityPlayer player = Minecraft.getMinecraft().thePlayer; + int particleSetting = Minecraft.getMinecraft().gameSettings.particleSetting; Random rand = world.rand; String type = data.getString("type"); double x = data.getDouble("posX"); @@ -1095,6 +1095,9 @@ public class ClientProxy extends ServerProxy { if("jetpack".equals(type)) { + if(particleSetting == 2) + return; + Entity ent = world.getEntityByID(data.getInteger("player")); if(ent instanceof EntityPlayer) { @@ -1132,35 +1135,43 @@ public class ClientProxy extends ServerProxy { moZ -= look.zCoord * 0.1D; } - Vec3 pos = Vec3.createVectorHelper(ix, iy, iz); - Vec3 thrust = Vec3.createVectorHelper(moX, moY, moZ); - thrust = thrust.normalize(); - Vec3 target = pos.addVector(thrust.xCoord * 10, thrust.yCoord * 10, thrust.zCoord * 10); - MovingObjectPosition mop = player.worldObj.func_147447_a(pos, target, false, false, true); - - if(mop != null && mop.typeOfHit == MovingObjectType.BLOCK && mop.sideHit == 1) { + if(particleSetting == 0) { + Vec3 pos = Vec3.createVectorHelper(ix, iy, iz); + Vec3 thrust = Vec3.createVectorHelper(moX, moY, moZ); + thrust = thrust.normalize(); + Vec3 target = pos.addVector(thrust.xCoord * 10, thrust.yCoord * 10, thrust.zCoord * 10); + MovingObjectPosition mop = player.worldObj.func_147447_a(pos, target, false, false, true); - Block b = world.getBlock(mop.blockX, mop.blockY, mop.blockZ); - int meta = world.getBlockMetadata(mop.blockX, mop.blockY, mop.blockZ); - - Vec3 delta = Vec3.createVectorHelper(ix - mop.hitVec.xCoord, iy - mop.hitVec.yCoord, iz - mop.hitVec.zCoord); - Vec3 vel = Vec3.createVectorHelper(0.75 - delta.lengthVector() * 0.075, 0, 0); - - for(int i = 0; i < (10 - delta.lengthVector()); i++) { - vel.rotateAroundY(world.rand.nextFloat() * (float)Math.PI * 2F); - Minecraft.getMinecraft().effectRenderer.addEffect(new EntityBlockDustFX(world, mop.hitVec.xCoord, mop.hitVec.yCoord + 0.1, mop.hitVec.zCoord, vel.xCoord, 0.1, vel.zCoord, b, meta)); + if(mop != null && mop.typeOfHit == MovingObjectType.BLOCK && mop.sideHit == 1) { + + Block b = world.getBlock(mop.blockX, mop.blockY, mop.blockZ); + int meta = world.getBlockMetadata(mop.blockX, mop.blockY, mop.blockZ); + + Vec3 delta = Vec3.createVectorHelper(ix - mop.hitVec.xCoord, iy - mop.hitVec.yCoord, iz - mop.hitVec.zCoord); + Vec3 vel = Vec3.createVectorHelper(0.75 - delta.lengthVector() * 0.075, 0, 0); + + for(int i = 0; i < (10 - delta.lengthVector()); i++) { + vel.rotateAroundY(world.rand.nextFloat() * (float)Math.PI * 2F); + Minecraft.getMinecraft().effectRenderer.addEffect(new EntityBlockDustFX(world, mop.hitVec.xCoord, mop.hitVec.yCoord + 0.1, mop.hitVec.zCoord, vel.xCoord, 0.1, vel.zCoord, b, meta)); + } } } Minecraft.getMinecraft().effectRenderer.addEffect(new EntityFlameFX(world, ix + ox, iy, iz + oz, p.motionX + moX * 2, p.motionY + moY * 2, p.motionZ + moZ * 2)); Minecraft.getMinecraft().effectRenderer.addEffect(new EntityFlameFX(world, ix - ox, iy, iz - oz, p.motionX + moX * 2, p.motionY + moY * 2, p.motionZ + moZ * 2)); - Minecraft.getMinecraft().effectRenderer.addEffect(new net.minecraft.client.particle.EntitySmokeFX(world, ix + ox, iy, iz + oz, p.motionX + moX * 3, p.motionY + moY * 3, p.motionZ + moZ * 3)); - Minecraft.getMinecraft().effectRenderer.addEffect(new net.minecraft.client.particle.EntitySmokeFX(world, ix - ox, iy, iz - oz, p.motionX + moX * 3, p.motionY + moY * 3, p.motionZ + moZ * 3)); + + if(particleSetting == 0) { + Minecraft.getMinecraft().effectRenderer.addEffect(new net.minecraft.client.particle.EntitySmokeFX(world, ix + ox, iy, iz + oz, p.motionX + moX * 3, p.motionY + moY * 3, p.motionZ + moZ * 3)); + Minecraft.getMinecraft().effectRenderer.addEffect(new net.minecraft.client.particle.EntitySmokeFX(world, ix - ox, iy, iz - oz, p.motionX + moX * 3, p.motionY + moY * 3, p.motionZ + moZ * 3)); + } } } if("jetpack_bj".equals(type)) { + if(particleSetting == 2) + return; + Entity ent = world.getEntityByID(data.getInteger("player")); if(ent instanceof EntityPlayer) { @@ -1180,22 +1191,24 @@ public class ClientProxy extends ServerProxy { double ox = offset.xCoord; double oz = offset.zCoord; - Vec3 pos = Vec3.createVectorHelper(ix, iy, iz); - Vec3 thrust = Vec3.createVectorHelper(0, -1, 0); - Vec3 target = pos.addVector(thrust.xCoord * 10, thrust.yCoord * 10, thrust.zCoord * 10); - MovingObjectPosition mop = player.worldObj.func_147447_a(pos, target, false, false, true); - - if(mop != null && mop.typeOfHit == MovingObjectType.BLOCK && mop.sideHit == 1) { + if(particleSetting == 0) { + Vec3 pos = Vec3.createVectorHelper(ix, iy, iz); + Vec3 thrust = Vec3.createVectorHelper(0, -1, 0); + Vec3 target = pos.addVector(thrust.xCoord * 10, thrust.yCoord * 10, thrust.zCoord * 10); + MovingObjectPosition mop = player.worldObj.func_147447_a(pos, target, false, false, true); - Block b = world.getBlock(mop.blockX, mop.blockY, mop.blockZ); - int meta = world.getBlockMetadata(mop.blockX, mop.blockY, mop.blockZ); - - Vec3 delta = Vec3.createVectorHelper(ix - mop.hitVec.xCoord, iy - mop.hitVec.yCoord, iz - mop.hitVec.zCoord); - Vec3 vel = Vec3.createVectorHelper(0.75 - delta.lengthVector() * 0.075, 0, 0); - - for(int i = 0; i < (10 - delta.lengthVector()); i++) { - vel.rotateAroundY(world.rand.nextFloat() * (float)Math.PI * 2F); - Minecraft.getMinecraft().effectRenderer.addEffect(new EntityBlockDustFX(world, mop.hitVec.xCoord, mop.hitVec.yCoord + 0.1, mop.hitVec.zCoord, vel.xCoord, 0.1, vel.zCoord, b, meta)); + if(mop != null && mop.typeOfHit == MovingObjectType.BLOCK && mop.sideHit == 1) { + + Block b = world.getBlock(mop.blockX, mop.blockY, mop.blockZ); + int meta = world.getBlockMetadata(mop.blockX, mop.blockY, mop.blockZ); + + Vec3 delta = Vec3.createVectorHelper(ix - mop.hitVec.xCoord, iy - mop.hitVec.yCoord, iz - mop.hitVec.zCoord); + Vec3 vel = Vec3.createVectorHelper(0.75 - delta.lengthVector() * 0.075, 0, 0); + + for(int i = 0; i < (10 - delta.lengthVector()); i++) { + vel.rotateAroundY(world.rand.nextFloat() * (float)Math.PI * 2F); + Minecraft.getMinecraft().effectRenderer.addEffect(new EntityBlockDustFX(world, mop.hitVec.xCoord, mop.hitVec.yCoord + 0.1, mop.hitVec.zCoord, vel.xCoord, 0.1, vel.zCoord, b, meta)); + } } } @@ -1210,6 +1223,9 @@ public class ClientProxy extends ServerProxy { if("jetpack_dns".equals(type)) { + if(particleSetting == 2) + return; + Entity ent = world.getEntityByID(data.getInteger("player")); if(ent instanceof EntityPlayer) { @@ -1227,22 +1243,24 @@ public class ClientProxy extends ServerProxy { double ox = offset.xCoord; double oz = offset.zCoord; - Vec3 pos = Vec3.createVectorHelper(ix, iy, iz); - Vec3 thrust = Vec3.createVectorHelper(0, -1, 0); - Vec3 target = pos.addVector(thrust.xCoord * 10, thrust.yCoord * 10, thrust.zCoord * 10); - MovingObjectPosition mop = player.worldObj.func_147447_a(pos, target, false, false, true); - - if(mop != null && mop.typeOfHit == MovingObjectType.BLOCK && mop.sideHit == 1) { + if(particleSetting == 0) { + Vec3 pos = Vec3.createVectorHelper(ix, iy, iz); + Vec3 thrust = Vec3.createVectorHelper(0, -1, 0); + Vec3 target = pos.addVector(thrust.xCoord * 10, thrust.yCoord * 10, thrust.zCoord * 10); + MovingObjectPosition mop = player.worldObj.func_147447_a(pos, target, false, false, true); - Block b = world.getBlock(mop.blockX, mop.blockY, mop.blockZ); - int meta = world.getBlockMetadata(mop.blockX, mop.blockY, mop.blockZ); - - Vec3 delta = Vec3.createVectorHelper(ix - mop.hitVec.xCoord, iy - mop.hitVec.yCoord, iz - mop.hitVec.zCoord); - Vec3 vel = Vec3.createVectorHelper(0.75 - delta.lengthVector() * 0.075, 0, 0); - - for(int i = 0; i < (10 - delta.lengthVector()); i++) { - vel.rotateAroundY(world.rand.nextFloat() * (float)Math.PI * 2F); - Minecraft.getMinecraft().effectRenderer.addEffect(new EntityBlockDustFX(world, mop.hitVec.xCoord, mop.hitVec.yCoord + 0.1, mop.hitVec.zCoord, vel.xCoord, 0.1, vel.zCoord, b, meta)); + if(mop != null && mop.typeOfHit == MovingObjectType.BLOCK && mop.sideHit == 1) { + + Block b = world.getBlock(mop.blockX, mop.blockY, mop.blockZ); + int meta = world.getBlockMetadata(mop.blockX, mop.blockY, mop.blockZ); + + Vec3 delta = Vec3.createVectorHelper(ix - mop.hitVec.xCoord, iy - mop.hitVec.yCoord, iz - mop.hitVec.zCoord); + Vec3 vel = Vec3.createVectorHelper(0.75 - delta.lengthVector() * 0.075, 0, 0); + + for(int i = 0; i < (10 - delta.lengthVector()); i++) { + vel.rotateAroundY(world.rand.nextFloat() * (float)Math.PI * 2F); + Minecraft.getMinecraft().effectRenderer.addEffect(new EntityBlockDustFX(world, mop.hitVec.xCoord, mop.hitVec.yCoord + 0.1, mop.hitVec.zCoord, vel.xCoord, 0.1, vel.zCoord, b, meta)); + } } } @@ -1372,7 +1390,7 @@ public class ClientProxy extends ServerProxy { if("vomit".equals(type)) { Entity e = world.getEntityByID(data.getInteger("entity")); - int count = data.getInteger("count"); + int count = data.getInteger("count") / (particleSetting + 1); if(e instanceof EntityLivingBase) { @@ -1453,12 +1471,13 @@ public class ClientProxy extends ServerProxy { fx.setLift(data.getFloat("lift")); fx.setBaseScale(data.getFloat("base")); fx.setMaxScale(data.getFloat("max")); - fx.setLife(data.getInteger("life")); + fx.setLife(data.getInteger("life") / (particleSetting + 1)); Minecraft.getMinecraft().effectRenderer.addEffect(fx); } if("deadleaf".equals(type)) { - Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleDeadLeaf(man, world, x, y, z)); + if(particleSetting == 0 || (particleSetting == 1 && rand.nextBoolean())) + Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleDeadLeaf(man, world, x, y, z)); } if("anim".equals(type)) { @@ -1534,6 +1553,10 @@ public class ClientProxy extends ServerProxy { } } } + + if("amat".equals(type)) { + Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleAmatFlash(world, x, y, z, data.getFloat("scale"))); + } } private HashMap vanished = new HashMap(); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 3ce1ded4d..6b61f7746 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -5,6 +5,7 @@ import net.minecraft.creativetab.CreativeTabs; import net.minecraft.dispenser.BehaviorProjectileDispense; import net.minecraft.dispenser.IPosition; import net.minecraft.entity.IProjectile; +import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.Item.ToolMaterial; @@ -71,6 +72,7 @@ import com.hbm.tileentity.bomb.TileEntityNukeCustom; import com.hbm.tileentity.machine.*; import com.hbm.tileentity.machine.rbmk.RBMKDials; import com.hbm.util.ArmorUtil; +import com.hbm.world.feature.OreLayer; import com.hbm.world.feature.SchistStratum; import com.hbm.world.generator.CellularDungeonFactory; @@ -988,6 +990,8 @@ public class MainRegistry { SchistStratum schist = new SchistStratum(); MinecraftForge.EVENT_BUS.register(schist); //DecorateBiomeEvent.Pre + new OreLayer(Blocks.coal_ore, 0.2F).setThreshold(4).setRangeMult(3).setYLevel(70); + OreDictManager oreMan = new OreDictManager(); MinecraftForge.EVENT_BUS.register(oreMan); //OreRegisterEvent diff --git a/src/main/java/com/hbm/particle/ParticleAmatFlash.java b/src/main/java/com/hbm/particle/ParticleAmatFlash.java new file mode 100644 index 000000000..f7432e305 --- /dev/null +++ b/src/main/java/com/hbm/particle/ParticleAmatFlash.java @@ -0,0 +1,145 @@ +package com.hbm.particle; + +import java.util.Random; + +import org.lwjgl.opengl.GL11; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.particle.EntityFX; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.world.World; + +@SideOnly(Side.CLIENT) +public class ParticleAmatFlash extends EntityFX { + + public ParticleAmatFlash(World world, double x, double y, double z, float scale) { + super(world, x, y, z); + this.particleMaxAge = 10; + this.particleScale = scale; + } + + public int getFXLayer() { + return 3; + } + + public void renderParticle(Tessellator tess, float interp, float x, float y, float z, float tx, float tz) { + + float pX = (float) ((this.prevPosX + (this.posX - this.prevPosX) * (double) interp - interpPosX)); + float pY = (float) ((this.prevPosY + (this.posY - this.prevPosY) * (double) interp - interpPosY)); + float pZ = (float) ((this.prevPosZ + (this.posZ - this.prevPosZ) * (double) interp - interpPosZ)); + + GL11.glTranslatef(pX, pY, pZ); + + GL11.glScalef(0.2F * particleScale, 0.2F * particleScale, 0.2F * particleScale); + + double intensity = (double) (this.particleAge + interp) / (double) this.particleMaxAge; + double inverse = 1.0D - intensity; + + Tessellator tessellator = Tessellator.instance; + RenderHelper.disableStandardItemLighting(); + + Random random = new Random(432L); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glShadeModel(GL11.GL_SMOOTH); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + GL11.glDisable(GL11.GL_ALPHA_TEST); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glDepthMask(false); + + GL11.glPushMatrix(); + + float scale = 0.5F; + + for(int i = 0; i < 100; i++) { + + GL11.glRotatef(random.nextFloat() * 360.0F, 1.0F, 0.0F, 0.0F); + GL11.glRotatef(random.nextFloat() * 360.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(random.nextFloat() * 360.0F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(random.nextFloat() * 360.0F, 1.0F, 0.0F, 0.0F); + GL11.glRotatef(random.nextFloat() * 360.0F, 0.0F, 1.0F, 0.0F); + + float vert1 = (random.nextFloat() * 20.0F + 5.0F + 1 * 10.0F) * (float) (intensity * scale); + float vert2 = (random.nextFloat() * 2.0F + 1.0F + 1 * 2.0F) * (float) (intensity * scale); + + tessellator.startDrawing(6); + + tessellator.setColorRGBA_F(1.0F, 1.0F, 1.0F, (float) inverse); + tessellator.addVertex(0.0D, 0.0D, 0.0D); + tessellator.setColorRGBA_F(1.0F, 1.0F, 1.0F, 0.0F); + tessellator.addVertex(-0.866D * vert2, vert1, -0.5F * vert2); + tessellator.addVertex(0.866D * vert2, vert1, -0.5F * vert2); + tessellator.addVertex(0.0D, vert1, 1.0F * vert2); + tessellator.addVertex(-0.866D * vert2, vert1, -0.5F * vert2); + tessellator.draw(); + } + + GL11.glPopMatrix(); + + GL11.glDepthMask(true); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glDisable(GL11.GL_BLEND); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glEnable(GL11.GL_ALPHA_TEST); + RenderHelper.enableStandardItemLighting(); + + /*GL11.glScalef(0.2F * particleScale, 0.2F * particleScale, 0.2F * particleScale); + + double intensity = (double) this.particleAge / (double) this.particleMaxAge; + double inverse = 1.0D - intensity; + + Tessellator tessellator = Tessellator.instance; + RenderHelper.disableStandardItemLighting(); + + Random random = new Random(432L); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glShadeModel(GL11.GL_SMOOTH); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + GL11.glDisable(GL11.GL_ALPHA_TEST); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glDepthMask(false); + + GL11.glPushMatrix(); + + float scale = 0.002F; + + for(int i = 0; i < 300; i++) { + + GL11.glRotatef(random.nextFloat() * 360.0F, 1.0F, 0.0F, 0.0F); + GL11.glRotatef(random.nextFloat() * 360.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(random.nextFloat() * 360.0F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(random.nextFloat() * 360.0F, 1.0F, 0.0F, 0.0F); + GL11.glRotatef(random.nextFloat() * 360.0F, 0.0F, 1.0F, 0.0F); + + float vert1 = (random.nextFloat() * 20.0F + 5.0F + 1 * 10.0F) * (float) (intensity * scale); + float vert2 = (random.nextFloat() * 2.0F + 1.0F + 1 * 2.0F) * (float) (intensity * scale); + + tessellator.startDrawing(6); + + tessellator.setColorRGBA_F(1.0F, 1.0F, 1.0F, (float) inverse); + tessellator.addVertex(x + 0.0D, y + 0.0D, z + 0.0D); + tessellator.setColorRGBA_F(1.0F, 1.0F, 1.0F, 0.0F); + tessellator.addVertex(-0.866D * vert2, vert1, -0.5F * vert2); + tessellator.addVertex(0.866D * vert2, vert1, -0.5F * vert2); + tessellator.addVertex(0.0D, vert1, 1.0F * vert2); + tessellator.addVertex(-0.866D * vert2, vert1, -0.5F * vert2); + tessellator.draw(); + } + + GL11.glPopMatrix(); + + GL11.glDepthMask(true); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glDisable(GL11.GL_BLEND); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glEnable(GL11.GL_ALPHA_TEST); + RenderHelper.enableStandardItemLighting();*/ + } +} diff --git a/src/main/java/com/hbm/world/feature/OreLayer.java b/src/main/java/com/hbm/world/feature/OreLayer.java new file mode 100644 index 000000000..24bb9ecd3 --- /dev/null +++ b/src/main/java/com/hbm/world/feature/OreLayer.java @@ -0,0 +1,109 @@ +package com.hbm.world.feature; + +import java.util.Random; + +import com.hbm.inventory.RecipesCommon.MetaBlock; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.PlayerInformPacket; + +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import net.minecraft.block.Block; +import net.minecraft.init.Blocks; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; +import net.minecraft.world.gen.NoiseGeneratorPerlin; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.terraingen.DecorateBiomeEvent; + +public class OreLayer { + + private NoiseGeneratorPerlin noise; + private MetaBlock ore; + private Block target; + private float density; + /** The number that is being deducted flat from the result of the perlin noise before all other processing. Increase this to make strata rarer. */ + private int threshold = 5; + /** The mulitplier for the remaining bit after the threshold has been deducted. Increase to make strata wavier. */ + private int rangeMult = 3; + /** The maximum range after multiplying - anything above this will be subtracted from (maxRange * 2) to yield the proper range. Increase this to make strata thicker. */ + private int maxRange = 4; + /** The y-level around which the stratum is centered. */ + private int yLevel = 30; + + public OreLayer(Block ore, float density) { + this(ore, 0, Blocks.stone, density); + } + + public OreLayer(Block ore, int meta, Block target, float density) { + this.ore = new MetaBlock(ore, meta); + this.target = target; + this.density = density; + MinecraftForge.EVENT_BUS.register(this); + } + + public OreLayer setThreshold(int threshold) { + this.threshold = threshold; + return this; + } + + public OreLayer setRangeMult(int rangeMult) { + this.rangeMult = rangeMult; + return this; + } + + public OreLayer setMaxRange(int maxRange) { + this.maxRange = maxRange; + return this; + } + + public OreLayer setYLevel(int yLevel) { + this.yLevel = yLevel; + return this; + } + + @SubscribeEvent + public void onDecorate(DecorateBiomeEvent.Pre event) { + + if(this.noise == null) { + this.noise = new NoiseGeneratorPerlin(new Random(event.world.getSeed() + (ore.getID() * 31) + yLevel), 4); + } + + World world = event.world; + + if(world.provider.dimensionId != 0) + return; + + int cX = event.chunkX; + int cZ = event.chunkZ; + + double scale = 0.01D; + + for(int x = cX; x < cX + 16; x++) { + for(int z = cZ; z < cZ + 16; z++) { + + double n = noise.func_151601_a(x * scale, z * scale); + + if(n > threshold) { + int range = (int)((n - threshold) * rangeMult); + + if(range > maxRange) + range = (maxRange * 2) - range; + + if(range < 0) + continue; + + for(int y = yLevel - range; y <= yLevel + range; y++) { + + if(event.rand.nextFloat() < density) { + Block genTarget = world.getBlock(x, y, z); + + if(genTarget.isReplaceableOreGen(world, x, y, z, target)) { + world.setBlock(x, y, z, ore.block, ore.meta, 2); + } + } + } + } + } + } + } +} From 8c36f6e36d3fcb6cf3d1634785f22b4f4257d714 Mon Sep 17 00:00:00 2001 From: Bob Date: Fri, 18 Mar 2022 16:44:38 +0100 Subject: [PATCH 08/10] power diodes with configurable throughput --- src/main/java/api/hbm/energy/PowerNet.java | 11 +- src/main/java/com/hbm/blocks/ModBlocks.java | 3 + .../hbm/blocks/machine/MachineBattery.java | 179 ++++++++-------- .../machine/MachineCatalyticCracker.java | 2 +- .../com/hbm/blocks/machine/MachineFENSU.java | 29 ++- .../blocks/machine/MachineFractionTower.java | 2 +- .../com/hbm/blocks/network/CableDiode.java | 202 ++++++++++++++++++ .../container/ContainerStorageDrum.java | 6 +- .../container/ContainerWasteDrum.java | 5 +- src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/CraftingManager.java | 1 + .../render/block/RenderBlockMultipass.java | 2 +- .../com/hbm/render/block/RenderDiode.java | 156 ++++++++++++++ .../java/com/hbm/tileentity/TileMappings.java | 2 + .../network/TileEntityCableBaseNT.java | 2 +- src/main/java/com/hbm/util/InventoryUtil.java | 57 +++-- src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + .../hbm/textures/blocks/cable_diode.png | Bin 0 -> 403 bytes 19 files changed, 537 insertions(+), 125 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/network/CableDiode.java create mode 100644 src/main/java/com/hbm/render/block/RenderDiode.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/cable_diode.png diff --git a/src/main/java/api/hbm/energy/PowerNet.java b/src/main/java/api/hbm/energy/PowerNet.java index dcf0f843a..97af6d4b4 100644 --- a/src/main/java/api/hbm/energy/PowerNet.java +++ b/src/main/java/api/hbm/energy/PowerNet.java @@ -105,19 +105,24 @@ public class PowerNet implements IPowerNet { if(this.subscribers.isEmpty()) return power; + List subList = new ArrayList(subscribers); + List weight = new ArrayList(); long totalReq = 0; - for(IEnergyConnector con : this.subscribers) { + for(IEnergyConnector con : subList) { long req = con.getTransferWeight(); weight.add(req); totalReq += req; } + if(totalReq == 0) + return power; + long totalGiven = 0; - for(int i = 0; i < this.subscribers.size(); i++) { - IEnergyConnector con = this.subscribers.get(i); + for(int i = 0; i < subList.size(); i++) { + IEnergyConnector con = subList.get(i); long req = weight.get(i); double fraction = (double)req / (double)totalReq; diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 3becf77ae..aee4890f9 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -716,6 +716,7 @@ public class ModBlocks { public static Block substation; public static Block cable_switch; public static Block cable_detector; + public static Block cable_diode; public static Block machine_detector; public static Block rf_cable; public static Block oil_duct_solid; @@ -1833,6 +1834,7 @@ public class ModBlocks { substation = new Substation(Material.iron).setBlockName("substation").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":substation"); cable_switch = new CableSwitch(Material.iron).setBlockName("cable_switch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); cable_detector = new CableDetector(Material.iron).setBlockName("cable_detector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + cable_diode = new CableDiode(Material.iron).setBlockName("cable_diode").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":cable_diode"); machine_detector = new PowerDetector(Material.iron).setBlockName("machine_detector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_detector_off"); oil_duct_solid = new OilDuctSolid(Material.iron).setBlockName("oil_duct_solid").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":oil_duct_solid_alt"); oil_duct = new BlockOilDuct(Material.iron).setBlockName("oil_duct").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":oil_duct_icon_alt"); @@ -2935,6 +2937,7 @@ public class ModBlocks { GameRegistry.registerBlock(substation, ItemBlockBase.class, substation.getUnlocalizedName()); GameRegistry.registerBlock(cable_switch, cable_switch.getUnlocalizedName()); GameRegistry.registerBlock(cable_detector, cable_detector.getUnlocalizedName()); + GameRegistry.registerBlock(cable_diode, cable_diode.getUnlocalizedName()); GameRegistry.registerBlock(machine_detector, machine_detector.getUnlocalizedName()); GameRegistry.registerBlock(rf_cable, rf_cable.getUnlocalizedName()); GameRegistry.registerBlock(oil_duct, oil_duct.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/machine/MachineBattery.java b/src/main/java/com/hbm/blocks/machine/MachineBattery.java index 514254660..9645a5335 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineBattery.java +++ b/src/main/java/com/hbm/blocks/machine/MachineBattery.java @@ -1,12 +1,17 @@ package com.hbm.blocks.machine; +import java.util.ArrayList; +import java.util.List; import java.util.Random; +import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ModBlocks; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityDiFurnace; import com.hbm.tileentity.machine.storage.TileEntityMachineBattery; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; @@ -25,13 +30,14 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; -public class MachineBattery extends BlockContainer { +public class MachineBattery extends BlockContainer implements ILookOverlay { - private final Random field_149933_a = new Random(); + private final Random field_149933_a = new Random(); private static boolean keepInventory; public long maxPower; - + @SideOnly(Side.CLIENT) private IIcon iconTop; @SideOnly(Side.CLIENT) @@ -41,7 +47,7 @@ public class MachineBattery extends BlockContainer { super(p_i45386_1_); this.maxPower = maxPower; } - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { @@ -71,84 +77,73 @@ public class MachineBattery extends BlockContainer { this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":battery_dineutronium_side"); } } - + @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int metadata) { - + if(side == 0 || side == 1) return iconTop; - + return metadata == 0 && side == 3 ? this.iconFront : (side == metadata ? this.iconFront : this.blockIcon); } - + @Override - public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) - { - return Item.getItemFromBlock(this); - } - + public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { + return Item.getItemFromBlock(this); + } + @Override public void onBlockAdded(World world, int x, int y, int z) { super.onBlockAdded(world, x, y, z); this.setDefaultDirection(world, x, y, z); } - + private void setDefaultDirection(World world, int x, int y, int z) { - if(!world.isRemote) - { + if(!world.isRemote) { Block block1 = world.getBlock(x, y, z - 1); Block block2 = world.getBlock(x, y, z + 1); Block block3 = world.getBlock(x - 1, y, z); Block block4 = world.getBlock(x + 1, y, z); - + byte b0 = 3; - - if(block1.func_149730_j() && !block2.func_149730_j()) - { + + if(block1.func_149730_j() && !block2.func_149730_j()) { b0 = 3; } - if(block2.func_149730_j() && !block1.func_149730_j()) - { + if(block2.func_149730_j() && !block1.func_149730_j()) { b0 = 2; } - if(block3.func_149730_j() && !block4.func_149730_j()) - { + if(block3.func_149730_j() && !block4.func_149730_j()) { b0 = 5; } - if(block4.func_149730_j() && !block3.func_149730_j()) - { + if(block4.func_149730_j() && !block3.func_149730_j()) { b0 = 4; } - + world.setBlockMetadataWithNotify(x, y, z, b0, 2); } } - + @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - - if(i == 0) - { + + if(i == 0) { world.setBlockMetadataWithNotify(x, y, z, 2, 2); } - if(i == 1) - { + if(i == 1) { world.setBlockMetadataWithNotify(x, y, z, 5, 2); } - if(i == 2) - { + if(i == 2) { world.setBlockMetadataWithNotify(x, y, z, 3, 2); } - if(i == 3) - { + if(i == 3) { world.setBlockMetadataWithNotify(x, y, z, 4, 2); } - - if(itemStack.hasDisplayName()) - { - ((TileEntityDiFurnace)world.getTileEntity(x, y, z)).setCustomName(itemStack.getDisplayName()); + + if(itemStack.hasDisplayName()) { + ((TileEntityDiFurnace) world.getTileEntity(x, y, z)).setCustomName(itemStack.getDisplayName()); } } @@ -156,17 +151,14 @@ public class MachineBattery extends BlockContainer { public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { return new TileEntityMachineBattery(); } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - if(world.isRemote) - { + if(world.isRemote) { return true; - } else if(!player.isSneaking()) - { + } else if(!player.isSneaking()) { TileEntityMachineBattery entity = (TileEntityMachineBattery) world.getTileEntity(x, y, z); - if(entity != null) - { + if(entity != null) { FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_machine_battery, world, x, y, z); } return true; @@ -174,57 +166,64 @@ public class MachineBattery extends BlockContainer { return false; } } - + @Override - public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) - { - if (!keepInventory) - { - TileEntityMachineBattery tileentityfurnace = (TileEntityMachineBattery)p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_); + public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) { + if(!keepInventory) { + TileEntityMachineBattery tileentityfurnace = (TileEntityMachineBattery) p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_); - if (tileentityfurnace != null) - { - for (int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) - { - ItemStack itemstack = tileentityfurnace.getStackInSlot(i1); + if(tileentityfurnace != null) { + for(int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) { + ItemStack itemstack = tileentityfurnace.getStackInSlot(i1); - if (itemstack != null) - { - float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; + if(itemstack != null) { + float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F; + float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; + float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - while (itemstack.stackSize > 0) - { - int j1 = this.field_149933_a.nextInt(21) + 10; + while(itemstack.stackSize > 0) { + int j1 = this.field_149933_a.nextInt(21) + 10; - if (j1 > itemstack.stackSize) - { - j1 = itemstack.stackSize; - } + if(j1 > itemstack.stackSize) { + j1 = itemstack.stackSize; + } - itemstack.stackSize -= j1; - EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); + itemstack.stackSize -= j1; + EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); - if (itemstack.hasTagCompound()) - { - entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy()); - } + if(itemstack.hasTagCompound()) { + entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy()); + } - float f3 = 0.05F; - entityitem.motionX = (float)this.field_149933_a.nextGaussian() * f3; - entityitem.motionY = (float)this.field_149933_a.nextGaussian() * f3 + 0.2F; - entityitem.motionZ = (float)this.field_149933_a.nextGaussian() * f3; - p_149749_1_.spawnEntityInWorld(entityitem); - } - } - } + float f3 = 0.05F; + entityitem.motionX = (float) this.field_149933_a.nextGaussian() * f3; + entityitem.motionY = (float) this.field_149933_a.nextGaussian() * f3 + 0.2F; + entityitem.motionZ = (float) this.field_149933_a.nextGaussian() * f3; + p_149749_1_.spawnEntityInWorld(entityitem); + } + } + } - p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_); - } - } + p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_); + } + } - super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_); - } + super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_); + } + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityMachineBattery)) + return; + + TileEntityMachineBattery battery = (TileEntityMachineBattery) te; + + List text = new ArrayList(); + text.add(BobMathUtil.getShortNumber(battery.getPower()) + " / " + BobMathUtil.getShortNumber(battery.getMaxPower()) + "HE"); + + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineCatalyticCracker.java b/src/main/java/com/hbm/blocks/machine/MachineCatalyticCracker.java index 35e736269..ca0a23746 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCatalyticCracker.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCatalyticCracker.java @@ -132,6 +132,6 @@ public class MachineCatalyticCracker extends BlockDummyable implements ILookOver for(int i = 0; i < cracker.tanks.length; i++) text.add((i < 2 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + cracker.tanks[i].getTankType().getName().toLowerCase()) + ": " + cracker.tanks[i].getFill() + "/" + cracker.tanks[i].getMaxFill() + "mB"); - ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x808000, text); + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineFENSU.java b/src/main/java/com/hbm/blocks/machine/MachineFENSU.java index d541e34d0..09a02e295 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineFENSU.java +++ b/src/main/java/com/hbm/blocks/machine/MachineFENSU.java @@ -1,17 +1,25 @@ package com.hbm.blocks.machine; +import java.util.ArrayList; +import java.util.List; + import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ModBlocks; import com.hbm.main.MainRegistry; +import com.hbm.tileentity.machine.storage.TileEntityMachineBattery; import com.hbm.tileentity.machine.storage.TileEntityMachineFENSU; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; 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.client.event.RenderGameOverlayEvent.Pre; -public class MachineFENSU extends BlockDummyable { +public class MachineFENSU extends BlockDummyable implements ILookOverlay { public MachineFENSU(Material mat) { super(mat); @@ -58,4 +66,23 @@ public class MachineFENSU extends BlockDummyable { } } + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return; + + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); + + if(!(te instanceof TileEntityMachineBattery)) + return; + + TileEntityMachineBattery battery = (TileEntityMachineBattery) te; + + List text = new ArrayList(); + text.add(BobMathUtil.getShortNumber(battery.getPower()) + " / " + BobMathUtil.getShortNumber(battery.getMaxPower()) + "HE"); + + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineFractionTower.java b/src/main/java/com/hbm/blocks/machine/MachineFractionTower.java index 2ad23d0b7..10aaaa6aa 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineFractionTower.java +++ b/src/main/java/com/hbm/blocks/machine/MachineFractionTower.java @@ -118,6 +118,6 @@ public class MachineFractionTower extends BlockDummyable implements ILookOverlay for(int i = 0; i < cracker.tanks.length; i++) text.add((i == 0 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + cracker.tanks[i].getTankType().getName().toLowerCase()) + ": " + cracker.tanks[i].getFill() + "/" + cracker.tanks[i].getMaxFill() + "mB"); - ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x808000, text); + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } } diff --git a/src/main/java/com/hbm/blocks/network/CableDiode.java b/src/main/java/com/hbm/blocks/network/CableDiode.java new file mode 100644 index 000000000..11fa8ffb8 --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/CableDiode.java @@ -0,0 +1,202 @@ +package com.hbm.blocks.network; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ILookOverlay; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; + +import api.hbm.block.IToolable; +import api.hbm.energy.IEnergyUser; +import cpw.mods.fml.client.registry.RenderingRegistry; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.BlockPistonBase; +import net.minecraft.block.material.Material; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; +import net.minecraftforge.common.util.ForgeDirection; + +public class CableDiode extends BlockContainer implements ILookOverlay, IToolable, ITooltipProvider { + + public CableDiode(Material mat) { + super(mat); + } + + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + + @Override + public int getRenderType() { + return renderID; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { + int l = BlockPistonBase.determineOrientation(world, x, y, z, player); + world.setBlockMetadataWithNotify(x, y, z, l, 2); + } + + @Override + public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { + + TileEntityDiode te = (TileEntityDiode)world.getTileEntity(x, y, z); + + if(world.isRemote) + return true; + + if(tool == ToolType.SCREWDRIVER) { + if(te.level < 11) + te.level++; + te.markDirty(); + world.markBlockForUpdate(x, y, z); + return true; + } + + if(tool == ToolType.HAND_DRILL) { + if(te.level > 1) + te.level--; + te.markDirty(); + world.markBlockForUpdate(x, y, z); + return true; + } + + return false; + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + list.add(EnumChatFormatting.GOLD + "Limits throughput and restricts flow direction"); + list.add(EnumChatFormatting.YELLOW + "Use screwdriver to increase throughput"); + list.add(EnumChatFormatting.YELLOW + "Use hand drill to decrease throughput"); + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityDiode)) + return; + + TileEntityDiode diode = (TileEntityDiode) te; + + List text = new ArrayList(); + text.add("Max.: " + BobMathUtil.getShortNumber(diode.getMaxPower()) + "HE/pulse"); + + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityDiode(); + } + + public static class TileEntityDiode extends TileEntity implements IEnergyUser { + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + level = nbt.getInteger("level"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setInteger("level", level); + } + + @Override + public Packet getDescriptionPacket() { + NBTTagCompound nbt = new NBTTagCompound(); + this.writeToNBT(nbt); + return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbt); + } + + @Override + public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { + this.readFromNBT(pkt.func_148857_g()); + } + + int level = 1; + + private ForgeDirection getDir() { + return ForgeDirection.getOrientation(this.getBlockMetadata()).getOpposite(); + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + + if(dir == getDir()) + continue; + + this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); + } + } + } + + private boolean recursionBrake = false; + private long subBuffer; + + @Override + public long transferPower(long power) { + + if(recursionBrake) + return power; + + //this part turns "maxPower" from a glorified transfer weight into an actual transfer cap + long overShoot = Math.max(0, power - getMaxPower()); + power = Math.min(power, getMaxPower()); + + recursionBrake = true; + this.subBuffer = power; + + ForgeDirection dir = getDir(); + this.sendPower(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); + long ret = this.subBuffer; + + this.subBuffer = 0; + recursionBrake = false; + + return ret + overShoot; + } + + + @Override + public long getMaxPower() { + return (long) Math.pow(10, level); + } + + @Override + public long getPower() { + return subBuffer; + } + + @Override + public void setPower(long power) { + this.subBuffer = power; + } + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerStorageDrum.java b/src/main/java/com/hbm/inventory/container/ContainerStorageDrum.java index 52625ab88..022726ce8 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerStorageDrum.java +++ b/src/main/java/com/hbm/inventory/container/ContainerStorageDrum.java @@ -1,6 +1,7 @@ package com.hbm.inventory.container; import com.hbm.tileentity.machine.TileEntityStorageDrum; +import com.hbm.util.InventoryUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; @@ -47,10 +48,11 @@ public class ContainerStorageDrum extends Container { var3 = var5.copy(); if(par2 <= drum.getSizeInventory() - 1) { - if(!this.mergeItemStack(var5, drum.getSizeInventory(), this.inventorySlots.size(), true)) { + + if(!InventoryUtil.mergeItemStack(this.inventorySlots, var5, drum.getSizeInventory(), this.inventorySlots.size(), true)) { return null; } - } else if(!this.mergeItemStack(var5, 0, drum.getSizeInventory(), false)) { + } else if(!InventoryUtil.mergeItemStack(this.inventorySlots, var5, 0, drum.getSizeInventory(), false)) { return null; } diff --git a/src/main/java/com/hbm/inventory/container/ContainerWasteDrum.java b/src/main/java/com/hbm/inventory/container/ContainerWasteDrum.java index d9687bfdb..e3e3f390e 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerWasteDrum.java +++ b/src/main/java/com/hbm/inventory/container/ContainerWasteDrum.java @@ -1,6 +1,7 @@ package com.hbm.inventory.container; import com.hbm.tileentity.machine.TileEntityWasteDrum; +import com.hbm.util.InventoryUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; @@ -52,10 +53,10 @@ public class ContainerWasteDrum extends Container { var3 = var5.copy(); if(par2 <= diFurnace.getSizeInventory() - 1) { - if(!this.mergeItemStack(var5, diFurnace.getSizeInventory(), this.inventorySlots.size(), true)) { + if(!InventoryUtil.mergeItemStack(this.inventorySlots, var5, diFurnace.getSizeInventory(), this.inventorySlots.size(), true)) { return null; } - } else if(!this.mergeItemStack(var5, 0, 0, false)) { + } else if(!InventoryUtil.mergeItemStack(this.inventorySlots, var5, 0, 0, false)) { return null; } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 5c628a20a..1ef89f1e9 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -654,6 +654,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerBlockHandler(new RenderBlockCT()); RenderingRegistry.registerBlockHandler(new RenderDetCord()); RenderingRegistry.registerBlockHandler(new RenderBlockMultipass()); + RenderingRegistry.registerBlockHandler(new RenderDiode()); RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_dynamite.getRenderType(), ResourceManager.charge_dynamite)); RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_c4.getRenderType(), ResourceManager.charge_c4)); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index a04e18cb1..ab51cbad6 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -240,6 +240,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.red_wire_coated), 16), new Object[] { "WRW", "RIR", "WRW", 'W', ModItems.plate_polymer, 'I', MINGRADE.ingot(), 'R', ModItems.wire_red_copper }); addRecipeAuto(new ItemStack(ModBlocks.cable_switch, 1), new Object[] { "S", "W", 'S', Blocks.lever, 'W', ModBlocks.red_wire_coated }); addRecipeAuto(new ItemStack(ModBlocks.cable_detector, 1), new Object[] { "S", "W", 'S', REDSTONE.dust(), 'W', ModBlocks.red_wire_coated }); + addRecipeAuto(new ItemStack(ModBlocks.cable_diode, 1), new Object[] { " Q ", "CAC", " Q ", 'Q', NETHERQUARTZ.gem(), 'C', ModBlocks.red_cable, 'A', AL.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.machine_detector, 1), new Object[] { "IRI", "CTC", "IRI", 'I', ModItems.plate_polymer, 'R', REDSTONE.dust(), 'C', ModItems.wire_red_copper, 'T', ModItems.coil_tungsten }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.red_cable), 16), new Object[] { " W ", "RRR", " W ", 'W', ModItems.plate_polymer, 'R', ModItems.wire_red_copper }); addRecipeAuto(new ItemStack(ModBlocks.red_connector, 4), new Object[] { "C", "I", "S", 'C', ModItems.coil_copper, 'I', ModItems.plate_polymer, 'S', STEEL.ingot() }); diff --git a/src/main/java/com/hbm/render/block/RenderBlockMultipass.java b/src/main/java/com/hbm/render/block/RenderBlockMultipass.java index e5d860629..bd4090f1e 100644 --- a/src/main/java/com/hbm/render/block/RenderBlockMultipass.java +++ b/src/main/java/com/hbm/render/block/RenderBlockMultipass.java @@ -66,7 +66,7 @@ public class RenderBlockMultipass implements ISimpleBlockRenderingHandler { public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { Tessellator tessellator = Tessellator.instance; - int meta = world.getBlockMetadata(x, y, z); + //int meta = world.getBlockMetadata(x, y, z); tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); diff --git a/src/main/java/com/hbm/render/block/RenderDiode.java b/src/main/java/com/hbm/render/block/RenderDiode.java new file mode 100644 index 000000000..684db58fd --- /dev/null +++ b/src/main/java/com/hbm/render/block/RenderDiode.java @@ -0,0 +1,156 @@ +package com.hbm.render.block; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.network.CableDiode; +import com.hbm.lib.Library; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraftforge.client.model.obj.WavefrontObject; + +public class RenderDiode implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + GL11.glPushMatrix(); + Tessellator tessellator = Tessellator.instance; + block.setBlockBoundsForItemRender(); + renderer.setRenderBoundsFromBlock(block); + GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F); + GL11.glTranslatef(-0.5F, -0.625F, -0.5F); + + IIcon iiconPad = ModBlocks.hadron_coil_alloy.getIcon(0, 0); + IIcon iconCable = ModBlocks.red_cable.getIcon(0, 0); + tessellator.setColorOpaque_F(1, 1, 1); + + for(int i = 0; i< 2; i++) { + + if(i == 0) { + renderer.setRenderBounds( 0D, 0.875D, 0D, 1D, 1D, 1D); + } else { + + renderer.setOverrideBlockTexture(iiconPad); + double radius = 0.375D; + renderer.setRenderBounds(0.5D - radius, 0.5D - radius, 0.5D - radius, 0.5D + radius, 0.5D + radius, 0.5D + radius); + } + + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, -1.0F, 0.0F); + renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 0, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 1.0F, 0.0F); + renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 1, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, -1.0F); + renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 2, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, 1.0F); + renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 3, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(-1.0F, 0.0F, 0.0F); + renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 4, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(1.0F, 0.0F, 0.0F); + renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 5, metadata)); + tessellator.draw(); + } + + GL11.glTranslatef(0.5F, 0.5F, 0.5F); + GL11.glRotated(180, 0, 1, 0); + + tessellator.startDrawingQuads(); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "posX", iconCable, tessellator, 0, false); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "negX", iconCable, tessellator, 0, false); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "negY", iconCable, tessellator, 0, false); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "posZ", iconCable, tessellator, 0, false); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "negZ", iconCable, tessellator, 0, false); + tessellator.draw(); + + renderer.clearOverrideBlockTexture(); + + GL11.glPopMatrix(); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + + Tessellator tessellator = Tessellator.instance; + IIcon iiconPad = ModBlocks.hadron_coil_alloy.getIcon(0, 0); + IIcon iconCable = ModBlocks.red_cable.getIcon(0, 0); + int meta = world.getBlockMetadata(x, y, z); + tessellator.setColorOpaque_F(1, 1, 1); + + double width = 0.875D; + renderer.setRenderBounds( + 0D + (meta == 4 ? width : 0), + 0D + (meta == 0 ? width : 0), + 0D + (meta == 2 ? width : 0), + 1D - (meta == 5 ? width : 0), + 1D - (meta == 1 ? width : 0), + 1D - (meta == 3 ? width : 0) + ); + renderer.renderStandardBlock(block, x, y, z); + + renderer.setOverrideBlockTexture(iiconPad); + double radius = 0.375D; + double minus = 0D; + renderer.setRenderBounds( + 0.5D - radius + (meta == 4 ? minus : 0), + 0.5D - radius + (meta == 0 ? minus : 0), + 0.5D - radius + (meta == 2 ? minus : 0), + 0.5D + radius - (meta == 5 ? minus : 0), + 0.5D + radius - (meta == 1 ? minus : 0), + 0.5D + radius - (meta == 3 ? minus : 0) + ); + renderer.renderStandardBlock(block, x, y, z); + renderer.clearOverrideBlockTexture(); + + tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); + tessellator.setColorOpaque_F(1, 1, 1); + + boolean pX = Library.canConnect(world, x + 1, y, z, Library.NEG_X); + boolean nX = Library.canConnect(world, x - 1, y, z, Library.POS_X); + boolean pY = Library.canConnect(world, x, y + 1, z, Library.NEG_Y); + boolean nY = Library.canConnect(world, x, y - 1, z, Library.POS_Y); + boolean pZ = Library.canConnect(world, x, y, z + 1, Library.NEG_Z); + boolean nZ = Library.canConnect(world, x, y, z - 1, Library.POS_Z); + + tessellator.addTranslation(x + 0.5F, y + 0.5F, z + 0.5F); + + //ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "Core", iconCable, tessellator, 0, true); + if(pX) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "posX", iconCable, tessellator, 0, true); + if(nX) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "negX", iconCable, tessellator, 0, true); + if(pY) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "posY", iconCable, tessellator, 0, true); + if(nY) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "negY", iconCable, tessellator, 0, true); + if(nZ) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "posZ", iconCable, tessellator, 0, true); + if(pZ) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "negZ", iconCable, tessellator, 0, true); + + tessellator.addTranslation(-x - 0.5F, -y - 0.5F, -z - 0.5F); + + return true; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return CableDiode.renderID; + } +} diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 12b6e78cf..873d7d66c 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -5,6 +5,7 @@ import java.util.HashMap; import com.hbm.blocks.generic.BlockBobble.TileEntityBobble; import com.hbm.blocks.generic.BlockEmitter.TileEntityEmitter; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; +import com.hbm.blocks.network.CableDiode.TileEntityDiode; import com.hbm.tileentity.bomb.*; import com.hbm.tileentity.conductor.*; import com.hbm.tileentity.deco.*; @@ -289,6 +290,7 @@ public class TileMappings { private static void putNetwork() { put(TileEntityCableBaseNT.class, "tileentity_cable", "tileentity_wirecoated"); put(TileEntityCableSwitch.class, "tileentity_cable_switch"); + put(TileEntityDiode.class, "tileentity_cable_diode"); put(TileEntityConnector.class, "tileentity_connector_redwire"); put(TileEntityPylon.class, "tileentity_pylon_redwire"); diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCableBaseNT.java b/src/main/java/com/hbm/tileentity/network/TileEntityCableBaseNT.java index e8b89018a..a1095eaa9 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCableBaseNT.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCableBaseNT.java @@ -37,7 +37,7 @@ public class TileEntityCableBaseNT extends TileEntity implements IEnergyConducto IEnergyConductor conductor = (IEnergyConductor) te; if(!conductor.canConnect(dir.getOpposite())) - break; + continue; if(this.getPowerNet() == null && conductor.getPowerNet() != null) { conductor.getPowerNet().joinLink(this); diff --git a/src/main/java/com/hbm/util/InventoryUtil.java b/src/main/java/com/hbm/util/InventoryUtil.java index 54420bfdf..c234df867 100644 --- a/src/main/java/com/hbm/util/InventoryUtil.java +++ b/src/main/java/com/hbm/util/InventoryUtil.java @@ -459,26 +459,33 @@ public class InventoryUtil { } Slot slot; - ItemStack currentStack; + ItemStack current; if(stack.isStackable()) { + while(stack.stackSize > 0 && (!reverse && index < end || reverse && index >= start)) { slot = slots.get(index); - currentStack = slot.getStack(); + current = slot.getStack(); - if(currentStack != null && currentStack.getItem() == stack.getItem() && (!stack.getHasSubtypes() || stack.getItemDamage() == currentStack.getItemDamage()) && ItemStack.areItemStackTagsEqual(stack, currentStack)) { - int l = currentStack.stackSize + stack.stackSize; - - if(l <= stack.getMaxStackSize()) { - stack.stackSize = 0; - currentStack.stackSize = l; - slot.onSlotChanged(); - success = true; - } else if(currentStack.stackSize < stack.getMaxStackSize()) { - stack.stackSize -= stack.getMaxStackSize() - currentStack.stackSize; - currentStack.stackSize = stack.getMaxStackSize(); - slot.onSlotChanged(); - success = true; + if(current != null) { + int max = Math.min(stack.getMaxStackSize(), slot.getSlotStackLimit()); + int toRemove = Math.min(stack.stackSize, max); + + if(slot.isItemValid(ItemStackUtil.carefulCopyWithSize(stack, toRemove)) && current.getItem() == stack.getItem() && + (!stack.getHasSubtypes() || stack.getItemDamage() == current.getItemDamage()) && ItemStack.areItemStackTagsEqual(stack, current)) { + + int currentSize = current.stackSize + stack.stackSize; + if(currentSize <= max) { + stack.stackSize = 0; + current.stackSize = currentSize; + slot.putStack(current); + success = true; + } else if(current.stackSize < max) { + stack.stackSize -= stack.getMaxStackSize() - current.stackSize; + current.stackSize = max; + slot.putStack(current); + success = true; + } } } @@ -497,16 +504,20 @@ public class InventoryUtil { index = start; } - while(!reverse && index < end || reverse && index >= start) { + while((!reverse && index < end || reverse && index >= start) && stack.stackSize > 0) { slot = slots.get(index); - currentStack = slot.getStack(); + current = slot.getStack(); - if(currentStack == null) { - slot.putStack(stack.copy()); - slot.onSlotChanged(); - stack.stackSize = 0; - success = true; - break; + if(current == null) { + + int max = Math.min(stack.getMaxStackSize(), slot.getSlotStackLimit()); + int toRemove = Math.min(stack.stackSize, max); + + if(slot.isItemValid(ItemStackUtil.carefulCopyWithSize(stack, toRemove))) { + current = stack.splitStack(toRemove); + slot.putStack(current); + success = true; + } } if(reverse) { diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 65af67af0..df5c54d0a 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -3024,6 +3024,7 @@ tile.broadcaster_pc.name=Korrupter Sender tile.burning_earth.name=Brennendes Gras tile.c4.name=C4 tile.cable_detector.name=Redstone-Stromschalter +tile.cable_diode.name=Rote Kupferdiode tile.cable_switch.name=Stromschalter tile.charge_c4.name=Abrissladung tile.charge_dynamite.name=Zeitbombe diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 9d576244b..7d0904553 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -3389,6 +3389,7 @@ tile.broadcaster_pc.name=Corrupted Broadcaster tile.burning_earth.name=Burning Grass tile.c4.name=C-4 tile.cable_detector.name=Redstone Power Switch +tile.cable_diode.name=Red Copper Diode tile.cable_switch.name=Power Switch tile.charge_c4.name=Demolition Charge tile.charge_dynamite.name=Time Bomb diff --git a/src/main/resources/assets/hbm/textures/blocks/cable_diode.png b/src/main/resources/assets/hbm/textures/blocks/cable_diode.png new file mode 100644 index 0000000000000000000000000000000000000000..cfe697a29f9f11cdb282954a85e5eb5bec25a2ac GIT binary patch literal 403 zcmV;E0c`$>P)Nkl%O!}w=UYQR475!%6IlbknbGxq;kR1BZuiQ1 z{la1~@$ZMBAT~2J5M=mf#_cx2z2B#EMysli0>LM%eZ9i*c;aw4alcOu+NPN;l5DqI zuj_g?=Zq${F((C`aU35a=8el@W{b{QGvG0uSk)M*h!nMRa-hk2R7K5S3fT`$Bt5iD xZ-(GmFggXou>9yMcjtUQ&tBWJf`0{${}0W-0J9~DXmJ1l002ovPDHLkV1i^pv)%vz literal 0 HcmV?d00001 From 32de31874e3a344ac8f5ed68139e27a0981ea11e Mon Sep 17 00:00:00 2001 From: Bob Date: Sat, 19 Mar 2022 14:07:22 +0100 Subject: [PATCH 09/10] fixes for chemplant IO, armor clipping, nuke furnace --- .../java/com/hbm/blocks/ILookOverlay.java | 30 ++--- src/main/java/com/hbm/blocks/ModBlocks.java | 2 +- .../hbm/blocks/machine/MachineBattery.java | 6 + .../com/hbm/blocks/machine/MachineFENSU.java | 6 + .../blocks/machine/MachineLiquefactor.java | 2 - .../hbm/blocks/machine/MachineSolidifier.java | 4 +- .../com/hbm/blocks/network/CableDiode.java | 10 +- .../hbm/entity/item/EntityMinecartTest.java | 2 - .../container/ContainerNukeFurnace.java | 105 +++++++++--------- .../container/ContainerStorageDrum.java | 1 - .../container/ContainerWasteDrum.java | 14 ++- src/main/java/com/hbm/items/ModItems.java | 39 +++++-- .../java/com/hbm/items/armor/ArmorFSB.java | 22 +++- .../java/com/hbm/items/armor/ArmorModel.java | 5 +- .../hbm/items/armor/IArmorDisableModel.java | 19 ++++ src/main/java/com/hbm/lib/RefStrings.java | 2 +- src/main/java/com/hbm/main/ClientProxy.java | 66 ++++++----- src/main/java/com/hbm/main/MainRegistry.java | 2 +- .../com/hbm/main/ModEventHandlerClient.java | 46 -------- .../com/hbm/main/ModEventHandlerRenderer.java | 72 ++++++++++++ .../hbm/render/item/ItemRenderLibrary.java | 22 ++++ .../machine/TileEntityMachineChemplant.java | 5 +- .../machine/TileEntityMachineShredder.java | 2 - .../storage/TileEntityMachineFENSU.java | 8 ++ src/main/java/com/hbm/util/BobMathUtil.java | 11 ++ src/main/java/com/hbm/util/InventoryUtil.java | 1 - src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + .../hbm/textures/models/capes/CapeHidden.png | Bin 0 -> 637 bytes src/main/resources/mcmod.info | 2 +- 30 files changed, 329 insertions(+), 179 deletions(-) create mode 100644 src/main/java/com/hbm/items/armor/IArmorDisableModel.java create mode 100644 src/main/java/com/hbm/main/ModEventHandlerRenderer.java create mode 100644 src/main/resources/assets/hbm/textures/models/capes/CapeHidden.png diff --git a/src/main/java/com/hbm/blocks/ILookOverlay.java b/src/main/java/com/hbm/blocks/ILookOverlay.java index 41314cb23..47ff64eea 100644 --- a/src/main/java/com/hbm/blocks/ILookOverlay.java +++ b/src/main/java/com/hbm/blocks/ILookOverlay.java @@ -1,6 +1,5 @@ package com.hbm.blocks; -import java.util.ArrayList; import java.util.List; import org.lwjgl.opengl.GL11; @@ -29,23 +28,24 @@ public interface ILookOverlay { int pX = resolution.getScaledWidth() / 2 + 8; int pZ = resolution.getScaledHeight() / 2; - List exceptions = new ArrayList(); - exceptions.add("x"); - exceptions.add("y"); - exceptions.add("z"); - exceptions.add("items"); - exceptions.add("id"); - mc.fontRenderer.drawString(title, pX + 1, pZ - 9, bgCol); mc.fontRenderer.drawString(title, pX, pZ - 10, titleCol); - for(String line : text) { - - if(exceptions.contains(line)) - continue; - - mc.fontRenderer.drawStringWithShadow(line, pX, pZ, 0xFFFFFF); - pZ += 10; + try { + for(String line : text) { + + int color = 0xFFFFFF; + if(line.startsWith("&[")) { + int end = line.lastIndexOf("&]"); + color = Integer.parseInt(line.substring(2, end)); + line = line.substring(end + 2); + } + + mc.fontRenderer.drawStringWithShadow(line, pX, pZ, color); + pZ += 10; + } + } catch(Exception ex) { + mc.fontRenderer.drawStringWithShadow(ex.getClass().getSimpleName(), pX, pZ + 10, 0xff0000); } GL11.glDisable(GL11.GL_BLEND); diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index aee4890f9..1e1a89399 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -2937,7 +2937,7 @@ public class ModBlocks { GameRegistry.registerBlock(substation, ItemBlockBase.class, substation.getUnlocalizedName()); GameRegistry.registerBlock(cable_switch, cable_switch.getUnlocalizedName()); GameRegistry.registerBlock(cable_detector, cable_detector.getUnlocalizedName()); - GameRegistry.registerBlock(cable_diode, cable_diode.getUnlocalizedName()); + GameRegistry.registerBlock(cable_diode, ItemBlockBase.class, cable_diode.getUnlocalizedName()); GameRegistry.registerBlock(machine_detector, machine_detector.getUnlocalizedName()); GameRegistry.registerBlock(rf_cable, rf_cable.getUnlocalizedName()); GameRegistry.registerBlock(oil_duct, oil_duct.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/machine/MachineBattery.java b/src/main/java/com/hbm/blocks/machine/MachineBattery.java index 9645a5335..5da052d7c 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineBattery.java +++ b/src/main/java/com/hbm/blocks/machine/MachineBattery.java @@ -224,6 +224,12 @@ public class MachineBattery extends BlockContainer implements ILookOverlay { List text = new ArrayList(); text.add(BobMathUtil.getShortNumber(battery.getPower()) + " / " + BobMathUtil.getShortNumber(battery.getMaxPower()) + "HE"); + double percent = (double) battery.getPower() / (double) battery.getMaxPower(); + int charge = (int) Math.floor(percent * 10_000D); + int color = ((int) (0xFF - 0xFF * percent)) << 16 | ((int)(0xFF * percent) << 8); + + text.add("&[" + color + "&]" + (charge / 100D) + "%"); + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineFENSU.java b/src/main/java/com/hbm/blocks/machine/MachineFENSU.java index 09a02e295..6ba22f976 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineFENSU.java +++ b/src/main/java/com/hbm/blocks/machine/MachineFENSU.java @@ -83,6 +83,12 @@ public class MachineFENSU extends BlockDummyable implements ILookOverlay { List text = new ArrayList(); text.add(BobMathUtil.getShortNumber(battery.getPower()) + " / " + BobMathUtil.getShortNumber(battery.getMaxPower()) + "HE"); + double percent = (double) battery.getPower() / (double) battery.getMaxPower(); + int charge = (int) Math.floor(percent * 10_000D); + int color = ((int) (0xFF - 0xFF * percent)) << 16 | ((int)(0xFF * percent) << 8); + + text.add("&[" + color + "&]" + (charge / 100D) + "%"); + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineLiquefactor.java b/src/main/java/com/hbm/blocks/machine/MachineLiquefactor.java index 729f06640..c232fea2e 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineLiquefactor.java +++ b/src/main/java/com/hbm/blocks/machine/MachineLiquefactor.java @@ -6,11 +6,9 @@ import org.lwjgl.input.Keyboard; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ITooltipProvider; -import com.hbm.main.MainRegistry; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.oil.TileEntityMachineLiquefactor; -import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/hbm/blocks/machine/MachineSolidifier.java b/src/main/java/com/hbm/blocks/machine/MachineSolidifier.java index 96d426511..b743f795e 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineSolidifier.java +++ b/src/main/java/com/hbm/blocks/machine/MachineSolidifier.java @@ -69,7 +69,9 @@ public class MachineSolidifier extends BlockDummyable implements ITooltipProvide public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { - list.add(EnumChatFormatting.YELLOW + "beb"); + list.add(EnumChatFormatting.YELLOW + "A universal machine fitted with cooling systems and other"); + list.add(EnumChatFormatting.YELLOW + "versatile tools for turning fluids solid using various"); + list.add(EnumChatFormatting.YELLOW + "processes such as freezing and petrochemical polymerization."); } else { list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +"Hold <" + EnumChatFormatting.YELLOW + "" + EnumChatFormatting.ITALIC + "LSHIFT" + diff --git a/src/main/java/com/hbm/blocks/network/CableDiode.java b/src/main/java/com/hbm/blocks/network/CableDiode.java index 11fa8ffb8..8e260d42b 100644 --- a/src/main/java/com/hbm/blocks/network/CableDiode.java +++ b/src/main/java/com/hbm/blocks/network/CableDiode.java @@ -11,6 +11,8 @@ import com.hbm.util.I18nUtil; import api.hbm.block.IToolable; import api.hbm.energy.IEnergyUser; import cpw.mods.fml.client.registry.RenderingRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.BlockContainer; import net.minecraft.block.BlockPistonBase; import net.minecraft.block.material.Material; @@ -18,12 +20,12 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; import net.minecraft.network.NetworkManager; import net.minecraft.network.Packet; import net.minecraft.network.play.server.S35PacketUpdateTileEntity; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; import net.minecraftforge.common.util.ForgeDirection; @@ -51,6 +53,12 @@ public class CableDiode extends BlockContainer implements ILookOverlay, IToolabl return false; } + @Override + @SideOnly(Side.CLIENT) + public boolean shouldSideBeRendered(IBlockAccess p_149646_1_, int p_149646_2_, int p_149646_3_, int p_149646_4_, int p_149646_5_) { + return true; + } + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { int l = BlockPistonBase.determineOrientation(world, x, y, z, player); world.setBlockMetadataWithNotify(x, y, z, l, 2); diff --git a/src/main/java/com/hbm/entity/item/EntityMinecartTest.java b/src/main/java/com/hbm/entity/item/EntityMinecartTest.java index bdca79aed..924c9c3c1 100644 --- a/src/main/java/com/hbm/entity/item/EntityMinecartTest.java +++ b/src/main/java/com/hbm/entity/item/EntityMinecartTest.java @@ -67,8 +67,6 @@ public class EntityMinecartTest extends EntityMinecartModBase this.explodeCart(d0); } } - - System.out.println(this.rotationYaw); } @Override diff --git a/src/main/java/com/hbm/inventory/container/ContainerNukeFurnace.java b/src/main/java/com/hbm/inventory/container/ContainerNukeFurnace.java index 2cb1883d3..eb00684e3 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerNukeFurnace.java +++ b/src/main/java/com/hbm/inventory/container/ContainerNukeFurnace.java @@ -2,6 +2,7 @@ package com.hbm.inventory.container; import com.hbm.inventory.SlotMachineOutput; import com.hbm.tileentity.machine.TileEntityNukeFurnace; +import com.hbm.util.InventoryUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; @@ -11,116 +12,110 @@ import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; public class ContainerNukeFurnace extends Container { - + private TileEntityNukeFurnace diFurnace; private int dualCookTime; private int dualPower; - private int lastItemBurnTime; - + public ContainerNukeFurnace(InventoryPlayer invPlayer, TileEntityNukeFurnace tedf) { dualCookTime = 0; dualPower = 0; - lastItemBurnTime = 0; - + diFurnace = tedf; - - this.addSlotToContainer(new Slot(tedf, 0, 56, 53)); + + this.addSlotToContainer(new Slot(tedf, 0, 56, 53) { + @Override + public int getSlotStackLimit() { + return 1; + } + }); + this.addSlotToContainer(new Slot(tedf, 1, 56, 17)); this.addSlotToContainer(new SlotMachineOutput(tedf, 2, 116, 35)); - - for(int i = 0; i < 3; i++) - { - for(int j = 0; j < 9; j++) - { + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); } } - - for(int i = 0; i < 9; i++) - { + + for(int i = 0; i < 9; i++) { this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); } } - + @Override public void addCraftingToCrafters(ICrafting crafting) { super.addCraftingToCrafters(crafting); crafting.sendProgressBarUpdate(this, 0, this.diFurnace.dualCookTime); crafting.sendProgressBarUpdate(this, 1, this.diFurnace.dualPower); } - + @Override - public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) - { + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { ItemStack var3 = null; Slot var4 = (Slot) this.inventorySlots.get(par2); - - if (var4 != null && var4.getHasStack()) - { + + if(var4 != null && var4.getHasStack()) { ItemStack var5 = var4.getStack(); var3 = var5.copy(); - - if (par2 <= 2) { - if (!this.mergeItemStack(var5, 3, this.inventorySlots.size(), true)) - { + + if(par2 <= 2) { + if(!this.mergeItemStack(var5, 3, this.inventorySlots.size(), true)) { return null; } - } - else if (!this.mergeItemStack(var5, 1, 2, false)) - { - if (!this.mergeItemStack(var5, 0, 1, false)) + } else { + + if(TileEntityNukeFurnace.getFuelValue(var5) > 0) { + if(!InventoryUtil.mergeItemStack(this.inventorySlots, var5, 0, 1, false)) return null; + } else { + if(!this.mergeItemStack(var5, 1, 2, false)) + return null; + } } - - if (var5.stackSize == 0) - { + + if(var5.stackSize == 0) { var4.putStack((ItemStack) null); - } - else - { + } else { var4.onSlotChanged(); } } - + return var3; - } + } @Override public boolean canInteractWith(EntityPlayer player) { return diFurnace.isUseableByPlayer(player); } - + @Override public void detectAndSendChanges() { super.detectAndSendChanges(); - - for(int i = 0; i < this.crafters.size(); i++) - { - ICrafting par1 = (ICrafting)this.crafters.get(i); - - if(this.dualCookTime != this.diFurnace.dualCookTime) - { + + for(int i = 0; i < this.crafters.size(); i++) { + ICrafting par1 = (ICrafting) this.crafters.get(i); + + if(this.dualCookTime != this.diFurnace.dualCookTime) { par1.sendProgressBarUpdate(this, 0, this.diFurnace.dualCookTime); } - - if(this.dualPower != this.diFurnace.dualPower) - { + + if(this.dualPower != this.diFurnace.dualPower) { par1.sendProgressBarUpdate(this, 1, this.diFurnace.dualPower); } } - + this.dualCookTime = this.diFurnace.dualCookTime; this.dualPower = this.diFurnace.dualPower; } - + @Override public void updateProgressBar(int i, int j) { - if(i == 0) - { + if(i == 0) { diFurnace.dualCookTime = j; } - if(i == 1) - { + if(i == 1) { diFurnace.dualPower = j; } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerStorageDrum.java b/src/main/java/com/hbm/inventory/container/ContainerStorageDrum.java index 022726ce8..18d7e2d8d 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerStorageDrum.java +++ b/src/main/java/com/hbm/inventory/container/ContainerStorageDrum.java @@ -48,7 +48,6 @@ public class ContainerStorageDrum extends Container { var3 = var5.copy(); if(par2 <= drum.getSizeInventory() - 1) { - if(!InventoryUtil.mergeItemStack(this.inventorySlots, var5, drum.getSizeInventory(), this.inventorySlots.size(), true)) { return null; } diff --git a/src/main/java/com/hbm/inventory/container/ContainerWasteDrum.java b/src/main/java/com/hbm/inventory/container/ContainerWasteDrum.java index e3e3f390e..639f21d81 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerWasteDrum.java +++ b/src/main/java/com/hbm/inventory/container/ContainerWasteDrum.java @@ -11,10 +11,10 @@ import net.minecraft.item.ItemStack; public class ContainerWasteDrum extends Container { - private TileEntityWasteDrum diFurnace; + private TileEntityWasteDrum drum; public ContainerWasteDrum(InventoryPlayer invPlayer, TileEntityWasteDrum tedf) { - diFurnace = tedf; + drum = tedf; this.addSlotToContainer(new Slot(tedf, 0, 71, 18)); this.addSlotToContainer(new Slot(tedf, 1, 89, 18)); @@ -52,11 +52,11 @@ public class ContainerWasteDrum extends Container { ItemStack var5 = var4.getStack(); var3 = var5.copy(); - if(par2 <= diFurnace.getSizeInventory() - 1) { - if(!InventoryUtil.mergeItemStack(this.inventorySlots, var5, diFurnace.getSizeInventory(), this.inventorySlots.size(), true)) { + if(par2 <= drum.getSizeInventory() - 1) { + if(!InventoryUtil.mergeItemStack(this.inventorySlots, var5, drum.getSizeInventory(), this.inventorySlots.size(), true)) { return null; } - } else if(!InventoryUtil.mergeItemStack(this.inventorySlots, var5, 0, 0, false)) { + } else if(!InventoryUtil.mergeItemStack(this.inventorySlots, var5, 0, drum.getSizeInventory(), false)) { return null; } @@ -65,6 +65,8 @@ public class ContainerWasteDrum extends Container { } else { var4.onSlotChanged(); } + + var4.onPickupFromSlot(p_82846_1_, var5); } return var3; @@ -72,6 +74,6 @@ public class ContainerWasteDrum extends Container { @Override public boolean canInteractWith(EntityPlayer player) { - return diFurnace.isUseableByPlayer(player); + return drum.isUseableByPlayer(player); } } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 3960a4489..e6b4e67fd 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -11,6 +11,7 @@ import com.hbm.interfaces.ICustomWarhead.SaltedFuel.HalfLifeType; import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ItemEnums.EnumLegendaryType; import com.hbm.items.armor.*; +import com.hbm.items.armor.IArmorDisableModel.EnumPlayerPart; import com.hbm.items.bomb.*; import com.hbm.items.food.*; import com.hbm.items.machine.*; @@ -2265,6 +2266,7 @@ public class ModItems { public static Item cape_radiation; public static Item cape_gasmask; public static Item cape_schrabidium; + public static Item cape_hidden; /*public static Item cape_hbm; public static Item cape_dafnik; public static Item cape_lpkukin; @@ -4873,6 +4875,7 @@ public class ModItems { .setBlastProtection(0.5F) .addResistance("monoxide", 0F) .addResistance("fall", 0) + .hides(EnumPlayerPart.HAT) .setUnlocalizedName("t45_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":t45_helmet"); t45_plate = new ArmorT45(aMatT45, 2, 1, 1000000, 10000, 1000, 5).cloneStats((ArmorFSB) t45_helmet).setUnlocalizedName("t45_plate").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":t45_plate"); t45_legs = new ArmorT45(aMatT45, 2, 2, 1000000, 10000, 1000, 5).cloneStats((ArmorFSB) t45_helmet).setUnlocalizedName("t45_legs").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":t45_legs"); @@ -4887,6 +4890,7 @@ public class ModItems { .setBlastProtection(0.5F) .addResistance("monoxide", 0F) .addResistance("fall", 0) + .hides(EnumPlayerPart.HAT) .setUnlocalizedName("steamsuit_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":steamsuit_helmet"); steamsuit_plate = new ArmorDesh(aMatDesh, 2, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", Fluids.STEAM, 360000, 500, 50, 1).cloneStats((ArmorFSB) steamsuit_helmet).setUnlocalizedName("steamsuit_plate").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":steamsuit_plate"); steamsuit_legs = new ArmorDesh(aMatDesh, 2, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", Fluids.STEAM, 360000, 500, 50, 1).cloneStats((ArmorFSB) steamsuit_helmet).setUnlocalizedName("steamsuit_legs").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":steamsuit_legs"); @@ -4906,7 +4910,9 @@ public class ModItems { .setJump("hbm:step.iron_jump") .setFall("hbm:step.iron_land") .addResistance("monoxide", 0F) - .addResistance("fall", 0).setUnlocalizedName("ajr_helmet").setTextureName(RefStrings.MODID + ":ajr_helmet"); + .addResistance("fall", 0) + .hides(EnumPlayerPart.HAT) + .setUnlocalizedName("ajr_helmet").setTextureName(RefStrings.MODID + ":ajr_helmet"); ajr_plate = new ArmorAJR(aMatAJR, 7, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) ajr_helmet).setUnlocalizedName("ajr_plate").setTextureName(RefStrings.MODID + ":ajr_plate"); ajr_legs = new ArmorAJR(aMatAJR, 7, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) ajr_helmet).setUnlocalizedName("ajr_legs").setTextureName(RefStrings.MODID + ":ajr_legs"); ajr_boots = new ArmorAJR(aMatAJR, 7, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) ajr_helmet).setUnlocalizedName("ajr_boots").setTextureName(RefStrings.MODID + ":ajr_boots"); @@ -4923,7 +4929,9 @@ public class ModItems { .setJump("hbm:step.iron_jump") .setFall("hbm:step.iron_land") .addResistance("monoxide", 0F) - .addResistance("fall", 0).setUnlocalizedName("ajro_helmet").setTextureName(RefStrings.MODID + ":ajro_helmet"); + .addResistance("fall", 0) + .hides(EnumPlayerPart.HAT) + .setUnlocalizedName("ajro_helmet").setTextureName(RefStrings.MODID + ":ajro_helmet"); ajro_plate = new ArmorAJRO(aMatAJR, 7, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) ajro_helmet).setUnlocalizedName("ajro_plate").setTextureName(RefStrings.MODID + ":ajro_plate"); ajro_legs = new ArmorAJRO(aMatAJR, 7, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) ajro_helmet).setUnlocalizedName("ajro_legs").setTextureName(RefStrings.MODID + ":ajro_legs"); ajro_boots = new ArmorAJRO(aMatAJR, 7, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) ajro_helmet).setUnlocalizedName("ajro_boots").setTextureName(RefStrings.MODID + ":ajro_boots"); @@ -4940,7 +4948,9 @@ public class ModItems { .setStep("hbm:step.powered") .setJump("hbm:step.powered") .setFall("hbm:step.powered") - .addResistance("fall", 0).setUnlocalizedName("rpa_helmet").setTextureName(RefStrings.MODID + ":rpa_helmet"); + .addResistance("fall", 0) + .hides(EnumPlayerPart.HAT) + .setUnlocalizedName("rpa_helmet").setTextureName(RefStrings.MODID + ":rpa_helmet"); rpa_plate = new ArmorRPA(aMatAJR, 7, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) rpa_helmet).setUnlocalizedName("rpa_plate").setTextureName(RefStrings.MODID + ":rpa_plate"); rpa_legs = new ArmorRPA(aMatAJR, 7, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) rpa_helmet).setUnlocalizedName("rpa_legs").setTextureName(RefStrings.MODID + ":rpa_legs"); rpa_boots = new ArmorRPA(aMatAJR, 7, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) rpa_helmet).setUnlocalizedName("rpa_boots").setTextureName(RefStrings.MODID + ":rpa_boots"); @@ -4959,13 +4969,12 @@ public class ModItems { .addEffect(new PotionEffect(HbmPotion.radx.id, 20, 0)) .setBlastProtection(0.5F) .setProtectionLevel(500F) - //.setGravity(0.02D) .setStep("hbm:step.metal") .setJump("hbm:step.iron_jump") .setFall("hbm:step.iron_land") .addResistance("fall", 0).setUnlocalizedName("bj_helmet").setTextureName(RefStrings.MODID + ":bj_helmet"); bj_plate = new ArmorBJ(aMatBJ, 7, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 1000, 100).cloneStats((ArmorFSB) bj_helmet).setUnlocalizedName("bj_plate").setTextureName(RefStrings.MODID + ":bj_plate"); - bj_plate_jetpack = new ArmorBJJetpack(aMatBJ, 7, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 1000, 100).cloneStats((ArmorFSB) bj_helmet).setUnlocalizedName("bj_plate_jetpack").setTextureName(RefStrings.MODID + ":bj_plate_jetpack"); + bj_plate_jetpack = new ArmorBJJetpack(aMatBJ, 7, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 1000, 100).cloneStats((ArmorFSB) bj_helmet).hides(EnumPlayerPart.LEFT_ARM, EnumPlayerPart.RIGHT_ARM).setUnlocalizedName("bj_plate_jetpack").setTextureName(RefStrings.MODID + ":bj_plate_jetpack"); bj_legs = new ArmorBJ(aMatBJ, 7, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 10000000, 10000, 1000, 100).cloneStats((ArmorFSB) bj_helmet).setUnlocalizedName("bj_legs").setTextureName(RefStrings.MODID + ":bj_legs"); bj_boots = new ArmorBJ(aMatBJ, 7, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 1000, 100).cloneStats((ArmorFSB) bj_helmet).setUnlocalizedName("bj_boots").setTextureName(RefStrings.MODID + ":bj_boots"); @@ -4980,7 +4989,9 @@ public class ModItems { .setHasCustomGeiger(true) .addResistance("fall", 0.5F) .addResistance("monoxide", 0F) - .addResistance("onFire", 0F).setUnlocalizedName("hev_helmet").setTextureName(RefStrings.MODID + ":hev_helmet"); + .addResistance("onFire", 0F) + .hides(EnumPlayerPart.HAT) + .setUnlocalizedName("hev_helmet").setTextureName(RefStrings.MODID + ":hev_helmet"); hev_plate = new ArmorHEV(aMatHEV, 7, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 2500, 0).cloneStats((ArmorFSB) hev_helmet).setUnlocalizedName("hev_plate").setTextureName(RefStrings.MODID + ":hev_plate"); hev_legs = new ArmorHEV(aMatHEV, 7, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 1000000, 10000, 2500, 0).cloneStats((ArmorFSB) hev_helmet).setUnlocalizedName("hev_legs").setTextureName(RefStrings.MODID + ":hev_legs"); hev_boots = new ArmorHEV(aMatHEV, 7, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 2500, 0).cloneStats((ArmorFSB) hev_helmet).setUnlocalizedName("hev_boots").setTextureName(RefStrings.MODID + ":hev_boots"); @@ -5003,9 +5014,11 @@ public class ModItems { .setProtectionLevel(1000F) .addResistance("fall", 0F) .addResistance("monoxide", 0F) - .setFireproof(true).setUnlocalizedName("fau_helmet").setTextureName(RefStrings.MODID + ":fau_helmet"); - fau_plate = new ArmorDigamma(aMatFau, 7, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 2500, 0).cloneStats((ArmorFSB) fau_helmet).setUnlocalizedName("fau_plate").setTextureName(RefStrings.MODID + ":fau_plate"); - fau_legs = new ArmorDigamma(aMatFau, 7, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 10000000, 10000, 2500, 0).cloneStats((ArmorFSB) fau_helmet).setUnlocalizedName("fau_legs").setTextureName(RefStrings.MODID + ":fau_legs"); + .setFireproof(true) + .hides(EnumPlayerPart.HAT) + .setUnlocalizedName("fau_helmet").setTextureName(RefStrings.MODID + ":fau_helmet"); + fau_plate = new ArmorDigamma(aMatFau, 7, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 2500, 0).cloneStats((ArmorFSB) fau_helmet).setFullSetForHide().setUnlocalizedName("fau_plate").setTextureName(RefStrings.MODID + ":fau_plate"); + fau_legs = new ArmorDigamma(aMatFau, 7, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 10000000, 10000, 2500, 0).cloneStats((ArmorFSB) fau_helmet).hides(EnumPlayerPart.LEFT_LEG, EnumPlayerPart.RIGHT_LEG).setFullSetForHide().setUnlocalizedName("fau_legs").setTextureName(RefStrings.MODID + ":fau_legs"); fau_boots = new ArmorDigamma(aMatFau, 7, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 2500, 0).cloneStats((ArmorFSB) fau_helmet).setUnlocalizedName("fau_boots").setTextureName(RefStrings.MODID + ":fau_boots"); ArmorMaterial aMatDNS = EnumHelper.addArmorMaterial("HBM_DNT_NANO", 150, new int[] { 3, 8, 6, 3 }, 100); @@ -5021,7 +5034,9 @@ public class ModItems { .setStep("hbm:step.metal") .setJump("hbm:step.iron_jump") .setFall("hbm:step.iron_land") - .setFireproof(true).setUnlocalizedName("dns_helmet").setTextureName(RefStrings.MODID + ":dns_helmet"); + .setFireproof(true) + .hides(EnumPlayerPart.HAT) + .setUnlocalizedName("dns_helmet").setTextureName(RefStrings.MODID + ":dns_helmet"); dns_plate = new ArmorDNT(aMatDNS, 7, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000000, 1000000, 100000, 115).cloneStats((ArmorFSB) dns_helmet).setUnlocalizedName("dns_plate").setTextureName(RefStrings.MODID + ":dns_plate"); dns_legs = new ArmorDNT(aMatDNS, 7, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 1000000000, 1000000, 100000, 115).cloneStats((ArmorFSB) dns_helmet).setUnlocalizedName("dns_legs").setTextureName(RefStrings.MODID + ":dns_legs"); dns_boots = new ArmorDNT(aMatDNS, 7, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000000, 1000000, 100000, 115).cloneStats((ArmorFSB) dns_helmet).setUnlocalizedName("dns_boots").setTextureName(RefStrings.MODID + ":dns_boots"); @@ -5384,6 +5399,7 @@ public class ModItems { cape_radiation = new ArmorModel(ArmorMaterial.CHAIN, 9, 1).setUnlocalizedName("cape_radiation").setCreativeTab(MainRegistry.consumableTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":cape_radiation"); cape_gasmask = new ArmorModel(ArmorMaterial.CHAIN, 9, 1).setUnlocalizedName("cape_gasmask").setCreativeTab(MainRegistry.consumableTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":cape_gasmask"); cape_schrabidium = new ArmorModel(MainRegistry.aMatSchrab, 9, 1).setUnlocalizedName("cape_schrabidium").setCreativeTab(MainRegistry.consumableTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":cape_schrabidium"); + cape_hidden = new ArmorModel(ArmorMaterial.CHAIN, 9, 1).setUnlocalizedName("cape_hidden").setCreativeTab(MainRegistry.consumableTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":cape_unknown"); schrabidium_hammer = new WeaponSpecial(MainRegistry.tMatHammmer).setUnlocalizedName("schrabidium_hammer").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":schrabidium_hammer"); shimmer_sledge = new WeaponSpecial(MainRegistry.enumToolMaterialSledge).setUnlocalizedName("shimmer_sledge").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":shimmer_sledge_original"); @@ -5448,7 +5464,7 @@ public class ModItems { record_glass = new ItemModRecord("glass").setUnlocalizedName("record_glass").setCreativeTab(null).setTextureName(RefStrings.MODID + ":record_glass"); book_guide = new ItemGuideBook().setUnlocalizedName("book_guide").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":book_guide"); - holotape_image = new ItemHolotapeImage().setUnlocalizedName("holotape_image").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":holotape"); + holotape_image = new ItemHolotapeImage().setUnlocalizedName("holotape_image").setCreativeTab(null).setTextureName(RefStrings.MODID + ":holotape"); holotape_damaged = new Item().setUnlocalizedName("holotape_damaged").setCreativeTab(null).setTextureName(RefStrings.MODID + ":holotape_damaged"); polaroid = new ItemPolaroid().setUnlocalizedName("polaroid").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":polaroid_" + MainRegistry.polaroidID); @@ -7376,6 +7392,7 @@ public class ModItems { GameRegistry.registerItem(cape_radiation, cape_radiation.getUnlocalizedName()); GameRegistry.registerItem(cape_gasmask, cape_gasmask.getUnlocalizedName()); GameRegistry.registerItem(cape_schrabidium, cape_schrabidium.getUnlocalizedName()); + GameRegistry.registerItem(cape_hidden, cape_hidden.getUnlocalizedName()); //Tools GameRegistry.registerItem(schrabidium_sword, schrabidium_sword.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/armor/ArmorFSB.java b/src/main/java/com/hbm/items/armor/ArmorFSB.java index 94a6ba88d..177d1842a 100644 --- a/src/main/java/com/hbm/items/armor/ArmorFSB.java +++ b/src/main/java/com/hbm/items/armor/ArmorFSB.java @@ -2,7 +2,9 @@ package com.hbm.items.armor; import java.lang.reflect.Field; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map.Entry; @@ -40,7 +42,7 @@ import net.minecraftforge.event.entity.living.LivingAttackEvent; import net.minecraftforge.event.entity.living.LivingHurtEvent; //Armor with full set bonus -public class ArmorFSB extends ItemArmor { +public class ArmorFSB extends ItemArmor implements IArmorDisableModel { private String texture = ""; private ResourceLocation overlay = null; @@ -579,4 +581,22 @@ public class ArmorFSB extends ItemArmor { GL11.glEnable(GL11.GL_ALPHA_TEST); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); } + + private HashSet hidden = new HashSet(); + private boolean needsFullSet = false; + + public ArmorFSB hides(EnumPlayerPart... parts) { + Collections.addAll(hidden, parts); + return this; + } + + public ArmorFSB setFullSetForHide() { + needsFullSet = true; + return this; + } + + @Override + public boolean disablesPart(EntityPlayer player, ItemStack stack, EnumPlayerPart part) { + return hidden.contains(part) && (!needsFullSet || hasFSBArmorIgnoreCharge(player)); + } } diff --git a/src/main/java/com/hbm/items/armor/ArmorModel.java b/src/main/java/com/hbm/items/armor/ArmorModel.java index 3703eff81..8e06c78b9 100644 --- a/src/main/java/com/hbm/items/armor/ArmorModel.java +++ b/src/main/java/com/hbm/items/armor/ArmorModel.java @@ -80,7 +80,7 @@ public class ArmorModel extends ItemArmor { return this.modelHat; } } - if (this == ModItems.cape_test || this == ModItems.cape_radiation || this == ModItems.cape_gasmask || this == ModItems.cape_schrabidium) { + if (this == ModItems.cape_test || this == ModItems.cape_radiation || this == ModItems.cape_gasmask || this == ModItems.cape_schrabidium || this == ModItems.cape_hidden) { if (armorSlot == 1) { if (this.modelCloak == null) { this.modelCloak = new ModelCloak(); @@ -111,6 +111,9 @@ public class ArmorModel extends ItemArmor { if (stack.getItem() == ModItems.cape_schrabidium) { return "hbm:textures/models/capes/CapeSchrabidium.png"; } + if (stack.getItem() == ModItems.cape_hidden) { + return "hbm:textures/models/capes/CapeHidden.png"; + } return "hbm:textures/models/capes/CapeUnknown.png"; } diff --git a/src/main/java/com/hbm/items/armor/IArmorDisableModel.java b/src/main/java/com/hbm/items/armor/IArmorDisableModel.java new file mode 100644 index 000000000..5e4d3dbda --- /dev/null +++ b/src/main/java/com/hbm/items/armor/IArmorDisableModel.java @@ -0,0 +1,19 @@ +package com.hbm.items.armor; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; + +public interface IArmorDisableModel { + + public boolean disablesPart(EntityPlayer player, ItemStack stack, EnumPlayerPart part); + + public static enum EnumPlayerPart { + HEAD, + HAT, + BODY, + LEFT_ARM, + RIGHT_ARM, + LEFT_LEG, + RIGHT_LEG + } +} diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 9e2f8a1e4..f434aec9f 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (4174)"; + public static final String VERSION = "1.0.27 BETA (4178)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 1ef89f1e9..2c6c75bc5 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -19,6 +19,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MathHelper; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.ResourceLocation; import net.minecraft.util.Vec3; @@ -84,6 +85,7 @@ import com.hbm.tileentity.machine.rbmk.*; import com.hbm.tileentity.machine.storage.*; import com.hbm.tileentity.network.*; import com.hbm.tileentity.turret.*; +import com.hbm.util.BobMathUtil; import com.hbm.util.SoundUtil; import cpw.mods.fml.client.registry.ClientRegistry; @@ -93,6 +95,34 @@ import cpw.mods.fml.relauncher.ReflectionHelper; public class ClientProxy extends ServerProxy { + @Override + public void registerRenderInfo() { + + registerClientEventHandler(new ModEventHandlerClient()); + registerClientEventHandler(new ModEventHandlerRenderer()); + + AdvancedModelLoader.registerModelHandler(new HmfModelLoader()); + ResourceManager.loadAnimatedModels(); + + registerTileEntitySpecialRenderer(); + registerItemRenderer(); + registerEntityRenderer(); + registerBlockRenderer(); + + RenderingRegistry.addNewArmourRendererPrefix("5"); + RenderingRegistry.addNewArmourRendererPrefix("6"); + RenderingRegistry.addNewArmourRendererPrefix("7"); + RenderingRegistry.addNewArmourRendererPrefix("8"); + RenderingRegistry.addNewArmourRendererPrefix("9"); + + SoundUtil.addSoundCategory("ntmMachines"); + } + + private void registerClientEventHandler(Object handler) { + MinecraftForge.EVENT_BUS.register(handler); + FMLCommonHandler.instance().bus().register(handler); + } + @Override public void registerTileEntitySpecialRenderer() { //test crap @@ -665,30 +695,6 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerBlockHandler(new RenderPribris()); } - @Override - public void registerRenderInfo() - { - ModEventHandlerClient handler = new ModEventHandlerClient(); - MinecraftForge.EVENT_BUS.register(handler); - FMLCommonHandler.instance().bus().register(handler); - - AdvancedModelLoader.registerModelHandler(new HmfModelLoader()); - ResourceManager.loadAnimatedModels(); - - registerTileEntitySpecialRenderer(); - registerItemRenderer(); - registerEntityRenderer(); - registerBlockRenderer(); - - RenderingRegistry.addNewArmourRendererPrefix("5"); - RenderingRegistry.addNewArmourRendererPrefix("6"); - RenderingRegistry.addNewArmourRendererPrefix("7"); - RenderingRegistry.addNewArmourRendererPrefix("8"); - RenderingRegistry.addNewArmourRendererPrefix("9"); - - SoundUtil.addSoundCategory("ntmMachines"); - } - @Override public void registerMissileItems() { @@ -1157,13 +1163,17 @@ public class ClientProxy extends ServerProxy { } } } + + double motionX = BobMathUtil.safeClamp(p.motionX + moX, -5, 5); + double motionY = BobMathUtil.safeClamp(p.motionY + moY, -2, 2); + double motionZ = BobMathUtil.safeClamp(p.motionZ + moZ, -5, 5); - Minecraft.getMinecraft().effectRenderer.addEffect(new EntityFlameFX(world, ix + ox, iy, iz + oz, p.motionX + moX * 2, p.motionY + moY * 2, p.motionZ + moZ * 2)); - Minecraft.getMinecraft().effectRenderer.addEffect(new EntityFlameFX(world, ix - ox, iy, iz - oz, p.motionX + moX * 2, p.motionY + moY * 2, p.motionZ + moZ * 2)); + Minecraft.getMinecraft().effectRenderer.addEffect(new EntityFlameFX(world, ix + ox, iy, iz + oz, motionX * 2, motionY * 2, motionZ * 2)); + Minecraft.getMinecraft().effectRenderer.addEffect(new EntityFlameFX(world, ix - ox, iy, iz - oz, motionX * 2, motionY * 2, motionZ * 2)); if(particleSetting == 0) { - Minecraft.getMinecraft().effectRenderer.addEffect(new net.minecraft.client.particle.EntitySmokeFX(world, ix + ox, iy, iz + oz, p.motionX + moX * 3, p.motionY + moY * 3, p.motionZ + moZ * 3)); - Minecraft.getMinecraft().effectRenderer.addEffect(new net.minecraft.client.particle.EntitySmokeFX(world, ix - ox, iy, iz - oz, p.motionX + moX * 3, p.motionY + moY * 3, p.motionZ + moZ * 3)); + Minecraft.getMinecraft().effectRenderer.addEffect(new net.minecraft.client.particle.EntitySmokeFX(world, ix + ox, iy, iz + oz, motionX * 3, motionY * 3, motionZ * 3)); + Minecraft.getMinecraft().effectRenderer.addEffect(new net.minecraft.client.particle.EntitySmokeFX(world, ix - ox, iy, iz - oz, motionX * 3, motionY * 3, motionZ * 3)); } } } diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 6b61f7746..e82ab657d 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -990,7 +990,7 @@ public class MainRegistry { SchistStratum schist = new SchistStratum(); MinecraftForge.EVENT_BUS.register(schist); //DecorateBiomeEvent.Pre - new OreLayer(Blocks.coal_ore, 0.2F).setThreshold(4).setRangeMult(3).setYLevel(70); + //new OreLayer(Blocks.coal_ore, 0.2F).setThreshold(4).setRangeMult(3).setYLevel(70); OreDictManager oreMan = new OreDictManager(); MinecraftForge.EVENT_BUS.register(oreMan); //OreRegisterEvent diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index a61f82536..b9c77812a 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -798,52 +798,6 @@ public class ModEventHandlerClient { } } - /*private static final ResourceLocation digammaStar = new ResourceLocation("hbm:textures/misc/star_digamma.png"); - - @SideOnly(Side.CLIENT) - public void onRenderDigammaStar(RenderWorldLastEvent event) { - - World world = Minecraft.getMinecraft().theWorld; - - if(world.provider.dimensionId != 0) - return; - - GL11.glPushMatrix(); - GL11.glDepthMask(false); - - GL11.glEnable(3553); - GL11.glEnable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_ALPHA_TEST); - OpenGlHelper.glBlendFunc(770, 1, 1, 0); - - float partialTicks = event.partialTicks; - - GL11.glRotatef(-90.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(world.getCelestialAngle(partialTicks) * 360.0F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(140.0F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(-40.0F, 0.0F, 0.0F, 1.0F); - - FMLClientHandler.instance().getClient().renderEngine.bindTexture(digammaStar); - - float var12 = 2.5F; - double dist = 150D; - - Tessellator tessellator = Tessellator.instance; - tessellator.startDrawingQuads(); - tessellator.addVertexWithUV(-var12, dist, -var12, 0.0D, 0.0D); - tessellator.addVertexWithUV(var12, dist, -var12, 0.0D, 1.0D); - tessellator.addVertexWithUV(var12, dist, var12, 1.0D, 1.0D); - tessellator.addVertexWithUV(-var12, dist, var12, 1.0D, 0.0D); - tessellator.draw(); - - GL11.glDepthMask(true); - - GL11.glDisable(3042); - GL11.glEnable(GL11.GL_ALPHA_TEST); - - GL11.glPopMatrix(); - }*/ - @SubscribeEvent(priority = EventPriority.HIGHEST) public void preRenderEventFirst(RenderLivingEvent.Pre event) { diff --git a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java new file mode 100644 index 000000000..91c8a06d7 --- /dev/null +++ b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java @@ -0,0 +1,72 @@ +package com.hbm.main; + +import com.hbm.items.armor.IArmorDisableModel; +import com.hbm.items.armor.IArmorDisableModel.EnumPlayerPart; + +import cpw.mods.fml.common.eventhandler.EventPriority; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.client.renderer.entity.RenderPlayer; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraftforge.client.event.RenderPlayerEvent; + +public class ModEventHandlerRenderer { + + private static boolean[] partsHidden = new boolean[7]; + + @SubscribeEvent(priority = EventPriority.LOWEST, receiveCanceled = true) + public void onRenderPlayerPre(RenderPlayerEvent.Pre event) { + + EntityPlayer player = event.entityPlayer; + RenderPlayer renderer = event.renderer; + + for(int j = 0; j < 7; j++) { + partsHidden[j] = false; + } + + for(int i = 1; i < 5; i++) { + ItemStack stack = player.getEquipmentInSlot(i); + + if(stack != null && stack.getItem() instanceof IArmorDisableModel) { + IArmorDisableModel disable = (IArmorDisableModel) stack.getItem(); + + for(int j = 0; j < 7; j++) { + EnumPlayerPart type = EnumPlayerPart.values()[j]; + ModelRenderer box = getBoxFromType(renderer, type); + if(disable.disablesPart(player, stack, type) && !box.isHidden) { + partsHidden[j] = true; + box.isHidden = true; + } + } + } + } + } + + @SubscribeEvent(priority = EventPriority.HIGHEST, receiveCanceled = true) + public void onRenderPlayerPost(RenderPlayerEvent.Post event) { + + RenderPlayer renderer = event.renderer; + + for(int j = 0; j < 7; j++) { + EnumPlayerPart type = EnumPlayerPart.values()[j]; + if(partsHidden[j]) { + getBoxFromType(renderer, type).isHidden = false; + } + } + } + + private static ModelRenderer getBoxFromType(RenderPlayer renderer, EnumPlayerPart part) { + + switch(part) { + case BODY: return renderer.modelBipedMain.bipedBody; + case HAT: return renderer.modelBipedMain.bipedHeadwear; + case HEAD: return renderer.modelBipedMain.bipedHead; + case LEFT_ARM: return renderer.modelBipedMain.bipedLeftArm; + case LEFT_LEG: return renderer.modelBipedMain.bipedLeftLeg; + case RIGHT_ARM: return renderer.modelBipedMain.bipedRightArm; + case RIGHT_LEG: return renderer.modelBipedMain.bipedRightLeg; + default: return null; + } + } +} diff --git a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java index dab0a2c30..dcfb4853f 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java +++ b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java @@ -1236,6 +1236,28 @@ public class ItemRenderLibrary { bindTexture(ResourceManager.chemfac_tex); ResourceManager.chemfac.renderPart("Main"); GL11.glShadeModel(GL11.GL_FLAT); }}); + + renderers.put(Item.getItemFromBlock(ModBlocks.red_pylon_large), new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, -5, 0); + GL11.glScaled(2.25, 2.25, 2.25); + } + public void renderCommon() { + GL11.glScaled(0.5, 0.5, 0.5); + bindTexture(ResourceManager.pylon_large_tex); ResourceManager.pylon_large.renderAll(); + }}); + + renderers.put(Item.getItemFromBlock(ModBlocks.substation), new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, -2.5, 0); + GL11.glScaled(4.5, 4.5, 4.5); + } + public void renderCommon() { + GL11.glScaled(0.5, 0.5, 0.5); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.substation_tex); ResourceManager.substation.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + }}); } private static void bindTexture(ResourceLocation res) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java index a55b976e8..ff0901721 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java @@ -390,8 +390,9 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements for(int j = 0; j < inv.getSizeInventory(); j++) { if(inv.getStackInSlot(j) == null) { - inv.setInventorySlotContents(j, out.copy()); - inv.getStackInSlot(j).stackSize = 1; + ItemStack copy = out.copy(); + copy.stackSize = 1; + inv.setInventorySlotContents(j, copy); this.decrStackSize(i, 1); return; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java index 01d3d8517..63a11d0ef 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java @@ -206,8 +206,6 @@ public class TileEntityMachineShredder extends TileEntity implements ISidedInven return false; } - System.out.println("ass"); - return true; } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFENSU.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFENSU.java index 4b399436d..a9c53bddc 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFENSU.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFENSU.java @@ -66,9 +66,17 @@ public class TileEntityMachineFENSU extends TileEntityMachineBattery { if(mode == 1 || mode == 2) { if(te instanceof IEnergyConnector) { IEnergyConnector con = (IEnergyConnector) te; + + long max = 10_000_000_000_000_000L; + long toTransfer = Math.min(max, this.power); + long remainder = this.power - toTransfer; + this.power = toTransfer; + long oldPower = this.power; long transfer = this.power - con.transferPower(this.power); this.power = oldPower - transfer; + + power += remainder; } } diff --git a/src/main/java/com/hbm/util/BobMathUtil.java b/src/main/java/com/hbm/util/BobMathUtil.java index 797bb2b7e..e8cebbbb3 100644 --- a/src/main/java/com/hbm/util/BobMathUtil.java +++ b/src/main/java/com/hbm/util/BobMathUtil.java @@ -15,6 +15,17 @@ import net.minecraftforge.common.util.ForgeDirection; public class BobMathUtil { + public static double safeClamp(double val, double min, double max) { + + val = MathHelper.clamp_double(val, min, max); + + if(val == Double.NaN) { + val = (min + max) / 2D; + } + + return val; + } + public static Vec3 interpVec(Vec3 vec1, Vec3 vec2, float interp) { return Vec3.createVectorHelper( interp(vec1.xCoord, vec2.xCoord, interp), diff --git a/src/main/java/com/hbm/util/InventoryUtil.java b/src/main/java/com/hbm/util/InventoryUtil.java index c234df867..8132c728a 100644 --- a/src/main/java/com/hbm/util/InventoryUtil.java +++ b/src/main/java/com/hbm/util/InventoryUtil.java @@ -257,7 +257,6 @@ public class InventoryUtil { if(inv.stackSize <= 0) { inventory[j] = null; - System.out.println("da yis"); } } } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index df5c54d0a..e9c2e7d07 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1014,6 +1014,7 @@ item.cape_codered_.name=codered_s Cape item.cape_dafnik.name=Dafniks Cape item.cape_gasmask.name=Cape (Gasmaske) item.cape_hbm.name=Hbms Cape +item.cape_hidden.name=Hidden Cape item.cape_lpkukin.name=LPkukins Cape item.cape_nostalgia.name=DrNostalgias Cape item.cape_radiation.name=Cape (Radioaktiv) diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 7d0904553..61880cb59 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1220,6 +1220,7 @@ item.cape_codered_.name=codered_'s Cape item.cape_dafnik.name=Dafnik's Cape item.cape_gasmask.name=Cape (Gas Mask) item.cape_hbm.name=Hbm's Cape +item.cape_hidden.name=Hidden Cape item.cape_lpkukin.name=LPkukin's Cape item.cape_nostalgia.name=DrNostalgia's Cape item.cape_radiation.name=Cape (Radiation) diff --git a/src/main/resources/assets/hbm/textures/models/capes/CapeHidden.png b/src/main/resources/assets/hbm/textures/models/capes/CapeHidden.png new file mode 100644 index 0000000000000000000000000000000000000000..948b34fdff7514ebfeaf9604c79697ce6254a7ef GIT binary patch literal 637 zcmV-@0)qXCP)A$To$0Qbbejg$f+&`v7r}#v9K7}J2k@&3g5b@9 z2f=_KNLA3K1S#!oP1u>n!?N4`m*Am+EX;En-kl8d`@QeHGw}cpUq4(vKh+pxI5`kB z5ke3}5wqE>7M~>D^Dp22^;*F##k>1ze>ofuIlc^ex4U3IpO+t_C;~t!MVh8)t;w>i zwMdr{=Wlc`Ob`I``J6O09HaPfe^8s?c^+w+){JS=RRw)P00cpR)*7ufXP!U^!NJv% zWZ+?p0U!*+a=eO3l7H`$AwGbVl3(Mn3>ss2bYTgCfG`XZqAqBXm{M%t@ryw+@Hmfi zu|fzwJ_wOg0&sY-EXQ3`4NBv1<-Bb~OcKLzXm~$@@B0F5p7}!XBr#ZP`TZY@<)v>o zy5ZZVtbizrkWvx^0YKU9tFeOFs9#xLhY#>I%+GVz6*nE&R{4L6Y^%||tUnQYgMV@$ zI2#6JS;izW+|zjpODV~+jPpA_KX&8eRKt3iJ{e-$6VT3ZT#vbYgaWd6slhqdd^ z_UCw0Tih&V4|uHePOp?=G#a6lTKS{qwOG){tFbgdO3CzSk1tQh0K{>OQflS(SBPzz z@$4$-n!dG^2279kh~s)4S50W%1YHOrP#25a-{l7JflhHnhT}M9FKw6hpK;W=V4t4B zP^o}s_CM|1Wb(yzyC0kmTA|*Fhsu9}CW~=h^tz{Tl~oPW;cz${4u`|xa5x+e$JX!< X!Edc}bQUfo00000NkvXXu0mjf7W5*G literal 0 HcmV?d00001 diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index 84a3db2de..3b8a1cf2a 100755 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -3,7 +3,7 @@ "modid": "hbm", "name": "Hbm's Nuclear Tech", "description": "A mod that adds weapons, nuclear themed stuff and machines", - "version":"1.0.27_X4174", + "version":"1.0.27_X4178", "mcversion": "1.7.10", "url": "", "updateUrl": "", From 891b747e78ac8d0cc6059324a41eb702a383c6ee Mon Sep 17 00:00:00 2001 From: Doctor17-git <60807716+Doctor17-git@users.noreply.github.com> Date: Sat, 19 Mar 2022 16:34:47 +0300 Subject: [PATCH 10/10] Updated ru_RU.lang MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit впвавпавпвавпвавпвавпавп --- src/main/resources/assets/hbm/lang/ru_RU.lang | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index f8536b14c..2148361ee 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -1305,6 +1305,7 @@ container.generator=Ядерный реактор tile.red_wire_coated.name=Медный кабель с покрытием tile.cable_switch.name=Рубильник tile.cable_detector.name=Редстоун-рубильник +tile.cable_diode.name=Диод из красной меди tile.machine_deuterium.name=Дейтериевый экстрактор container.machine_deuterium=Дейтериевый экстрактор tile.machine_battery_potato.name=Картофельная батарея @@ -4181,6 +4182,7 @@ tile.tektite.name=Тектит item.cape_radiation.name=Плащ (Радиация) item.cape_gasmask.name=Плащ (Противогаз) item.cape_schrabidium.name=Плащ (Шрабидий) +item.cape_hidden.name=Скрытый плащ item.cape_hbm.name=Hbm's Cape item.cape_dafnik.name=Dafnik's Cape item.cape_lpkukin.name=LPkukin's Cape @@ -4989,7 +4991,6 @@ tile.mush_block_stem.name=Giant Glowing Mushroom Stem tile.ore_oil.desc=You weren't supposed to mine that.$Come on, get a derrick you doofus. tile.pane_acrylic.name=Acrylic Pane tile.pane_actinium.name=Actinium Glass Pane -tile.reinforced_ducrete.name=Heavy Rebar Reinforced DUCRETE tile.storage_aux_fdd.name=Auxiliary Floppy Disk Drive tile.storage_aux_optical_bd=Auxiliary Elite Optical Drive tile.storage_aux_optical_cd=Auxiliary Basic Optical Drive