From ed829fc7ec2ac953c00a4952b7a15356faa3b87e Mon Sep 17 00:00:00 2001 From: Boblet Date: Thu, 20 Apr 2023 16:41:17 +0200 Subject: [PATCH 1/6] riveting, block tooling crafting handler --- src/main/java/api/hbm/block/IToolable.java | 31 ++- src/main/java/com/hbm/blocks/ModBlocks.java | 3 +- .../com/hbm/blocks/generic/BlockBoltable.java | 72 ------- .../blocks/generic/BlockToolConversion.java | 176 ++++++++++++++++++ .../hbm/handler/nei/NEIUniversalHandler.java | 29 ++- .../com/hbm/handler/nei/ToolingHandler.java | 15 ++ .../java/com/hbm/inventory/RecipesCommon.java | 36 +++- .../com/hbm/items/tool/ItemBlowtorch.java | 2 + .../java/com/hbm/items/tool/ItemBoltgun.java | 2 + .../java/com/hbm/items/tool/ItemTooling.java | 2 + src/main/java/com/hbm/main/MainRegistry.java | 2 + src/main/java/com/hbm/main/NEIConfig.java | 1 + .../tileentity/RenderWatzMultiblock.java | 16 +- .../machine/TileEntityWatzStruct.java | 24 ++- .../textures/blocks/watz_casing_bolted.png | Bin 0 -> 410 bytes 15 files changed, 309 insertions(+), 102 deletions(-) delete mode 100644 src/main/java/com/hbm/blocks/generic/BlockBoltable.java create mode 100644 src/main/java/com/hbm/blocks/generic/BlockToolConversion.java create mode 100644 src/main/java/com/hbm/handler/nei/ToolingHandler.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/watz_casing_bolted.png diff --git a/src/main/java/api/hbm/block/IToolable.java b/src/main/java/api/hbm/block/IToolable.java index 429a14d59..64c57adb7 100644 --- a/src/main/java/api/hbm/block/IToolable.java +++ b/src/main/java/api/hbm/block/IToolable.java @@ -1,6 +1,13 @@ package api.hbm.block; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import com.hbm.inventory.RecipesCommon.ComparableStack; + import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; import net.minecraft.world.World; public interface IToolable { @@ -13,6 +20,28 @@ public interface IToolable { DEFUSER, WRENCH, TORCH, - BOLT + BOLT; + + public List stacksForDisplay = new ArrayList(); + private static HashMap map = new HashMap(); + + public void register(ItemStack stack) { + stacksForDisplay.add(stack); + } + + public static ToolType getType(ItemStack stack) { + + if(!map.isEmpty()) { + return map.get(new ComparableStack(stack)); + } + + for(ToolType type : ToolType.values()) { + for(ItemStack tool : type.stacksForDisplay) { + map.put(new ComparableStack(tool), type); + } + } + + return map.get(new ComparableStack(stack)); + } } } diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index b3b3d3e51..08312db55 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -23,6 +23,7 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.DoorDecl; import com.hbm.tileentity.machine.storage.TileEntityFileCabinet; +import api.hbm.block.IToolable.ToolType; import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.block.Block; import net.minecraft.block.BlockFalling; @@ -1981,7 +1982,7 @@ public class ModBlocks { watz_element = new BlockPillar(Material.iron, RefStrings.MODID + ":watz_element_top").setBlockName("watz_element").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_element_side"); watz_control = new BlockPillar(Material.iron, RefStrings.MODID + ":watz_control_top").setBlockName("watz_control").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_control_side"); watz_cooler = new BlockGeneric(Material.iron).setBlockName("watz_cooler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_cooler"); - watz_end = new BlockBoltable(Material.iron).setBlockName("watz_end").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_casing"); + watz_end = new BlockToolConversion(Material.iron).addVariant("_bolted").setBlockName("watz_end").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_casing"); watz_hatch = new WatzHatch(Material.iron).setBlockName("watz_hatch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_hatch"); watz_conductor = new BlockCableConnect(Material.iron).setBlockName("watz_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_conductor_top"); watz_core = new WatzCore(Material.iron).setBlockName("watz_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_computer"); diff --git a/src/main/java/com/hbm/blocks/generic/BlockBoltable.java b/src/main/java/com/hbm/blocks/generic/BlockBoltable.java deleted file mode 100644 index 87ff806ed..000000000 --- a/src/main/java/com/hbm/blocks/generic/BlockBoltable.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.hbm.blocks.generic; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.blocks.BlockBase; -import com.hbm.blocks.IBlockMulti; -import com.hbm.blocks.ILookOverlay; -import com.hbm.inventory.RecipesCommon.AStack; -import com.hbm.items.ModItems; -import com.hbm.util.I18nUtil; - -import api.hbm.block.IToolable; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.material.Material; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.world.World; -import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; - -public class BlockBoltable extends BlockBase implements IToolable, ILookOverlay, IBlockMulti { - - public BlockBoltable(Material mat) { - super(mat); - } - - @Override - public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { - if(tool != ToolType.BOLT) return false; - - return true; - } - - public List getMaterials(int meta) { - List list = new ArrayList(); - - return list; - } - - @Override - @SideOnly(Side.CLIENT) - public void printHook(Pre event, World world, int x, int y, int z) { - - ItemStack held = Minecraft.getMinecraft().thePlayer.getHeldItem(); - if(held == null || held.getItem() != ModItems.boltgun) return; - - List text = new ArrayList(); - text.add(EnumChatFormatting.GOLD + "Requires:"); - List materials = getMaterials(world.getBlockMetadata(x, y, z)); - - for(AStack stack : materials) { - try { - ItemStack display = stack.extractForCyclingDisplay(20); - text.add("- " + display.getDisplayName() + " x" + display.stackSize); - } catch(Exception ex) { - text.add(EnumChatFormatting.RED + "- ERROR"); - } - } - - if(!materials.isEmpty()) { - ILookOverlay.printGeneric(event, I18nUtil.resolveKey(this.getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); - } - } - - @Override - public int getSubCount() { - return 1; - } -} diff --git a/src/main/java/com/hbm/blocks/generic/BlockToolConversion.java b/src/main/java/com/hbm/blocks/generic/BlockToolConversion.java new file mode 100644 index 000000000..5f7314d28 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockToolConversion.java @@ -0,0 +1,176 @@ +package com.hbm.blocks.generic; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map.Entry; + +import com.hbm.blocks.BlockBase; +import com.hbm.blocks.IBlockMulti; +import com.hbm.blocks.ILookOverlay; +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.inventory.RecipesCommon.MetaBlock; +import com.hbm.items.ModItems; +import com.hbm.util.I18nUtil; +import com.hbm.util.InventoryUtil; +import com.hbm.util.Tuple.Pair; + +import api.hbm.block.IToolable; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +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; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +public class BlockToolConversion extends BlockBase implements IToolable, ILookOverlay, IBlockMulti { + + public IIcon[] icons; + public String[] names; + + public BlockToolConversion(Material mat) { + super(mat); + } + + public BlockToolConversion addVariant(String... name) { + this.names = name; + return this; + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubBlocks(Item item, CreativeTabs tab, List list) { + for(int i = 0; i < getSubCount(); ++i) { + list.add(new ItemStack(item, 1, i)); + } + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + super.registerBlockIcons(iconRegister); + + if(names != null) { + icons = new IIcon[names.length]; + for(int i = 0; i < names.length; i++) { + icons[i] = iconRegister.registerIcon(getTextureName() + names[i]); + } + } + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + + metadata -= 1; + + if(metadata == -1 || icons == null || metadata >= icons.length) { + return super.getIcon(side, metadata); + } + + return icons[metadata]; + } + + @Override + public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { + + if(world.isRemote) return false; + + Pair result = conversions.get(new Pair(tool, new MetaBlock(this, world.getBlockMetadata(x, y, z)))); + + if(result == null) return false; + + List list = new ArrayList(); + for(AStack stack : result.key) list.add(stack); + + if(list == null || list.isEmpty() || InventoryUtil.doesPlayerHaveAStacks(player, list, true)) { + world.setBlock(x, y, z, result.value.block, result.value.meta, 3); + } + + return true; + } + + @Override + @SideOnly(Side.CLIENT) + public void printHook(Pre event, World world, int x, int y, int z) { + + ItemStack held = Minecraft.getMinecraft().thePlayer.getHeldItem(); + if(held == null) return; + ToolType tool = this.quickLookup(held); + if(tool == null) return; + + Pair result = conversions.get(new Pair(tool, new MetaBlock(this, world.getBlockMetadata(x, y, z)))); + + if(result == null) return; + + List text = new ArrayList(); + text.add(EnumChatFormatting.GOLD + "Requires:"); + List materials = new ArrayList(); + for(AStack stack : result.key) materials.add(stack); + + List tools = tool.stacksForDisplay; + ItemStack displayTool = tools.get((int) (Math.abs(System.currentTimeMillis() / 1000) % tools.size())); + text.add(EnumChatFormatting.BLUE + "- " + displayTool.getDisplayName()); + + for(AStack stack : materials) { + try { + ItemStack display = stack.extractForCyclingDisplay(20); + text.add("- " + display.getDisplayName() + " x" + display.stackSize); + } catch(Exception ex) { + text.add(EnumChatFormatting.RED + "- ERROR"); + } + } + + if(!materials.isEmpty()) { + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(this.getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } + } + + @Override + public int getSubCount() { + return names != null ? names.length + 1 : 1; + } + + public static ToolType quickLookup(ItemStack stack) { + return ToolType.getType(stack); + } + + public static HashMap, Pair> conversions = new HashMap(); + + public static void registerRecipes() { + conversions.put(new Pair(ToolType.BOLT, new MetaBlock(ModBlocks.watz_end, 0)), new Pair(new AStack[] {new ComparableStack(ModItems.bolt_dura_steel, 4)}, new MetaBlock(ModBlocks.watz_end, 1))); + } + + public static HashMap bufferedRecipes = new HashMap(); + public static HashMap bufferedTools = new HashMap(); + + public static HashMap getRecipes(boolean recipes) { + + if(!bufferedRecipes.isEmpty()) return recipes ? bufferedRecipes : bufferedTools; + + for(Entry, Pair> entry : conversions.entrySet()) { + + List list = new ArrayList(); + + for(AStack stack : entry.getValue().getKey()) { + list.add(stack); + } + list.add(new ComparableStack(entry.getKey().getValue().block, 1, entry.getKey().getValue().meta)); + + Object[] inputInstance = list.toArray(new AStack[0]); // the instance has to match for the machine lookup to succeed + bufferedRecipes.put(inputInstance, new ItemStack(entry.getValue().getValue().block, 1, entry.getValue().getValue().meta)); + bufferedTools.put(inputInstance, entry.getKey().getKey().stacksForDisplay.toArray(new ItemStack[0])); + } + + return recipes ? bufferedRecipes : bufferedTools; + } +} diff --git a/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java b/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java index b7424e12e..73dca100b 100644 --- a/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java +++ b/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java @@ -32,12 +32,19 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler { public final String display; public final ItemStack[] machine; public final HashMap recipes; + public HashMap machineOverrides; /// SETUP /// - + public NEIUniversalHandler(String display, ItemStack machine[], HashMap recipes) { this.display = display; this.machine = machine; this.recipes = recipes; + this.machineOverrides = null; + } + + public NEIUniversalHandler(String display, HashMap recipes, HashMap machines) { + this(display, (ItemStack[]) null, recipes); + this.machineOverrides = machines; } public NEIUniversalHandler(String display, ItemStack machine, HashMap recipes) { this(display, new ItemStack[]{machine}, recipes); } @@ -50,7 +57,7 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler { PositionedStack[] output; PositionedStack machinePositioned; - public RecipeSet(ItemStack[][] in, ItemStack[][] out) { + public RecipeSet(ItemStack[][] in, ItemStack[][] out, Object originalInputInstance /* for custom machine lookup */) { input = new PositionedStack[in.length]; for(int i = 0; i < in.length; i++) { @@ -65,7 +72,17 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler { this.output[i] = new PositionedStack(sub, 102 + i * 18 - ((twos && i > 1) ? 36 : 0), 24 + (twos ? (i < 2 ? -9 : 9) : 0)); } - this.machinePositioned = new PositionedStack(machine, 75, 31); + ItemStack[] m = machine; + + if(NEIUniversalHandler.this.machineOverrides != null) { + Object key = NEIUniversalHandler.this.machineOverrides.get(originalInputInstance); + + if(key != null) { + this.machinePositioned = new PositionedStack(key, 75, 31); + } + } + + if(machinePositioned == null) this.machinePositioned = new PositionedStack(m, 75, 31); } @Override @@ -123,7 +140,7 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler { for(Entry recipe : recipes.entrySet()) { ItemStack[][] ins = InventoryUtil.extractObject(recipe.getKey()); ItemStack[][] outs = InventoryUtil.extractObject(recipe.getValue()); - this.arecipes.add(new RecipeSet(ins, outs)); + this.arecipes.add(new RecipeSet(ins, outs, recipe.getKey())); } } else { @@ -142,7 +159,7 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler { for(ItemStack[] array : outs) { for(ItemStack stack : array) { if(NEIServerUtils.areStacksSameTypeCrafting(stack, result)) { - this.arecipes.add(new RecipeSet(ins, outs)); + this.arecipes.add(new RecipeSet(ins, outs, recipe.getKey())); break match; } } @@ -170,7 +187,7 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler { for(ItemStack[] array : ins) { for(ItemStack stack : array) { if(NEIServerUtils.areStacksSameTypeCrafting(stack, ingredient)) { - this.arecipes.add(new RecipeSet(ins, outs)); + this.arecipes.add(new RecipeSet(ins, outs, recipe.getKey())); break match; } } diff --git a/src/main/java/com/hbm/handler/nei/ToolingHandler.java b/src/main/java/com/hbm/handler/nei/ToolingHandler.java new file mode 100644 index 000000000..c50074f1e --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/ToolingHandler.java @@ -0,0 +1,15 @@ +package com.hbm.handler.nei; + +import com.hbm.blocks.generic.BlockToolConversion; + +public class ToolingHandler extends NEIUniversalHandler { + + public ToolingHandler() { + super("Tooling", BlockToolConversion.getRecipes(true), BlockToolConversion.getRecipes(false)); + } + + @Override + public String getKey() { + return "ntmTooling"; + } +} diff --git a/src/main/java/com/hbm/inventory/RecipesCommon.java b/src/main/java/com/hbm/inventory/RecipesCommon.java index f26af74e1..2b1191f55 100644 --- a/src/main/java/com/hbm/inventory/RecipesCommon.java +++ b/src/main/java/com/hbm/inventory/RecipesCommon.java @@ -455,17 +455,41 @@ public class RecipesCommon { this.block = block; this.meta = meta; } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + Block.blockRegistry.getNameForObject(block).hashCode(); + result = prime * result + meta; + return result; + } + + @Override + public boolean equals(Object obj) { + if(this == obj) + return true; + if(obj == null) + return false; + if(getClass() != obj.getClass()) + return false; + MetaBlock other = (MetaBlock) obj; + if(block == null) { + if(other.block != null) + return false; + } else if(!block.equals(other.block)) + return false; + if(meta != other.meta) + return false; + return true; + } 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; + @Deprecated public int getID() { + return hashCode(); } } diff --git a/src/main/java/com/hbm/items/tool/ItemBlowtorch.java b/src/main/java/com/hbm/items/tool/ItemBlowtorch.java index cb200d6ec..172e0fa4a 100644 --- a/src/main/java/com/hbm/items/tool/ItemBlowtorch.java +++ b/src/main/java/com/hbm/items/tool/ItemBlowtorch.java @@ -31,6 +31,8 @@ public class ItemBlowtorch extends Item implements IFillableItem { this.setMaxStackSize(1); this.setFull3D(); this.setCreativeTab(MainRegistry.controlTab); + + ToolType.TORCH.register(new ItemStack(this)); } @Override diff --git a/src/main/java/com/hbm/items/tool/ItemBoltgun.java b/src/main/java/com/hbm/items/tool/ItemBoltgun.java index e0c1e0999..3a1605028 100644 --- a/src/main/java/com/hbm/items/tool/ItemBoltgun.java +++ b/src/main/java/com/hbm/items/tool/ItemBoltgun.java @@ -26,6 +26,8 @@ public class ItemBoltgun extends Item implements IAnimatedItem { public ItemBoltgun() { this.setMaxStackSize(1); + + ToolType.BOLT.register(new ItemStack(this)); } @Override diff --git a/src/main/java/com/hbm/items/tool/ItemTooling.java b/src/main/java/com/hbm/items/tool/ItemTooling.java index f0c4119da..58bfd687a 100644 --- a/src/main/java/com/hbm/items/tool/ItemTooling.java +++ b/src/main/java/com/hbm/items/tool/ItemTooling.java @@ -18,6 +18,8 @@ public class ItemTooling extends ItemCraftingDegradation { this.type = type; this.setFull3D(); this.setCreativeTab(MainRegistry.controlTab); + + type.register(new ItemStack(this)); } @Override diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 17d3dae1f..e9908af75 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -46,6 +46,7 @@ import com.google.common.collect.ImmutableList; import com.hbm.blocks.BlockEnums.EnumStoneType; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockMotherOfAllOres; +import com.hbm.blocks.generic.BlockToolConversion; import com.hbm.commands.CommandReloadRecipes; import com.hbm.config.*; import com.hbm.creativetabs.*; @@ -829,6 +830,7 @@ public class MainRegistry { HazmatRegistry.registerHazmats(); FluidContainerRegistry.register(); TileEntityMachineReactorLarge.registerAll(); + BlockToolConversion.registerRecipes(); proxy.registerMissileItems(); diff --git a/src/main/java/com/hbm/main/NEIConfig.java b/src/main/java/com/hbm/main/NEIConfig.java index 29e4cc9de..161af3bea 100644 --- a/src/main/java/com/hbm/main/NEIConfig.java +++ b/src/main/java/com/hbm/main/NEIConfig.java @@ -53,6 +53,7 @@ public class NEIConfig implements IConfigureNEI { registerHandler(new CrucibleSmeltingHandler()); registerHandler(new CrucibleAlloyingHandler()); registerHandler(new CrucibleCastingHandler()); + registerHandler(new ToolingHandler()); //universal boyes registerHandler(new ZirnoxRecipeHandler()); diff --git a/src/main/java/com/hbm/render/tileentity/RenderWatzMultiblock.java b/src/main/java/com/hbm/render/tileentity/RenderWatzMultiblock.java index 973029bf9..51159d7bc 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderWatzMultiblock.java +++ b/src/main/java/com/hbm/render/tileentity/RenderWatzMultiblock.java @@ -44,15 +44,15 @@ public class RenderWatzMultiblock extends TileEntitySpecialRenderer { SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_cooler, 0, 1F, i, -2F); SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_cooler, 0, -1F, i, -2F); for(int j = -1; j < 2; j++) { - SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 0, 3F, i, j); - SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 0, j, i, 3F); - SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 0, -3F, i, j); - SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 0, j, i, -3F); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, 3F, i, j); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, j, i, 3F); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, -3F, i, j); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, j, i, -3F); } - SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 0, 2F, i, 2F); - SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 0, 2F, i, -2F); - SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 0, -2F, i, 2F); - SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 0, -2F, i, -2F); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, 2F, i, 2F); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, 2F, i, -2F); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, -2F, i, 2F); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, -2F, i, -2F); } SmallBlockPronter.draw(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityWatzStruct.java b/src/main/java/com/hbm/tileentity/machine/TileEntityWatzStruct.java index f363b5945..10ba21058 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityWatzStruct.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityWatzStruct.java @@ -49,15 +49,15 @@ public class TileEntityWatzStruct extends TileEntity { if(!cbr(ModBlocks.watz_cooler, -1, i, -2)) return; for(int j = -1; j < 2; j++) { - if(!cbr(ModBlocks.watz_end, 3, i, j)) return; - if(!cbr(ModBlocks.watz_end, j, i, 3)) return; - if(!cbr(ModBlocks.watz_end, -3, i, j)) return; - if(!cbr(ModBlocks.watz_end, j, i, -3)) return; + if(!cbr(ModBlocks.watz_end, 1, 3, i, j)) return; + if(!cbr(ModBlocks.watz_end, 1, j, i, 3)) return; + if(!cbr(ModBlocks.watz_end, 1, -3, i, j)) return; + if(!cbr(ModBlocks.watz_end, 1, j, i, -3)) return; } - if(!cbr(ModBlocks.watz_end, 2, i, 2)) return; - if(!cbr(ModBlocks.watz_end, 2, i, -2)) return; - if(!cbr(ModBlocks.watz_end, -2, i, 2)) return; - if(!cbr(ModBlocks.watz_end, -2, i, -2)) return; + if(!cbr(ModBlocks.watz_end, 1, 2, i, 2)) return; + if(!cbr(ModBlocks.watz_end, 1, 2, i, -2)) return; + if(!cbr(ModBlocks.watz_end, 1, -2, i, 2)) return; + if(!cbr(ModBlocks.watz_end, 1, -2, i, -2)) return; } Watz watz = (Watz)ModBlocks.watz; @@ -72,10 +72,18 @@ public class TileEntityWatzStruct extends TileEntity { return worldObj.getBlock(xCoord + x, yCoord + y, zCoord + z); } + /** [G]et [M]eta at [R]elative position */ + private int gmr(int x, int y, int z) { + return worldObj.getBlockMetadata(xCoord + x, yCoord + y, zCoord + z); + } + /** [C]heck [B]lock at [R]elative position */ private boolean cbr(Block b, int x, int y, int z) { return b == gbr(x, y, z); } + private boolean cbr(Block b, int meta, int x, int y, int z) { + return b == gbr(x, y, z) && meta == gmr(x, y, z); + } AxisAlignedBB bb = null; diff --git a/src/main/resources/assets/hbm/textures/blocks/watz_casing_bolted.png b/src/main/resources/assets/hbm/textures/blocks/watz_casing_bolted.png new file mode 100644 index 0000000000000000000000000000000000000000..a52fac3c7ff74fb5497ec382ee1cd17d541608f0 GIT binary patch literal 410 zcmV;L0cHM)P)S(2>_YBz5>t9t!<_rw|4~&{cOpC0H2}A^7_`<;exqHU-)GY)r@HR!`ma0a^U*HP@BJOi&>Cx5FP9vO;%Uv! zd+hoAJH)=Y-+x~$TS|Zc-`8uZrU_G)eq-KPi%L_R_h_vjcOV(!Jxh=w9w+EjFd2{e zSgnGC);hFtxn4VWA{J&KqWDOp1?f3vVk+MAko|WjKL->@;0S+y#{d8T07*qoM6N<$ Ef__-C8vp Date: Fri, 21 Apr 2023 14:39:33 +0200 Subject: [PATCH 2/6] multiblock construction NEI handler (wow!), better bolting --- .../java/com/hbm/blocks/BlockEnumMulti.java | 13 ++ src/main/java/com/hbm/blocks/BlockMulti.java | 4 + src/main/java/com/hbm/blocks/ModBlocks.java | 3 +- .../blocks/generic/BlockToolConversion.java | 27 ++-- .../java/com/hbm/blocks/machine/Watz.java | 22 ++++ .../hbm/handler/nei/ConstructionHandler.java | 59 +++++++++ .../hbm/handler/nei/NEIUniversalHandler.java | 119 ++++++++++++++++-- .../com/hbm/items/block/ItemBlockBase.java | 9 +- .../java/com/hbm/items/tool/ItemBoltgun.java | 47 +++++++ src/main/java/com/hbm/main/NEIConfig.java | 1 + .../hbm/render/item/ItemRenderBoltgun.java | 4 + .../machine/TileEntityWatzStruct.java | 2 +- src/main/resources/assets/hbm/lang/de_DE.lang | 3 + src/main/resources/assets/hbm/lang/en_US.lang | 3 + .../hbm/textures/blocks/watz_cooler_side.png | Bin 0 -> 128 bytes .../hbm/textures/blocks/watz_cooler_top.png | Bin 0 -> 460 bytes .../hbm/textures/models/weapons/boltgun.png | Bin 1069 -> 1148 bytes 17 files changed, 284 insertions(+), 32 deletions(-) create mode 100644 src/main/java/com/hbm/handler/nei/ConstructionHandler.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/watz_cooler_side.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/watz_cooler_top.png diff --git a/src/main/java/com/hbm/blocks/BlockEnumMulti.java b/src/main/java/com/hbm/blocks/BlockEnumMulti.java index bca10f87e..5ee6e4660 100644 --- a/src/main/java/com/hbm/blocks/BlockEnumMulti.java +++ b/src/main/java/com/hbm/blocks/BlockEnumMulti.java @@ -1,9 +1,12 @@ package com.hbm.blocks; +import com.hbm.util.EnumUtil; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; public class BlockEnumMulti extends BlockMulti { @@ -38,6 +41,16 @@ public class BlockEnumMulti extends BlockMulti { } } + public String getUnlocalizedName(ItemStack stack) { + + if(this.multiName) { + Enum num = EnumUtil.grabEnumSafely(this.theEnum, stack.getItemDamage()); + return super.getUnlocalizedName() + "." + num.name().toLowerCase(); + } + + return this.getUnlocalizedName(); + } + @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { diff --git a/src/main/java/com/hbm/blocks/BlockMulti.java b/src/main/java/com/hbm/blocks/BlockMulti.java index 21930f6ff..1741d9316 100644 --- a/src/main/java/com/hbm/blocks/BlockMulti.java +++ b/src/main/java/com/hbm/blocks/BlockMulti.java @@ -31,4 +31,8 @@ public abstract class BlockMulti extends BlockBase implements IBlockMulti { list.add(new ItemStack(item, 1, i)); } } + + public String getUnlocalizedName(ItemStack stack) { + return this.getUnlocalizedName(); + } } diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 08312db55..4e7c82139 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -23,7 +23,6 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.DoorDecl; import com.hbm.tileentity.machine.storage.TileEntityFileCabinet; -import api.hbm.block.IToolable.ToolType; import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.block.Block; import net.minecraft.block.BlockFalling; @@ -1981,7 +1980,7 @@ public class ModBlocks { watz_element = new BlockPillar(Material.iron, RefStrings.MODID + ":watz_element_top").setBlockName("watz_element").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_element_side"); watz_control = new BlockPillar(Material.iron, RefStrings.MODID + ":watz_control_top").setBlockName("watz_control").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_control_side"); - watz_cooler = new BlockGeneric(Material.iron).setBlockName("watz_cooler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_cooler"); + watz_cooler = new BlockPillar(Material.iron, RefStrings.MODID + ":watz_cooler_top").setBlockName("watz_cooler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_cooler_side"); watz_end = new BlockToolConversion(Material.iron).addVariant("_bolted").setBlockName("watz_end").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_casing"); watz_hatch = new WatzHatch(Material.iron).setBlockName("watz_hatch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_hatch"); watz_conductor = new BlockCableConnect(Material.iron).setBlockName("watz_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_conductor_top"); diff --git a/src/main/java/com/hbm/blocks/generic/BlockToolConversion.java b/src/main/java/com/hbm/blocks/generic/BlockToolConversion.java index 5f7314d28..ddb34f66e 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockToolConversion.java +++ b/src/main/java/com/hbm/blocks/generic/BlockToolConversion.java @@ -5,8 +5,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map.Entry; -import com.hbm.blocks.BlockBase; -import com.hbm.blocks.IBlockMulti; +import com.hbm.blocks.BlockMulti; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ModBlocks; import com.hbm.inventory.RecipesCommon.AStack; @@ -23,16 +22,14 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.material.Material; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.creativetab.CreativeTabs; 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; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; -public class BlockToolConversion extends BlockBase implements IToolable, ILookOverlay, IBlockMulti { +public class BlockToolConversion extends BlockMulti implements IToolable, ILookOverlay { public IIcon[] icons; public String[] names; @@ -45,14 +42,6 @@ public class BlockToolConversion extends BlockBase implements IToolable, ILookOv this.names = name; return this; } - - @Override - @SideOnly(Side.CLIENT) - public void getSubBlocks(Item item, CreativeTabs tab, List list) { - for(int i = 0; i < getSubCount(); ++i) { - list.add(new ItemStack(item, 1, i)); - } - } @Override @SideOnly(Side.CLIENT) @@ -66,6 +55,18 @@ public class BlockToolConversion extends BlockBase implements IToolable, ILookOv } } } + + @Override + public String getUnlocalizedName(ItemStack stack) { + + int meta = stack.getItemDamage() - 1; + + if(meta == -1 || names == null || meta >= names.length) { + return this.getUnlocalizedName(); + } + + return this.getUnlocalizedName() + names[meta]; + } @Override @SideOnly(Side.CLIENT) diff --git a/src/main/java/com/hbm/blocks/machine/Watz.java b/src/main/java/com/hbm/blocks/machine/Watz.java index 46de57e92..8a975bbc2 100644 --- a/src/main/java/com/hbm/blocks/machine/Watz.java +++ b/src/main/java/com/hbm/blocks/machine/Watz.java @@ -1,12 +1,17 @@ package com.hbm.blocks.machine; import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; import com.hbm.handler.MultiblockHandlerXR; +import com.hbm.items.ModItems; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityWatz; +import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -71,4 +76,21 @@ public class Watz extends BlockDummyable { this.makeExtra(world, x, y + 2, z - 2); this.makeExtra(world, x, y + 2, z); } + + public static boolean drop = true; + + @Override + public void breakBlock(World world, int x, int y, int z, Block block, int i) { + + if(i >= 12 && drop) { + + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.watz_end, 48))); + for(int j = 0; j < 3; j++) world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.bolt_dura_steel, 64))); + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.watz_element, 36))); + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.watz_cooler, 26))); + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_watz_core, 1))); + } + + super.breakBlock(world, x, y, z, block, i); + } } diff --git a/src/main/java/com/hbm/handler/nei/ConstructionHandler.java b/src/main/java/com/hbm/handler/nei/ConstructionHandler.java new file mode 100644 index 000000000..e6b93517f --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/ConstructionHandler.java @@ -0,0 +1,59 @@ +package com.hbm.handler.nei; + +import java.util.HashMap; + +import com.hbm.blocks.ModBlocks; +import com.hbm.items.ModItems; + +import net.minecraft.item.ItemStack; + +public class ConstructionHandler extends NEIUniversalHandler { + + public ConstructionHandler() { + super("Construction", getRecipes(true), getRecipes(false)); + } + + @Override + public String getKey() { + return "ntmConstruction"; + } + + public static HashMap bufferedRecipes = new HashMap(); + public static HashMap bufferedTools = new HashMap(); + + public static HashMap getRecipes(boolean recipes) { + + if(!bufferedRecipes.isEmpty()) { + return recipes ? bufferedRecipes : bufferedTools; + } + + /* WATZ */ + ItemStack[] watz = new ItemStack[] { + new ItemStack(ModBlocks.watz_end, 48), + new ItemStack(ModItems.bolt_dura_steel, 64), + new ItemStack(ModItems.bolt_dura_steel, 64), + new ItemStack(ModItems.bolt_dura_steel, 64), + new ItemStack(ModBlocks.watz_element, 36), + new ItemStack(ModBlocks.watz_cooler, 26), + new ItemStack(ModItems.boltgun)}; + + bufferedRecipes.put(watz, new ItemStack(ModBlocks.watz)); + bufferedTools.put(watz, new ItemStack(ModBlocks.struct_watz_core)); + + /* ITER */ + ItemStack[] iter = new ItemStack[] { + new ItemStack(ModBlocks.fusion_conductor, 64), + new ItemStack(ModBlocks.fusion_conductor, 64), + new ItemStack(ModBlocks.fusion_conductor, 64), + new ItemStack(ModBlocks.fusion_conductor, 64), + new ItemStack(ModBlocks.fusion_conductor, 36), + new ItemStack(ModBlocks.fusion_center, 64), + new ItemStack(ModBlocks.fusion_motor, 4), + new ItemStack(ModBlocks.reinforced_glass, 8)}; + + bufferedRecipes.put(iter, new ItemStack(ModBlocks.iter)); + bufferedTools.put(iter, new ItemStack(ModBlocks.struct_iter_core)); + + return recipes ? bufferedRecipes : bufferedTools; + } +} diff --git a/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java b/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java index 73dca100b..8d5772be4 100644 --- a/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java +++ b/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java @@ -60,16 +60,16 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler { public RecipeSet(ItemStack[][] in, ItemStack[][] out, Object originalInputInstance /* for custom machine lookup */) { input = new PositionedStack[in.length]; + int[][] inPos = NEIUniversalHandler.getInputCoords(in.length); for(int i = 0; i < in.length; i++) { ItemStack[] sub = in[i]; - this.input[i] = new PositionedStack(sub, 48 + i * -18, 24); + this.input[i] = new PositionedStack(sub, inPos[i][0], inPos[i][1]); } output = new PositionedStack[out.length]; + int[][] outPos = NEIUniversalHandler.getOutputCoords(out.length); for(int i = 0; i < out.length; i++) { ItemStack[] sub = out[i]; - - boolean twos = out.length > 3; - this.output[i] = new PositionedStack(sub, 102 + i * 18 - ((twos && i > 1) ? 36 : 0), 24 + (twos ? (i < 2 ? -9 : 9) : 0)); + this.output[i] = new PositionedStack(sub, outPos[i][0], outPos[i][1]); } ItemStack[] m = machine; @@ -121,16 +121,115 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler { super.drawBackground(recipe); RecipeSet rec = (RecipeSet) this.arecipes.get(recipe); - - for(int i = 0; i < rec.input.length; i++) - drawTexturedModalRect(47 + i * -18, 23, 5, 87, 18, 18); - for(int i = 0; i < rec.output.length; i++) { - boolean twos = rec.output.length > 3; - drawTexturedModalRect(101 + i * 18 - ((twos && i > 1) ? 36 : 0), 23 + (twos ? (i < 2 ? -9 : 9) : 0), 5, 87, 18, 18); + + int[][] inPos = NEIUniversalHandler.getInputCoords(rec.input.length); + for(int[] pos : inPos) { + drawTexturedModalRect(pos[0] - 1, pos[1] - 1, 5, 87, 18, 18); + } + int[][] outPos = NEIUniversalHandler.getOutputCoords(rec.output.length); + for(int[] pos : outPos) { + drawTexturedModalRect(pos[0] - 1, pos[1] - 1, 5, 87, 18, 18); } drawTexturedModalRect(74, 14, 59, 87, 18, 38); } + + public static int[][] getInputCoords(int count) { + + switch(count) { + case 1: return new int[][] { + {48, 24} + }; + case 2: return new int[][] { + {48, 24}, + {30, 24} + }; + case 3: return new int[][] { + {48, 24}, + {30, 24}, + {12, 24} + }; + case 4: return new int[][] { + {48, 24 - 9}, + {30, 24 - 9}, + {48, 24 + 9}, + {30, 24 + 9} + }; + case 5: return new int[][] { + {48, 24 - 9}, + {30, 24 - 9}, + {12, 24}, + {48, 24 + 9}, + {30, 24 + 9}, + }; + case 6: return new int[][] { + {48, 24 - 9}, + {30, 24 - 9}, + {12, 24 - 9}, + {48, 24 + 9}, + {30, 24 + 9}, + {12, 24 + 9} + }; + case 7: return new int[][] { + {48, 24 - 18}, + {30, 24 - 9}, + {12, 24 - 9}, + {48, 24}, + {30, 24 + 9}, + {12, 24 + 9}, + {48, 24 + 18} + }; + case 8: return new int[][] { + {48, 24 - 18}, + {30, 24 - 18}, + {12, 24 - 9}, + {48, 24}, + {30, 24}, + {12, 24 + 9}, + {48, 24 + 18}, + {30, 24 + 18} + }; + case 9: return new int[][] { + {48, 24 - 18}, + {30, 24 - 18}, + {12, 24 - 18}, + {48, 24}, + {30, 24}, + {12, 24}, + {48, 24 + 18}, + {30, 24 + 18}, + {12, 24 + 18} + }; + } + + return new int[count][2]; + } + + public static int[][] getOutputCoords(int count) { + + switch(count) { + case 1: return new int[][] { + {102, 24} + }; + case 2: return new int[][] { + {102, 24}, + {120, 24} + }; + case 3: return new int[][] { + {102, 24}, + {120, 24}, + {138, 24} + }; + case 4: return new int[][] { + {102, 24 - 9}, + {120, 24 - 9}, + {138 + 36, 24 + 9}, + {156 + 36, 24 + 9} + }; + } + + return new int[count][2]; + } @Override public void loadCraftingRecipes(String outputId, Object... results) { diff --git a/src/main/java/com/hbm/items/block/ItemBlockBase.java b/src/main/java/com/hbm/items/block/ItemBlockBase.java index 04823443b..e04959cff 100644 --- a/src/main/java/com/hbm/items/block/ItemBlockBase.java +++ b/src/main/java/com/hbm/items/block/ItemBlockBase.java @@ -2,12 +2,11 @@ package com.hbm.items.block; import java.util.List; -import com.hbm.blocks.BlockEnumMulti; +import com.hbm.blocks.BlockMulti; import com.hbm.blocks.IBlockMulti; import com.hbm.blocks.IPersistentInfoProvider; import com.hbm.blocks.ITooltipProvider; import com.hbm.tileentity.IPersistentNBT; -import com.hbm.util.EnumUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -41,10 +40,8 @@ public class ItemBlockBase extends ItemBlock { @Override public String getUnlocalizedName(ItemStack stack) { - if(field_150939_a instanceof BlockEnumMulti && ((BlockEnumMulti)field_150939_a).multiName) { - - Enum num = EnumUtil.grabEnumSafely(((BlockEnumMulti)field_150939_a).theEnum, stack.getItemDamage()); - return super.getUnlocalizedName() + "." + num.name().toLowerCase(); + if(field_150939_a instanceof BlockMulti) { + return ((BlockMulti)field_150939_a).getUnlocalizedName(stack); } else { return super.getUnlocalizedName(stack); } diff --git a/src/main/java/com/hbm/items/tool/ItemBoltgun.java b/src/main/java/com/hbm/items/tool/ItemBoltgun.java index 3a1605028..b97fb4b7a 100644 --- a/src/main/java/com/hbm/items/tool/ItemBoltgun.java +++ b/src/main/java/com/hbm/items/tool/ItemBoltgun.java @@ -1,7 +1,10 @@ package com.hbm.items.tool; +import com.hbm.blocks.ModBlocks; import com.hbm.items.IAnimatedItem; +import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; import com.hbm.render.anim.BusAnimation; @@ -14,11 +17,13 @@ import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; +import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.DamageSource; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -26,6 +31,7 @@ public class ItemBoltgun extends Item implements IAnimatedItem { public ItemBoltgun() { this.setMaxStackSize(1); + this.setCreativeTab(MainRegistry.controlTab); ToolType.BOLT.register(new ItemStack(this)); } @@ -36,6 +42,47 @@ public class ItemBoltgun extends Item implements IAnimatedItem { this.setTextureName(RefStrings.MODID + ":"+ unlocalizedName); return this; } + + @Override + public boolean onLeftClickEntity(ItemStack stack, EntityPlayer player, Entity entity) { + + World world = player.worldObj; + if(!entity.isEntityAlive()) return false; + + Item[] bolts = new Item[] { ModItems.bolt_dura_steel, ModItems.bolt_tungsten, Item.getItemFromBlock(ModBlocks.steel_beam) }; + + for(Item item : bolts) { + for(int i = 0; i < player.inventory.getSizeInventory(); i++) { + ItemStack slot = player.inventory.getStackInSlot(i); + + if(slot != null) { + if(slot.getItem() == item) { + if(!world.isRemote) { + player.inventory.decrStackSize(i, 1); + player.inventoryContainer.detectAndSendChanges(); + entity.attackEntityFrom(DamageSource.causePlayerDamage(player).setDamageBypassesArmor(), 10F); + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaExt"); + data.setString("mode", "largeexplode"); + data.setFloat("size", 1F); + data.setByte("count", (byte)1); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, entity.posX, entity.posY + entity.height / 2 - entity.yOffset, entity.posZ), new TargetPoint(world.provider.dimensionId, entity.posX, entity.posY, entity.posZ, 50)); + } else { + // doing this on the client outright removes the packet delay and makes the animation silky-smooth + NBTTagCompound d0 = new NBTTagCompound(); + d0.setString("type", "anim"); + d0.setString("mode", "generic"); + MainRegistry.proxy.effectNT(d0); + } + return true; + } + } + } + } + + return false; + } @Override public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float fX, float fY, float fZ) { diff --git a/src/main/java/com/hbm/main/NEIConfig.java b/src/main/java/com/hbm/main/NEIConfig.java index 161af3bea..bbfea592a 100644 --- a/src/main/java/com/hbm/main/NEIConfig.java +++ b/src/main/java/com/hbm/main/NEIConfig.java @@ -54,6 +54,7 @@ public class NEIConfig implements IConfigureNEI { registerHandler(new CrucibleAlloyingHandler()); registerHandler(new CrucibleCastingHandler()); registerHandler(new ToolingHandler()); + registerHandler(new ConstructionHandler()); //universal boyes registerHandler(new ZirnoxRecipeHandler()); diff --git a/src/main/java/com/hbm/render/item/ItemRenderBoltgun.java b/src/main/java/com/hbm/render/item/ItemRenderBoltgun.java index 6ab331111..64d8831e1 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderBoltgun.java +++ b/src/main/java/com/hbm/render/item/ItemRenderBoltgun.java @@ -6,6 +6,7 @@ import com.hbm.main.ResourceManager; import com.hbm.render.anim.HbmAnimations; import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraftforge.client.IItemRenderer; @@ -33,6 +34,8 @@ public class ItemRenderBoltgun implements IItemRenderer { GL11.glPushMatrix(); + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + GL11.glEnable(GL11.GL_CULL_FACE); GL11.glShadeModel(GL11.GL_SMOOTH); Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.boltgun_tex); @@ -50,6 +53,7 @@ public class ItemRenderBoltgun implements IItemRenderer { GL11.glPushMatrix(); double[] anim = HbmAnimations.getRelevantTransformation("RECOIL"); GL11.glTranslated(0, 0, -anim[0]); + if(anim[0] != 0) player.isSwingInProgress = false; ResourceManager.boltgun.renderPart("Barrel"); GL11.glPopMatrix(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityWatzStruct.java b/src/main/java/com/hbm/tileentity/machine/TileEntityWatzStruct.java index 10ba21058..e3bb5f800 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityWatzStruct.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityWatzStruct.java @@ -62,7 +62,7 @@ public class TileEntityWatzStruct extends TileEntity { Watz watz = (Watz)ModBlocks.watz; BlockDummyable.safeRem = true; - worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.watz, this.getBlockMetadata() + BlockDummyable.offset, 3); + worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.watz, 12, 3); watz.fillSpace(worldObj, xCoord, yCoord, zCoord, ForgeDirection.NORTH, 0); BlockDummyable.safeRem = false; } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index bc3b244fb..bb2d077b3 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1205,6 +1205,7 @@ item.bobmazon_weapons.name=Bobmazon: Waffen und Sprengstoffe item.bolt_compound.name=Verstärkte Turbinenwelle item.bolt_dura_steel.name=Schnellarbeitsstahlbolzen item.bolt_tungsten.name=Wolframbolzen +item.boltgun.name=Pneumatische Nietenpistole item.bomb_caller.name=Luftschlag Zielmarker item.bomb_waffle.name=Massenvernichtungswaffel item.guide_book.name=Handbuch @@ -4222,6 +4223,7 @@ tile.struct_launcher_core_large.name=Startrampe-Kernkomponente tile.struct_plasma_core.name=Plasmaerhitzer-Kernkomponente tile.struct_scaffold.name=Startrampe-Gerüstblock tile.struct_soyuz_core.name=Soyuz-Startrampe-Kernkomponente +tile.struct_watz_core.name=Watzkraftwerk-Kernkomponente tile.substation.name=Umspannwerk tile.sulfuric_acid_block.name=Schwefelsäure tile.taint.name=Korrupter Schmutz @@ -4281,6 +4283,7 @@ tile.watz_cooler.name=Watz-Superkühler tile.watz_core.name=Watzreaktorkern tile.watz_element.name=Watzreaktionskammer tile.watz_end.name=Watz-Stabilitätselement +tile.watz_end_bolted.name=Watz-Stabilitätselement (Genietet) tile.watz_hatch.name=Watzreaktorzugriffsluke tile.yellow_barrel.name=Radioaktives Fass tile.zirnox_destroyed.name=Zerstörter ZINOX diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index e8656695b..1585d0491 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1792,6 +1792,7 @@ item.bobmazon_weapons.name=Bobmazon: Weapons and Explosives item.bolt_compound.name=Reinforced Turbine Shaft item.bolt_dura_steel.name=High-Speed Steel Bolt item.bolt_tungsten.name=Tungsten Bolt +item.boltgun.name=Pneumatic Rivet Gun item.bomb_caller.name=Airstrike Designator item.bomb_waffle.name=Waffle of Mass Destruction item.book_guide.name=Guide Book @@ -5038,6 +5039,7 @@ tile.struct_launcher_core_large.name=Launch Table Core Component tile.struct_plasma_core.name=Plasma Heater Core Component tile.struct_scaffold.name=Launch Pad Scaffold Block tile.struct_soyuz_core.name=Soyuz Launcher Core Component +tile.struct_watz_core.name=Watz Powerplant Core Component tile.substation.name=Substation tile.sulfuric_acid_block.name=Sulfuric Acid tile.taint.name=Taint @@ -5099,6 +5101,7 @@ tile.watz_cooler.name=Watz Reactor Supercooler tile.watz_core.name=Watz Reactor Control tile.watz_element.name=Watz Reaction Chamber tile.watz_end.name=Watz Reactor Stability Element +tile.watz_end_bolted.name=Watz Reactor Stability Element (Riveted) tile.watz_hatch.name=Watz Reactor Access Hatch tile.yellow_barrel.name=Radioactive Barrel tile.zirnox_destroyed.name=Destroyed ZINROX diff --git a/src/main/resources/assets/hbm/textures/blocks/watz_cooler_side.png b/src/main/resources/assets/hbm/textures/blocks/watz_cooler_side.png new file mode 100644 index 0000000000000000000000000000000000000000..346ddad5a9dae1102143c5f84d273eb2542113d3 GIT binary patch literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfSaRAb{hxPoypTaT1M1P=p) Xf1YMzD&rwfpb-q7u6{1-oD!MUeFiq0}(DOV1k|ZGvL)*bpv)=_kj&C-=D2fUMN-0Ye$1$hP764_PW$3J^ zKZ+s-gFzvu35AphDJk`@jz$0%Z&f;-js*h@heH4y#{s}~U6fMPYBhFWA9D$drfY!W4nyI5QIF5tL5q>mvYJ-zP~D(ljm1!GzK8c^l{pmKJ0gV3xCqFQ&?EC(VZkVj{j0@ZE59kj~ zv)@H$8E3~^=w6oRk9uQVCy?k~M%i}ok1!61K=KVm9=^clbc-JV0000b|;Gk*j#Nkly>6pG5XZ--7_^pbC352jNO=X-IZY%Nd4kkw zu5*=V$TOsJcTMU%feVx_X+nQ_05?`5yFhFTuDEQ3mu1beyTHQyB+E7|AF}?Qoq?HQ z0Eks?mdkYLdEj{-c)p)oPm=@yK)B8%G)aI`3ZIn1!)i6KdVeqr{Al_F5Tpz!RKy8R znm&Q12!bFLEsvtexoNRYu;10sxH3tSX#cL(gjytowsCrT3IG5fA0MU0UteFR005K8 z1a`X}OeT|q^=#R0w=;aE{l=5tj%(c?;szK@ zAx_|2FcpSj&VMOiEEZ|ey7_$Wgs+UqaZadR=6$=ZyzSX^T6*lwaw+`tw)sZDflx)( z=lS_rc=9S^y8w&!ZNWr(KAS0T`?lG@`*y1&R@XT2Q3)ZrR}m^>k#b~38it|tb9Px3 zal6KWMOBHA`xZ?=YQpvG3)yJ^rU-wLQtrPGM|*zeoPdqd0L-aAhL)mFn=^_joIy2TY1PRRKzHJ zCcmkqAQWm3@iZ-}$ge%->;AmB&=M>P6;Vdlb*KUgRZdC>fzfCL?0qyEf$#eV!NQ01US70^W45eijK zCoL*%@ujmOP^fY`X;G*uqfOlR=Nag2ASEK{3BZKAF}D^QlBN-6zbUL;u6E;)Fw-#)ck)Fy%hlF_*jH_3rTRk`iel~(9wpV-$$n8h4&fs@V@ZA<7*wMI8-8KWo~@YBC&SsySF#Xqc8 e1D!VT$M^?V=S4n42-#==0000zi!(w5XQeN@&I{+Oh(6SSu^_uI(VpOqey|i zfKIPa1fH{G$X;mnnxSaMB2(U=c>{K^6ibvv>JQJNtos3hC5k%I_UGgAC@BO*6ayGv z9Tx6`ZJz)VZZbHZ#_oWkv_XZcOoEHCJ1`cRfqCR=*@}TBg?}9u*<0iEL%$@81ZI&p z_{u=B{cGUoDkfBB_Qqx|uCA^s`)_Y=L(J9e0qb6N%m#*^JDl*lS2K#mY(45D?>(qp z=7XOBzG>eMt5Ab5TcP%aZ}wtsT|ZErA=vg);r1k$tx#87_n<2V9zEY;SC6Vge;6hw zRA#OP^G3r?{5r2^ay4J5ugxL=LePh(Fu(!qt zL;vQmnQp_*^cTEes|L-;d0IaH(4FLQRx{^RAQ_3Vzj~W_dsu`aNB-6W6ibrcP>Y_#7 zxDP5+34e(8$#ldy^h>t)nu4r&G>C9jr~(u#J}^^Br*~wzpY1;_`B0YSf-IK-cr7;W z^W$0d_`zmFd5*@Y0uXS%A{`0!s4kM^xZ0Sjug8w%+ed2DPwCXD?nv7|1u9e*X+sjb z?Zwzc1fj{r+)$yquxIcEE{|$iKpNj2N^SF{O@I685BWaYs8C%{LvE=lB(OLNgl$}M74ua$w=_NCjCK=Y_Bi0J5FTbeww z(i!!rE;L4s1{JD{05K}-tUm}UR2S!(N9~zEE%wJiV^kL!qeg>zR2KnaRBoYbkCnmH z?0J8G0Fck6*SO! zcz77}L9Ey7N`JDi#~sHQ9(8oudQulYPdbo`@}tl7(dgsEs2sFKzkTWUB+#MXLMJ~x zDelV`@~pEJ>XJa2sg8C_0+}}HsSeCW_}_>m Date: Sat, 22 Apr 2023 16:00:07 +0200 Subject: [PATCH 3/6] watz fuel stats, more construction recipes --- .../blocks/generic/BlockToolConversion.java | 3 +- .../hbm/handler/nei/ConstructionHandler.java | 46 ++++++++++++++++-- .../com/hbm/items/machine/ItemWatzPellet.java | 38 ++++++++------- .../java/com/hbm/items/tool/ItemBoltgun.java | 7 ++- .../tileentity/machine/TileEntityWatz.java | 13 +++-- .../java/com/hbm/util/function/Function.java | 14 +++--- src/main/resources/assets/hbm/sounds.json | 1 + .../assets/hbm/sounds/tool/boltgun.ogg | Bin 0 -> 13695 bytes 8 files changed, 87 insertions(+), 35 deletions(-) create mode 100644 src/main/resources/assets/hbm/sounds/tool/boltgun.ogg diff --git a/src/main/java/com/hbm/blocks/generic/BlockToolConversion.java b/src/main/java/com/hbm/blocks/generic/BlockToolConversion.java index ddb34f66e..582db2d18 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockToolConversion.java +++ b/src/main/java/com/hbm/blocks/generic/BlockToolConversion.java @@ -95,9 +95,10 @@ public class BlockToolConversion extends BlockMulti implements IToolable, ILookO if(list == null || list.isEmpty() || InventoryUtil.doesPlayerHaveAStacks(player, list, true)) { world.setBlock(x, y, z, result.value.block, result.value.meta, 3); + return true; } - return true; + return false; } @Override diff --git a/src/main/java/com/hbm/handler/nei/ConstructionHandler.java b/src/main/java/com/hbm/handler/nei/ConstructionHandler.java index e6b93517f..240ad58af 100644 --- a/src/main/java/com/hbm/handler/nei/ConstructionHandler.java +++ b/src/main/java/com/hbm/handler/nei/ConstructionHandler.java @@ -4,8 +4,10 @@ import java.util.HashMap; import com.hbm.blocks.ModBlocks; import com.hbm.items.ModItems; +import com.hbm.util.ItemStackUtil; import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; public class ConstructionHandler extends NEIUniversalHandler { @@ -42,11 +44,11 @@ public class ConstructionHandler extends NEIUniversalHandler { /* ITER */ ItemStack[] iter = new ItemStack[] { - new ItemStack(ModBlocks.fusion_conductor, 64), - new ItemStack(ModBlocks.fusion_conductor, 64), - new ItemStack(ModBlocks.fusion_conductor, 64), - new ItemStack(ModBlocks.fusion_conductor, 64), new ItemStack(ModBlocks.fusion_conductor, 36), + new ItemStack(ModBlocks.fusion_conductor, 64), + new ItemStack(ModBlocks.fusion_conductor, 64), + new ItemStack(ModBlocks.fusion_conductor, 64), + new ItemStack(ModBlocks.fusion_conductor, 64), new ItemStack(ModBlocks.fusion_center, 64), new ItemStack(ModBlocks.fusion_motor, 4), new ItemStack(ModBlocks.reinforced_glass, 8)}; @@ -54,6 +56,42 @@ public class ConstructionHandler extends NEIUniversalHandler { bufferedRecipes.put(iter, new ItemStack(ModBlocks.iter)); bufferedTools.put(iter, new ItemStack(ModBlocks.struct_iter_core)); + /* PLASMA HEATER */ + ItemStack[] heater = new ItemStack[] { + new ItemStack(ModBlocks.fusion_heater, 7), + new ItemStack(ModBlocks.fusion_heater, 64), + new ItemStack(ModBlocks.fusion_heater, 64) }; + + bufferedRecipes.put(heater, new ItemStack(ModBlocks.plasma_heater)); + bufferedTools.put(heater, new ItemStack(ModBlocks.struct_plasma_core)); + + /* COMPACT LAUNCHER */ + ItemStack[] launcher = new ItemStack[] { new ItemStack(ModBlocks.struct_launcher, 8) }; + + bufferedRecipes.put(launcher, new ItemStack(ModBlocks.compact_launcher)); + bufferedTools.put(launcher, new ItemStack(ModBlocks.struct_launcher_core)); + + /* LAUNCH TABLE */ + ItemStack[] table = new ItemStack[] { + new ItemStack(ModBlocks.struct_launcher, 16), + new ItemStack(ModBlocks.struct_launcher, 64), + new ItemStack(ModBlocks.struct_scaffold, 11)}; + + bufferedRecipes.put(table, new ItemStack(ModBlocks.launch_table)); + bufferedTools.put(table, new ItemStack(ModBlocks.struct_launcher_core_large)); + + /* SOYUZ LAUNCHER */ + ItemStack[] soysauce = new ItemStack[] { + new ItemStack(ModBlocks.struct_launcher, 60), + ItemStackUtil.addTooltipToStack(new ItemStack(ModBlocks.struct_launcher, 320), EnumChatFormatting.RED + "5x64"), + new ItemStack(ModBlocks.struct_scaffold, 53), + ItemStackUtil.addTooltipToStack(new ItemStack(ModBlocks.struct_scaffold, 384), EnumChatFormatting.RED + "6x64"), + new ItemStack(ModBlocks.concrete_smooth, 8), + ItemStackUtil.addTooltipToStack(new ItemStack(ModBlocks.concrete_smooth, 320), EnumChatFormatting.RED + "5x64"),}; + + bufferedRecipes.put(soysauce, new ItemStack(ModBlocks.soyuz_launcher)); + bufferedTools.put(soysauce, new ItemStack(ModBlocks.struct_soyuz_core)); + return recipes ? bufferedRecipes : bufferedTools; } } diff --git a/src/main/java/com/hbm/items/machine/ItemWatzPellet.java b/src/main/java/com/hbm/items/machine/ItemWatzPellet.java index 0b782df9d..4a0f35dc1 100644 --- a/src/main/java/com/hbm/items/machine/ItemWatzPellet.java +++ b/src/main/java/com/hbm/items/machine/ItemWatzPellet.java @@ -36,18 +36,18 @@ public class ItemWatzPellet extends ItemEnumMulti { public static enum EnumWatzType { - SCHRABIDIUM( 0x32FFFF, 0x005C5C, 2_000, 10D, new FunctionLogarithmic(10), null, null), - HES( 0x66DCD6, 0x023933, 1_500, 10D, null, null, null), - MES( 0xCBEADF, 0x28473C, 1_000, 10D, null, null, null), - LES( 0xABB4A8, 0x0C1105, 500, 10D, null, null, null), - HEN( 0xA6B2A6, 0x030F03, 0, 10D, null, null, null), - MEU( 0xC1C7BD, 0x2B3227, 0, 10D, null, null, null), - MEP( 0x9AA3A0, 0x111A17, 0, 10D, null, null, null), - LEAD( 0xA6A6B2, 0x03030F, 0, 0, null, null, new FunctionSqrt(10)), //standard absorber, negative coefficient - BORON( 0xBDC8D2, 0x29343E, 0, 0, null, null, new FunctionLinear(10)), //improved absorber, linear - DU( 0xC1C7BD, 0x2B3227, 0, 0, null, null, new FunctionQuadratic(1D, 1D).withDiv(100)), //absorber with positive coefficient - NQD( 0x4B4B4B, 0x121212, 0, 0, null, null, null), - NQR( 0x2D2D2D, 0x0B0B0B, 0, 0, null, null, null); + SCHRABIDIUM( 0x32FFFF, 0x005C5C, 2_000, 20D, 0.02D, new FunctionLinear(1.5D), new FunctionSqrt(1D/20D).withOff(20D * 20D), null), + HES( 0x66DCD6, 0x023933, 1_750, 20D, 0.01D, new FunctionLinear(1.25D), new FunctionSqrt(1/15D).withOff(15D*15D), null), + MES( 0xCBEADF, 0x28473C, 1_500, 15D, 0.005D, new FunctionLinear(1.15D), new FunctionSqrt(1/15D).withOff(15D*15D), null), + LES( 0xABB4A8, 0x0C1105, 1_250, 15D, 0.0025D, new FunctionLinear(1D), new FunctionSqrt(1/10D).withOff(10D*10D), null), + HEN( 0xA6B2A6, 0x030F03, 0, 10D, 0.001D, new FunctionSqrt(100), null, null), + MEU( 0xC1C7BD, 0x2B3227, 0, 10D, 0.001D, new FunctionSqrt(75), null, null), + MEP( 0x9AA3A0, 0x111A17, 0, 15D, 0.001D, new FunctionSqrt(150), new FunctionSqrt(1D/20D).withOff(20D * 20D), null), + LEAD( 0xA6A6B2, 0x03030F, 0, 0, 0.005D, null, null, new FunctionSqrt(10)), //standard absorber, negative coefficient + BORON( 0xBDC8D2, 0x29343E, 0, 0, 0.005D, null, null, new FunctionLinear(10)), //improved absorber, linear + DU( 0xC1C7BD, 0x2B3227, 0, 0, 0.005D, null, null, new FunctionQuadratic(1D, 1D).withDiv(100)), //absorber with positive coefficient + NQD( 0x4B4B4B, 0x121212, 2_000, 20, 0.02D, new FunctionLinear(2D), new FunctionSqrt(1D/25D).withOff(25D * 25D), null), + NQR( 0x2D2D2D, 0x0B0B0B, 2_500, 30, 0.02D, new FunctionLinear(1.5D), new FunctionSqrt(1D/25D).withOff(25D * 25D), null); public double yield = 1_000_000_000; public int colorLight; @@ -56,16 +56,17 @@ public class ItemWatzPellet extends ItemEnumMulti { public double passive; //base flux emission public double heatEmission; //reactivity(1) to heat (heat per outgoing flux) public Function burnFunc; //flux to reactivity(0) (classic reactivity) - public Function heatMult; //reactivity(0) to reactivity(1) based on heat (temperature coefficient) + public Function heatDiv; //reactivity(0) to reactivity(1) based on heat (temperature coefficient) public Function absorbFunc; //flux to heat (flux absobtion for non-active component) - private EnumWatzType(int colorLight, int colorDark, double passive, double heatEmission, Function burnFunction, Function heatMultiplier, Function absorbFunction) { + private EnumWatzType(int colorLight, int colorDark, double passive, double heatEmission, double mudContent, Function burnFunction, Function heatDivisor, Function absorbFunction) { this.colorLight = colorLight; this.colorDark = colorDark; this.passive = passive; this.heatEmission = heatEmission; + this.mudContent = mudContent; this.burnFunc = burnFunction; - this.heatMult = heatMultiplier; + this.heatDiv = heatDivisor; this.absorbFunc = absorbFunction; } } @@ -129,13 +130,16 @@ public class ItemWatzPellet extends ItemEnumMulti { String color = EnumChatFormatting.GOLD + ""; String reset = EnumChatFormatting.RESET + ""; - if(num.passive > 0) list.add(color + "Base fission rate: " + reset + num.passive); + if(num.passive > 0){ + list.add(color + "Base fission rate: " + reset + num.passive); + list.add(EnumChatFormatting.RED + "Self-ingiting!"); + } if(num.heatEmission > 0) list.add(color + "Heat per flux: " + reset + num.heatEmission + " TU"); if(num.burnFunc != null) { list.add(color + "Reacton function: " + reset + num.burnFunc.getLabelForFuel()); list.add(color + "Fuel type: " + reset + num.burnFunc.getDangerFromFuel()); } - if(num.heatMult != null) list.add(color + "Thermal coefficient: " + reset + num.heatMult.getLabelForFuel()); + if(num.heatDiv != null) list.add(color + "Thermal multiplier: " + reset + num.heatDiv.getLabelForFuel() + " TU⁻¹"); if(num.absorbFunc != null) list.add(color + "Flux capture: " + reset + num.absorbFunc.getLabelForFuel()); } diff --git a/src/main/java/com/hbm/items/tool/ItemBoltgun.java b/src/main/java/com/hbm/items/tool/ItemBoltgun.java index b97fb4b7a..a4ef287f3 100644 --- a/src/main/java/com/hbm/items/tool/ItemBoltgun.java +++ b/src/main/java/com/hbm/items/tool/ItemBoltgun.java @@ -10,6 +10,7 @@ import com.hbm.packet.PacketDispatcher; import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationKeyframe; import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.util.EntityDamageUtil; import api.hbm.block.IToolable; import api.hbm.block.IToolable.ToolType; @@ -58,9 +59,10 @@ public class ItemBoltgun extends Item implements IAnimatedItem { if(slot != null) { if(slot.getItem() == item) { if(!world.isRemote) { + world.playSoundAtEntity(entity, "hbm:item.boltgun", 1.0F, 1.0F); player.inventory.decrStackSize(i, 1); player.inventoryContainer.detectAndSendChanges(); - entity.attackEntityFrom(DamageSource.causePlayerDamage(player).setDamageBypassesArmor(), 10F); + EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, DamageSource.causePlayerDamage(player).setDamageBypassesArmor(), 10F); NBTTagCompound data = new NBTTagCompound(); data.setString("type", "vanillaExt"); @@ -92,7 +94,8 @@ public class ItemBoltgun extends Item implements IAnimatedItem { if(b instanceof IToolable && ((IToolable)b).onScrew(world, player, x, y, z, side, fX, fY, fZ, ToolType.BOLT)) { if(!world.isRemote) { - + + world.playSoundAtEntity(player, "hbm:item.boltgun", 1.0F, 1.0F); player.inventoryContainer.detectAndSendChanges(); ForgeDirection dir = ForgeDirection.getOrientation(side); double off = 0.25; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java b/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java index 4b8bc95e3..be72c62f4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java @@ -181,11 +181,11 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand for(ItemStack stack : pellets) { EnumWatzType type = EnumUtil.grabEnumSafely(EnumWatzType.class, stack.getItemDamage()); Function burnFunc = type.burnFunc; - Function heatMod = type.heatMult; + Function heatDiv = type.heatDiv; if(burnFunc != null) { - double mod = heatMod != null ? heatMod.effonix(heat) : 1D; - double burn = burnFunc.effonix(inputFlux) * mod; + double div = heatDiv != null ? heatDiv.effonix(heat) : 1D; + double burn = burnFunc.effonix(inputFlux) / div; ItemWatzPellet.setYield(stack, ItemWatzPellet.getYield(stack) - burn); addedFlux += burn; addedHeat += type.heatEmission * burn; @@ -198,7 +198,10 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand Function absorbFunc = type.absorbFunc; if(absorbFunc != null) { - addedHeat += absorbFunc.effonix(baseFlux + fluxLastReaction); + double absorb = absorbFunc.effonix(baseFlux + fluxLastReaction); + addedHeat += absorb; + ItemWatzPellet.setYield(stack, ItemWatzPellet.getYield(stack) - absorb); + tanks[2].setFill(tanks[2].getFill() + (int) Math.round(type.mudContent * absorb)); } } @@ -309,6 +312,7 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand } for(int i = 0; i < tanks.length; i++) tanks[i].readFromNBT(nbt, "t" + i); + this.heat = nbt.getInteger("heat"); this.fluxLastBase = nbt.getDouble("lastFluxB"); this.fluxLastReaction = nbt.getDouble("lastFluxR"); @@ -332,6 +336,7 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand nbt.setTag("locks", list); for(int i = 0; i < tanks.length; i++) tanks[i].writeToNBT(nbt, "t" + i); + nbt.setInteger("heat", this.heat); nbt.setDouble("lastFluxB", fluxLastBase); nbt.setDouble("lastFluxR", fluxLastReaction); diff --git a/src/main/java/com/hbm/util/function/Function.java b/src/main/java/com/hbm/util/function/Function.java index c9825d3e4..6f50ee651 100644 --- a/src/main/java/com/hbm/util/function/Function.java +++ b/src/main/java/com/hbm/util/function/Function.java @@ -27,8 +27,8 @@ public abstract class Function { public String getXName(boolean brackets) { String x = "x"; boolean mod = false; - if(div != 1D) x += " / " + div; - if(off != 0D) x += " + " + off; + if(div != 1D) x += " / " + String.format("%,.1f", div); + if(off != 0D) x += " + " + String.format("%,.1f", off); if(mod && brackets) x = "(" + x + ")"; return x; } @@ -46,28 +46,28 @@ public abstract class Function { public static class FunctionLogarithmic extends FunctionSingleArg { public FunctionLogarithmic(double level) { super(level); this.withOff(1D); } @Override public double effonix(double x) { return Math.log10(getX(x)) * level; } - @Override public String getLabelForFuel() { return "log10(" + getXName(false) + ") * " + level; } + @Override public String getLabelForFuel() { return "log10(" + getXName(false) + ") * " + String.format("%,.1f", this.level); } @Override public String getDangerFromFuel() { return EnumChatFormatting.YELLOW + "MEDIUM / LOGARITHMIC"; } } public static class FunctionPassive extends FunctionSingleArg { public FunctionPassive(double level) { super(level); } @Override public double effonix(double x) { return this.level; } - @Override public String getLabelForFuel() { return "" + level; } + @Override public String getLabelForFuel() { return "" + String.format("%,.1f", this.level); } @Override public String getDangerFromFuel() { return EnumChatFormatting.DARK_GREEN + "SAFE / PASSIVE"; } } public static class FunctionSqrt extends FunctionSingleArg { public FunctionSqrt(double level) { super(level); } @Override public double effonix(double x) { return BobMathUtil.squirt(getX(x)) * this.level; } - @Override public String getLabelForFuel() { return "sqrt(" + getXName(false) + ") * " + this.level; } //not entirely correct but good enough + @Override public String getLabelForFuel() { return "sqrt(" + getXName(false) + ") * " + String.format("%,.3f", this.level); } //not entirely correct but good enough @Override public String getDangerFromFuel() { return EnumChatFormatting.YELLOW + "MEDIUM / SQUARE ROOT"; } } public static class FunctionLinear extends FunctionSingleArg { public FunctionLinear(double level) { super(level); } @Override public double effonix(double x) { return getX(x) * this.level; } - @Override public String getLabelForFuel() { return getXName(true) + " * " + this.level; } + @Override public String getLabelForFuel() { return getXName(true) + " * " + String.format("%,.1f", this.level); } @Override public String getDangerFromFuel() { return EnumChatFormatting.RED + "DANGEROUS / LINEAR"; } } @@ -75,7 +75,7 @@ public abstract class Function { public FunctionQuadratic(double level) { super(level, 0D); } public FunctionQuadratic(double level, double vOff) { super(level, vOff); } @Override public double effonix(double x) { return getX(x) * getX(x) * this.level + this.vOff; } - @Override public String getLabelForFuel() { return getXName(true) + "² * " + this.level + (vOff != 0 ? (" + " + vOff) : ""); } + @Override public String getLabelForFuel() { return getXName(true) + "² * " + String.format("%,.1f", this.level) + (vOff != 0 ? (" + " + String.format("%,.1f", vOff)) : ""); } @Override public String getDangerFromFuel() { return EnumChatFormatting.RED + "DANGEROUS / QUADRATIC"; } } } diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index 6458aa7fc..ab2066140 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -78,6 +78,7 @@ "item.vice": {"category": "player", "sounds": [{"name": "tool/vice", "stream": false}]}, "item.upgradePlug": {"category": "player", "sounds": [{"name": "tool/upgradePlug", "stream": false}]}, "item.battery": {"category": "player", "sounds": [{"name": "tool/battery", "stream": false}]}, + "item.boltgun": {"category": "player", "sounds": [{"name": "tool/boltgun", "stream": false}]}, "music.recordLambdaCore": {"category": "record", "sounds": [{"name": "music/recordLambdaCore", "stream": true}]}, "music.recordSectorSweep": {"category": "record", "sounds": [{"name": "music/recordSectorSweep", "stream": true}]}, diff --git a/src/main/resources/assets/hbm/sounds/tool/boltgun.ogg b/src/main/resources/assets/hbm/sounds/tool/boltgun.ogg new file mode 100644 index 0000000000000000000000000000000000000000..98356b58b2e9318fde1afccc83d6a171bf8826cf GIT binary patch literal 13695 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 aZ((ilAA6vczkk*GmqFmw3hG$q%KruRF6f^C literal 0 HcmV?d00001 From d0854bb795c59c8ed33db1474a4182851c7e9406 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 23 Apr 2023 22:00:59 +0200 Subject: [PATCH 4/6] oh yeah --- gradle.properties | 2 +- .../hbm/blocks/generic/BlockTallPlant.java | 7 +- .../hbm/blocks/machine/MachineCrucible.java | 31 ++++- .../java/com/hbm/crafting/RodRecipes.java | 24 ++++ .../java/com/hbm/crafting/ToolRecipes.java | 3 + .../com/hbm/entity/effect/EntityMist.java | 15 ++- .../hbm/entity/mob/EntityCreeperPhosgene.java | 1 + .../hbm/entity/projectile/EntityShrapnel.java | 13 +- .../hbm/handler/guncfg/Gun762mmFactory.java | 12 +- .../hbm/handler/nei/NEIUniversalHandler.java | 4 +- .../java/com/hbm/hazard/HazardRegistry.java | 14 +++ .../com/hbm/inventory/OreDictManager.java | 5 +- .../java/com/hbm/inventory/material/Mats.java | 1 + .../inventory/recipes/AssemblerRecipes.java | 6 +- .../inventory/recipes/CentrifugeRecipes.java | 68 ++++++++++ .../inventory/recipes/CrucibleRecipes.java | 4 + .../recipes/SolidificationRecipes.java | 1 + src/main/java/com/hbm/items/ModItems.java | 3 + .../com/hbm/items/machine/ItemWatzPellet.java | 30 +++-- .../com/hbm/items/weapon/ItemGunBase.java | 4 +- src/main/java/com/hbm/lib/RefStrings.java | 2 +- .../java/com/hbm/main/CraftingManager.java | 4 +- .../entity/projectile/RenderShrapnel.java | 2 +- .../machine/TileEntityCrucible.java | 56 ++++++++- .../tileentity/machine/TileEntityWatz.java | 117 ++++++++++++++++-- .../java/com/hbm/util/function/Function.java | 7 ++ src/main/resources/assets/hbm/lang/de_DE.lang | 5 + src/main/resources/assets/hbm/lang/en_US.lang | 5 + .../assets/hbm/textures/items/ingot_mud.png | Bin 0 -> 537 bytes 29 files changed, 396 insertions(+), 50 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/items/ingot_mud.png diff --git a/gradle.properties b/gradle.properties index cf2273c3a..9383abbe4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=4562 +mod_build_number=4578 credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models, porting),\ diff --git a/src/main/java/com/hbm/blocks/generic/BlockTallPlant.java b/src/main/java/com/hbm/blocks/generic/BlockTallPlant.java index f9ff43fb0..60ef35c47 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockTallPlant.java +++ b/src/main/java/com/hbm/blocks/generic/BlockTallPlant.java @@ -177,12 +177,7 @@ public class BlockTallPlant extends BlockEnumMulti implements IPlantable, IGrowa public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) { if(meta > 7) { - - if(world.getBlock(x, y - 1, z) == this) { - if(!player.capabilities.isCreativeMode) { - this.dropBlockAsItem(world, x, y - 1, z, world.getBlockMetadata(x, y - 1, z), 0); - } - } + // dead } else if(world.getBlock(x, y + 1, z) == this) { if(player.capabilities.isCreativeMode) { diff --git a/src/main/java/com/hbm/blocks/machine/MachineCrucible.java b/src/main/java/com/hbm/blocks/machine/MachineCrucible.java index cde554cd5..b2ccf824c 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCrucible.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCrucible.java @@ -11,6 +11,7 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityCrucible; +import api.hbm.block.ICrucibleAcceptor; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -24,8 +25,9 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.client.event.DrawBlockHighlightEvent; +import net.minecraftforge.common.util.ForgeDirection; -public class MachineCrucible extends BlockDummyable { +public class MachineCrucible extends BlockDummyable implements ICrucibleAcceptor { public MachineCrucible() { super(Material.rock); @@ -151,4 +153,31 @@ public class MachineCrucible extends BlockDummyable { for(AxisAlignedBB aabb : this.bounding) event.context.drawOutlinedBoundingBox(aabb.expand(exp, exp, exp).getOffsetBoundingBox(x - dX + 0.5, y - dY, z - dZ + 0.5), -1); ICustomBlockHighlight.cleanup(); } + + @Override + public boolean canAcceptPartialPour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) { + + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return false; + TileEntity tile = world.getTileEntity(pos[0], pos[1], pos[2]); + if(!(tile instanceof TileEntityCrucible)) return false; + TileEntityCrucible crucible = (TileEntityCrucible) tile; + + return crucible.canAcceptPartialPour(world, x, y, z, dX, dY, dZ, side, stack); + } + + @Override + public MaterialStack pour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) { + + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return stack; + TileEntity tile = world.getTileEntity(pos[0], pos[1], pos[2]); + if(!(tile instanceof TileEntityCrucible)) return stack; + TileEntityCrucible crucible = (TileEntityCrucible) tile; + + return crucible.pour(world, x, y, z, dX, dY, dZ, side, stack); + } + + @Override public boolean canAcceptPartialFlow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { return false; } + @Override public MaterialStack flow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { return null; } } diff --git a/src/main/java/com/hbm/crafting/RodRecipes.java b/src/main/java/com/hbm/crafting/RodRecipes.java index 1928d5b38..77e6a2aa5 100644 --- a/src/main/java/com/hbm/crafting/RodRecipes.java +++ b/src/main/java/com/hbm/crafting/RodRecipes.java @@ -3,12 +3,14 @@ package com.hbm.crafting; import static com.hbm.inventory.OreDictManager.*; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemBreedingRod.*; +import com.hbm.items.machine.ItemWatzPellet.EnumWatzType; import com.hbm.items.machine.ItemZirnoxRod.EnumZirnoxType; import com.hbm.main.CraftingManager; import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.OreDictionary; import net.minecraftforge.oredict.ShapedOreRecipe; /** @@ -123,6 +125,20 @@ public class RodRecipes { addRBMKRod(ModItems.billet_zfb_pu241, ModItems.rbmk_fuel_zfb_pu241); addRBMKRod(ModItems.billet_zfb_am_mix, ModItems.rbmk_fuel_zfb_am_mix); CraftingManager.addShapelessAuto(new ItemStack(ModItems.rbmk_fuel_drx, 1), new Object[] { ModItems.rbmk_fuel_balefire, ModItems.particle_digamma }); + + addPellet(SA326, EnumWatzType.SCHRABIDIUM); + addPellet(ModItems.ingot_hes, EnumWatzType.HES); + addPellet(ModItems.ingot_schrabidium_fuel, EnumWatzType.MES); + addPellet(ModItems.ingot_les, EnumWatzType.LES); + addPellet(NP237, EnumWatzType.HEN); + addPellet(ModItems.ingot_uranium_fuel, EnumWatzType.MEU); + addPellet(ModItems.ingot_pu_mix, EnumWatzType.MEP); + addPellet(PB, EnumWatzType.LEAD); + addPellet(B, EnumWatzType.BORON); + addPellet(U238, EnumWatzType.DU); + /* GT6 */ + if(OreDictionary.doesOreNameExist("ingotNaquadah-Enriched")) addPellet(new DictFrame("Naquadah-Enriched"), EnumWatzType.NQD); + if(OreDictionary.doesOreNameExist("ingotNaquadria")) addPellet(new DictFrame("Naquadria"), EnumWatzType.NQR); } //Fill rods with one billet. For fuels only, therefore no unloading or ore dict @@ -223,4 +239,12 @@ public class RodRecipes { public static void addZIRNOXRod(DictFrame mat, EnumZirnoxType num) { CraftingManager.addShapelessAuto(new ItemStack(ModItems.rod_zirnox, 1, num.ordinal()), new Object[] { ModItems.rod_zirnox_empty, mat.billet(), mat.billet() }); } + + /** Watz pellet crafting **/ + public static void addPellet(DictFrame mat, EnumWatzType num) { + CraftingManager.addRecipeAuto(new ItemStack(ModItems.watz_pellet, 1, num.ordinal()), new Object[] { " I ", "IGI", " I ", 'I', mat.ingot(), 'G', GRAPHITE.ingot() }); + } + public static void addPellet(Item item, EnumWatzType num) { + CraftingManager.addRecipeAuto(new ItemStack(ModItems.watz_pellet, 1, num.ordinal()), new Object[] { " I ", "IGI", " I ", 'I', item, 'G', GRAPHITE.ingot() }); + } } diff --git a/src/main/java/com/hbm/crafting/ToolRecipes.java b/src/main/java/com/hbm/crafting/ToolRecipes.java index 2d6d82b78..91ddd5338 100644 --- a/src/main/java/com/hbm/crafting/ToolRecipes.java +++ b/src/main/java/com/hbm/crafting/ToolRecipes.java @@ -5,6 +5,8 @@ import com.hbm.config.GeneralConfig; import com.hbm.inventory.fluid.Fluids; import static com.hbm.inventory.OreDictManager.*; + +import com.hbm.items.ItemGenericPart.EnumPartType; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemBattery; import com.hbm.items.tool.ItemBlowtorch; @@ -137,6 +139,7 @@ public class ToolRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.chemistry_set_boron), new Object[] { "GIG", "GCG", 'G', ModBlocks.glass_boron, 'I', STEEL.ingot(), 'C', CO.ingot() }); CraftingManager.addRecipeAuto(ItemBlowtorch.getEmptyTool(ModItems.blowtorch), new Object[] { "CC ", " I ", "CCC", 'C', CU.plate528(), 'I', IRON.ingot() }); CraftingManager.addRecipeAuto(ItemBlowtorch.getEmptyTool(ModItems.acetylene_torch), new Object[] { "SS ", " PS", " T ", 'S', STEEL.plate528(), 'P', ANY_PLASTIC.ingot(), 'T', ModItems.tank_steel }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.boltgun), new Object[] { "DPS", " RD", " D ", 'D', DURA.ingot(), 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'R', RUBBER.ingot(), 'S', ModItems.hull_small_steel }); //Bobmazon CraftingManager.addShapelessAuto(new ItemStack(ModItems.bobmazon_materials), new Object[] { Items.book, Items.gold_nugget, Items.string }); diff --git a/src/main/java/com/hbm/entity/effect/EntityMist.java b/src/main/java/com/hbm/entity/effect/EntityMist.java index 06de19176..4150a436b 100644 --- a/src/main/java/com/hbm/entity/effect/EntityMist.java +++ b/src/main/java/com/hbm/entity/effect/EntityMist.java @@ -29,6 +29,7 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; +import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.DamageSource; import net.minecraft.world.World; @@ -66,8 +67,9 @@ public class EntityMist extends Entity { public void onEntityUpdate() { float height = this.dataWatcher.getWatchableObjectFloat(12); - this.yOffset = -height / 2F; + this.yOffset = 0; this.setSize(this.dataWatcher.getWatchableObjectFloat(11), height); + this.setPosition(this.posX, this.posY, this.posZ); if(!worldObj.isRemote) { @@ -90,11 +92,20 @@ public class EntityMist extends Entity { return; } - List affected = worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox); + AxisAlignedBB aabb = this.boundingBox.copy(); + List affected = worldObj.getEntitiesWithinAABBExcludingEntity(this, aabb.offset(-this.width / 2, 0, -this.width / 2)); for(Entity e : affected) { this.affect(e, intensity); } + } else { + + for(int i = 0; i < 2; i++) { + double x = this.boundingBox.minX + rand.nextDouble() * (this.boundingBox.maxX - this.boundingBox.minX); + double y = this.boundingBox.minY + rand.nextDouble() * (this.boundingBox.maxY - this.boundingBox.minY); + double z = this.boundingBox.minZ + rand.nextDouble() * (this.boundingBox.maxZ - this.boundingBox.minZ); + worldObj.spawnParticle("cloud", x, y, z, 0, 0, 0); + } } } diff --git a/src/main/java/com/hbm/entity/mob/EntityCreeperPhosgene.java b/src/main/java/com/hbm/entity/mob/EntityCreeperPhosgene.java index 53cfbe7f7..dc6015870 100644 --- a/src/main/java/com/hbm/entity/mob/EntityCreeperPhosgene.java +++ b/src/main/java/com/hbm/entity/mob/EntityCreeperPhosgene.java @@ -32,6 +32,7 @@ public class EntityCreeperPhosgene extends EntityCreeper { if(!this.worldObj.isRemote) { this.setDead(); + worldObj.createExplosion(this, posX, posY + this.height / 2, posZ, 2F, false); EntityMist mist = new EntityMist(worldObj); mist.setType(Fluids.PHOSGENE); mist.setPosition(posX, posY, posZ); diff --git a/src/main/java/com/hbm/entity/projectile/EntityShrapnel.java b/src/main/java/com/hbm/entity/projectile/EntityShrapnel.java index 0d07ee058..3b1c7dea5 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityShrapnel.java +++ b/src/main/java/com/hbm/entity/projectile/EntityShrapnel.java @@ -80,10 +80,15 @@ public class EntityShrapnel extends EntityThrowable { } } + } else if(this.dataWatcher.getWatchableObjectByte(16) == 3) { + + if(worldObj.getBlock(mop.blockX, mop.blockY + 1, mop.blockZ).isReplaceable(worldObj, mop.blockX, mop.blockY + 1, mop.blockZ)) { + worldObj.setBlock(mop.blockX, mop.blockY + 1, mop.blockZ, ModBlocks.mud_block); + } + } else { - for(int i = 0; i < 5; i++) - worldObj.spawnParticle("lava", posX, posY, posZ, 0.0, 0.0, 0.0); + for(int i = 0; i < 5; i++) worldObj.spawnParticle("lava", posX, posY, posZ, 0.0, 0.0, 0.0); } worldObj.playSoundEffect(posX, posY, posZ, "random.fizz", 1.0F, 1.0F); @@ -97,4 +102,8 @@ public class EntityShrapnel extends EntityThrowable { public void setVolcano(boolean b) { this.dataWatcher.updateObject(16, (byte) (b ? 2 : 0)); } + + public void setWatz(boolean b) { + this.dataWatcher.updateObject(16, (byte) (b ? 3 : 0)); + } } diff --git a/src/main/java/com/hbm/handler/guncfg/Gun762mmFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun762mmFactory.java index 744314be0..d5da7444f 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun762mmFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun762mmFactory.java @@ -162,8 +162,8 @@ public class Gun762mmFactory { final BulletConfiguration bullet = Gun556mmFactory.get556Config().clone(); bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.STOCK)); - bullet.dmgMax *= 2; - bullet.dmgMin *= 2; + bullet.dmgMax = 20; + bullet.dmgMin = 24; bullet.velocity *= 2.5; bullet.maxAge *= 2; bullet.spread /= 2; @@ -177,8 +177,8 @@ public class Gun762mmFactory { final BulletConfiguration bullet = get762NATOConfig(); bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.AP)); - bullet.dmgMax *= 1.5; - bullet.dmgMin *= 1.5; + bullet.dmgMax = 24; + bullet.dmgMin = 28; bullet.spentCasing = CASING762NATO.clone().register("762NATOAP"); @@ -189,8 +189,8 @@ public class Gun762mmFactory { final BulletConfiguration bullet = get762NATOConfig(); bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.DU)); - bullet.dmgMax *= 2; - bullet.dmgMin *= 2; + bullet.dmgMax = 36; + bullet.dmgMin = 40; bullet.spentCasing = CASING762NATO.clone().register("762NATODU"); diff --git a/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java b/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java index 8d5772be4..3f4fcbe67 100644 --- a/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java +++ b/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java @@ -223,8 +223,8 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler { case 4: return new int[][] { {102, 24 - 9}, {120, 24 - 9}, - {138 + 36, 24 + 9}, - {156 + 36, 24 + 9} + {102, 24 + 9}, + {120, 24 + 9} }; } diff --git a/src/main/java/com/hbm/hazard/HazardRegistry.java b/src/main/java/com/hbm/hazard/HazardRegistry.java index b404040a2..b670bfde7 100644 --- a/src/main/java/com/hbm/hazard/HazardRegistry.java +++ b/src/main/java/com/hbm/hazard/HazardRegistry.java @@ -9,10 +9,12 @@ import com.hbm.config.GeneralConfig; import com.hbm.hazard.modifier.*; import com.hbm.hazard.transformer.*; import com.hbm.hazard.type.*; +import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.material.MaterialShapes; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemBreedingRod.BreedingRodType; import com.hbm.items.machine.ItemRTGPelletDepleted.DepletedRTGMaterial; +import com.hbm.items.machine.ItemWatzPellet.EnumWatzType; import com.hbm.items.machine.ItemZirnoxRod.EnumZirnoxType; import com.hbm.items.special.ItemHolotapeImage.EnumHoloImage; import com.hbm.util.Compat; @@ -104,6 +106,7 @@ public class HazardRegistry { public static final float saf = 5.85F; public static final float sas3 = 5F; public static final float gh336 = 5.0F; + public static final float mud = 1.0F; public static final float radsource_mult = 3.0F; public static final float pobe = po210 * radsource_mult; public static final float rabe = ra226 * radsource_mult; @@ -429,6 +432,17 @@ public class HazardRegistry { registerRBMKPellet(rbmk_pellet_zfb_am_mix, pu241 * billet * 0.1F, wst * billet * 10F); registerRBMKPellet(rbmk_pellet_drx, bf * billet, bf * billet * 100F, true, 0F, 1F/24F); + HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.SCHRABIDIUM), makeData(RADIATION, sa326 * ingot * 4)); + HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.HES), makeData(RADIATION, saf * ingot * 4)); + HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.MES), makeData(RADIATION, saf * ingot * 4)); + HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.LES), makeData(RADIATION, saf * ingot * 4)); + HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.HEN), makeData(RADIATION, np237 * ingot * 4)); + HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.MEU), makeData(RADIATION, uf * ingot * 4)); + HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.MEP), makeData(RADIATION, purg * ingot * 4)); + HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.DU), makeData(RADIATION, u238 * ingot * 4)); + HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.NQD), makeData(RADIATION, u235 * ingot * 4)); + HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.NQR), makeData(RADIATION, pu239 * ingot * 4)); + HazardSystem.register(powder_yellowcake, makeData(RADIATION, yc * powder)); HazardSystem.register(block_yellowcake, makeData(RADIATION, yc * block * powder_mult)); HazardSystem.register(ModItems.fallout, makeData(RADIATION, fo * powder)); diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index ca1ef53d8..8bd6b507a 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -32,6 +32,7 @@ import com.hbm.util.Compat; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import net.minecraft.block.Block; +import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -138,6 +139,7 @@ public class OreDictManager { public static final DictFrame SBD = new DictFrame("Schrabidate"); public static final DictFrame SRN = new DictFrame("Schraranium"); public static final DictFrame GH336 = new DictFrame("Ghiorsium336", "Gh336"); + public static final DictFrame MUD = new DictFrame("WatzMud"); /* * STABLE */ @@ -297,7 +299,7 @@ public class OreDictManager { IRON.plate(plate_iron).dust(powder_iron).ore(ore_gneiss_iron); GOLD.plate(plate_gold).dust(powder_gold).ore(ore_gneiss_gold); LAPIS.dust(powder_lapis); - NETHERQUARTZ.gem(Items.quartz).dust(powder_quartz); + NETHERQUARTZ.gem(Items.quartz).dust(powder_quartz).ore(Blocks.quartz_ore); DIAMOND.dust(powder_diamond).ore(gravel_diamond); EMERALD.dust(powder_emerald); @@ -331,6 +333,7 @@ public class OreDictManager { SBD .rad(HazardRegistry.sb) .blinding(50F) .ingot(ingot_schrabidate) .dust(powder_schrabidate) .block(block_schrabidate); SRN .rad(HazardRegistry.sr) .blinding(50F) .ingot(ingot_schraranium) .block(block_schraranium); GH336 .rad(HazardRegistry.gh336) .nugget(nugget_gh336) .billet(billet_gh336) .ingot(ingot_gh336); + MUD .rad(HazardRegistry.mud) .ingot(ingot_mud); /* * STABLE diff --git a/src/main/java/com/hbm/inventory/material/Mats.java b/src/main/java/com/hbm/inventory/material/Mats.java index f6b839d9e..ffb7d3516 100644 --- a/src/main/java/com/hbm/inventory/material/Mats.java +++ b/src/main/java/com/hbm/inventory/material/Mats.java @@ -123,6 +123,7 @@ public class Mats { public static final NTMMaterial MAT_CMB = makeSmeltable(_AS + 9, CMB, 0x6F6FB4, 0x000011, 0x6F6FB4).setShapes(INGOT, DUST, PLATE, CASTPLATE, BLOCK); public static final NTMMaterial MAT_FLUX = makeAdditive(_AS + 10, df("Flux"), 0xF1E0BB, 0x6F6256, 0xDECCAD).setShapes(DUST); public static final NTMMaterial MAT_SLAG = makeSmeltable(_AS + 11, SLAG, 0x554940, 0x34281F, 0x6C6562).setShapes(BLOCK); + public static final NTMMaterial MAT_MUD = makeSmeltable(_AS + 14, MUD, 0xBCB5A9, 0x481213, 0x96783B).setShapes(INGOT); @Deprecated public static NTMMaterial makeSmeltable(int id, DictFrame dict, int color) { return makeSmeltable(id, dict, color, color, color); } @Deprecated public static NTMMaterial makeAdditive(int id, DictFrame dict, int color) { return makeAdditive(id, dict, color, color, color); } diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index c067c89db..383e87b4b 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -298,15 +298,13 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.machine_turbinegas, 1), new AStack[] {new ComparableStack(ModItems.hull_big_steel, 4), new ComparableStack(ModItems.hull_small_steel, 6), new ComparableStack(ModItems.generator_steel, 2), new ComparableStack(ModItems.bolt_compound, 4), new ComparableStack(ModBlocks.steel_scaffold, 8), new ComparableStack(ModBlocks.deco_pipe_quad, 4), new ComparableStack(ModItems.turbine_tungsten, 3), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.ingot_rubber, 4), new ComparableStack(ModItems.circuit_red_copper, 3)}, 600); makeRecipe(new ComparableStack(ModBlocks.machine_teleporter, 1), new AStack[] {new OreDictStack(TI.ingot(), 8), new OreDictStack(ALLOY.plate528(), 12), new ComparableStack(ModItems.wire_gold, 32), new ComparableStack(ModItems.entanglement_kit, 1), new ComparableStack(ModBlocks.machine_battery, 1) },300); makeRecipe(new ComparableStack(ModBlocks.machine_schrabidium_transmutator, 1), new AStack[] {new OreDictStack(MAGTUNG.ingot(), 1), new OreDictStack(TI.ingot(), 24), new OreDictStack(ALLOY.plate(), 18), new OreDictStack(STEEL.plate(), 12), new ComparableStack(ModItems.plate_desh, 6), new OreDictStack(RUBBER.ingot(), 8), new ComparableStack(ModBlocks.machine_battery, 5), new ComparableStack(ModItems.circuit_gold, 5), },500); - makeRecipe(new ComparableStack(ModBlocks.machine_combine_factory, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 8), new OreDictStack(ANY_PLASTIC.ingot(), 6), new OreDictStack(TI.plate(), 4), new OreDictStack(CU.plate(), 6), new ComparableStack(ModItems.circuit_gold, 6), new ComparableStack(ModItems.coil_advanced_alloy, 8), new ComparableStack(ModItems.coil_tungsten, 4), new OreDictStack(MAGTUNG.ingot(), 12), },150); makeRecipe(new ComparableStack(ModBlocks.fusion_conductor, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new ComparableStack(ModItems.coil_advanced_alloy, 5), },150); makeRecipe(new ComparableStack(ModBlocks.fusion_center, 1), new AStack[] {new OreDictStack(ANY_HARDPLASTIC.ingot(), 4), new OreDictStack(STEEL.plate528(), 6), new ComparableStack(ModItems.wire_advanced_alloy, 24), },200); makeRecipe(new ComparableStack(ModBlocks.fusion_motor, 1), new AStack[] {new OreDictStack(TI.ingot(), 4), new OreDictStack(STEEL.ingot(), 2), new ComparableStack(ModItems.motor, 4), },250); makeRecipe(new ComparableStack(ModBlocks.fusion_heater, 1), new AStack[] {new OreDictStack(W.ingot(), 4), new OreDictStack(STEEL.plate528(), 2), new OreDictStack(OreDictManager.getReflector(), 2), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.magnetron, 1), new ComparableStack(ModItems.wire_advanced_alloy, 4), },150); - makeRecipe(new ComparableStack(ModBlocks.watz_element, 1), new AStack[] {new OreDictStack(W.ingot(), 4), new OreDictStack(ALLOY.plate(), 4), new ComparableStack(ModItems.rod_empty, 2), new ComparableStack(ModItems.wire_magnetized_tungsten, 2), new ComparableStack(ModItems.wire_advanced_alloy, 4), },200); - makeRecipe(new ComparableStack(ModBlocks.watz_cooler, 1), new AStack[] {new OreDictStack(W.ingot(), 2), new OreDictStack(STEEL.ingot(), 2), new OreDictStack(KNO.dust(), 4), },300); + makeRecipe(new ComparableStack(ModBlocks.watz_element, 3), new AStack[] {new OreDictStack(STEEL.plateCast(), 2), new OreDictStack(ZR.ingot(), 2), new OreDictStack(BIGMT.ingot(), 2), new OreDictStack(ANY_HARDPLASTIC.ingot(), 4)},200); + makeRecipe(new ComparableStack(ModBlocks.watz_cooler, 3), new AStack[] {new OreDictStack(STEEL.plateCast(), 2), new OreDictStack(CU.plateCast(), 4), new OreDictStack(RUBBER.ingot(), 2), }, 200); makeRecipe(new ComparableStack(ModBlocks.watz_end, 3), new AStack[] {new OreDictStack(ANY_RESISTANTALLOY.plateTriple()), new OreDictStack(B.ingot(), 3), new OreDictStack(STEEL.plate(), 9), }, 100); - makeRecipe(new ComparableStack(ModBlocks.watz_core, 1), new AStack[] {new ComparableStack(ModBlocks.block_meteor, 1), new ComparableStack(ModItems.circuit_gold, 5), new ComparableStack(ModItems.circuit_schrabidium, 2), new ComparableStack(ModItems.wire_magnetized_tungsten, 12), },350); makeRecipe(new ComparableStack(ModBlocks.fwatz_hatch, 1), new AStack[] {new OreDictStack(W.ingot(), 6), new OreDictStack(CMB.plate(), 4), },250); makeRecipe(new ComparableStack(ModBlocks.fwatz_conductor, 1), new AStack[] {new OreDictStack(CMB.plate(), 2), new ComparableStack(ModItems.coil_magnetized_tungsten, 5), },250); makeRecipe(new ComparableStack(ModBlocks.fwatz_computer, 1), new AStack[] {new ComparableStack(ModBlocks.block_meteor, 1), new ComparableStack(ModItems.wire_magnetized_tungsten, 16), new OreDictStack(DIAMOND.dust(), 6), new OreDictStack(MAGTUNG.dust(), 6), new OreDictStack(DESH.dust(), 4), },300); diff --git a/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java b/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java index 3569d3c52..992ed2e3e 100644 --- a/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java @@ -20,6 +20,7 @@ import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemWatzPellet.EnumWatzType; import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre; import com.hbm.items.special.ItemByproduct.EnumByproduct; import com.hbm.main.MainRegistry; @@ -134,6 +135,73 @@ public class CentrifugeRecipes extends SerializableRecipe { new ItemStack(ModItems.nugget_pu238, 1), new ItemStack(ModItems.nugget_technetium, 1), new ItemStack(ModItems.nuclear_waste_tiny, 6) }); + + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.SCHRABIDIUM)), new ItemStack[] { + new ItemStack(ModItems.ingot_mud, 1), + new ItemStack(ModItems.nugget_solinium, 15), + new ItemStack(ModItems.nugget_euphemium, 3), + new ItemStack(ModItems.nuclear_waste, 2) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.HES)), new ItemStack[] { + new ItemStack(ModItems.ingot_mud, 1), + new ItemStack(ModItems.nugget_solinium, 17), + new ItemStack(ModItems.nugget_euphemium, 1), + new ItemStack(ModItems.nuclear_waste, 2) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.MES)), new ItemStack[] { + new ItemStack(ModItems.ingot_mud, 1), + new ItemStack(ModItems.nugget_solinium, 12), + new ItemStack(ModItems.nugget_tantalium, 6), + new ItemStack(ModItems.nuclear_waste, 2) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.LES)), new ItemStack[] { + new ItemStack(ModItems.ingot_mud, 1), + new ItemStack(ModItems.nugget_solinium, 9), + new ItemStack(ModItems.nugget_tantalium, 9), + new ItemStack(ModItems.nuclear_waste, 2) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.HEN)), new ItemStack[] { + new ItemStack(ModItems.ingot_mud, 1), + new ItemStack(ModItems.nugget_pu239, 12), + new ItemStack(ModItems.nugget_technetium, 6), + new ItemStack(ModItems.nuclear_waste, 2) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.MEU)), new ItemStack[] { + new ItemStack(ModItems.ingot_mud, 1), + new ItemStack(ModItems.nugget_pu239, 12), + new ItemStack(ModItems.nugget_bismuth, 6), + new ItemStack(ModItems.nuclear_waste, 2) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.MEP)), new ItemStack[] { + new ItemStack(ModItems.ingot_mud, 1), + new ItemStack(ModItems.nugget_pu241, 12), + new ItemStack(ModItems.nugget_bismuth, 6), + new ItemStack(ModItems.nuclear_waste, 2) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.LEAD)), new ItemStack[] { + new ItemStack(ModItems.ingot_mud, 1), + new ItemStack(ModItems.nugget_lead, 6), + new ItemStack(ModItems.nugget_bismuth, 12), + new ItemStack(ModItems.nuclear_waste, 2) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.BORON)), new ItemStack[] { + new ItemStack(ModItems.ingot_mud, 1), + new ItemStack(ModItems.powder_coal_tiny, 12), + new ItemStack(ModItems.nugget_co60, 6), + new ItemStack(ModItems.nuclear_waste, 2) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.DU)), new ItemStack[] { + new ItemStack(ModItems.ingot_mud, 1), + new ItemStack(ModItems.nugget_polonium, 12), + new ItemStack(ModItems.nugget_pu238, 6), + new ItemStack(ModItems.nuclear_waste, 2) }); + + if(OreDictionary.doesOreNameExist("nuggetNaquadria")) { + ItemStack nuggetNQR = OreDictionary.getOres("nuggetNaquadria").get(0); + ItemStack copy = nuggetNQR.copy(); + copy.stackSize = 12; + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.NQD)), new ItemStack[] { + new ItemStack(ModItems.ingot_mud, 1), + copy, + new ItemStack(ModItems.nugget_euphemium, 6), + new ItemStack(ModItems.nuclear_waste, 2) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.NQR)), new ItemStack[] { + new ItemStack(ModItems.ingot_mud, 1), + new ItemStack(ModItems.nugget_co60, 12), + new ItemStack(ModItems.nugget_euphemium, 6), + new ItemStack(ModItems.nuclear_waste, 2) }); + } recipes.put(new ComparableStack(ModItems.powder_cloud), new ItemStack[] { new ItemStack(ModItems.powder_copper, 1), diff --git a/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java index 42f2dc872..9fa52a29e 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java @@ -96,6 +96,10 @@ public class CrucibleRecipes extends SerializableRecipe { .inputs(new MaterialStack(Mats.MAT_STEEL, n * 8), new MaterialStack(Mats.MAT_CADMIUM, n)) .outputs(new MaterialStack(Mats.MAT_CDALLOY, i))); + recipes.add(new CrucibleRecipe(13, "crucible.cmb", 3, new ItemStack(ModItems.ingot_combine_steel)) + .inputs(new MaterialStack(Mats.MAT_MAGTUNG, n * 6), new MaterialStack(Mats.MAT_MUD, n * 3)) + .outputs(new MaterialStack(Mats.MAT_CMB, i))); + registerMoldsForNEI(); } diff --git a/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java b/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java index 05385ff54..91940bef6 100644 --- a/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java @@ -66,6 +66,7 @@ public class SolidificationRecipes extends SerializableRecipe { registerRecipe(BIOGAS, 250, ModItems.biomass_compressed); registerRecipe(SALIENT, 1280, new ItemStack(ModItems.bio_wafer, 8)); //4 (food val) * 2 (sat mod) * 2 (constant) * 10 (quanta) * 8 (batch size) registerRecipe(ENDERJUICE, 100, Items.ender_pearl); + registerRecipe(WATZ, 1000, ModItems.ingot_mud); registerRecipe(OIL, SF_OIL, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE)); registerRecipe(CRACKOIL, SF_CRACK, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRACK)); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index d63f62630..fbfec83a4 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -359,6 +359,7 @@ public class ModItems { public static Item ingot_cadmium; public static Item powder_cadmium; public static Item powder_bismuth; + public static Item ingot_mud; public static Item ingot_lanthanium; public static Item ingot_actinium; @@ -2651,6 +2652,7 @@ public class ModItems { ingot_cadmium = new Item().setUnlocalizedName("ingot_cadmium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_cadmium"); powder_cadmium = new Item().setUnlocalizedName("powder_cadmium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_cadmium"); powder_bismuth = new Item().setUnlocalizedName("powder_bismuth").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_bismuth"); + ingot_mud = new Item().setUnlocalizedName("ingot_mud").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_mud"); ore_byproduct = new ItemByproduct().setUnlocalizedName("ore_byproduct").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":byproduct"); @@ -5540,6 +5542,7 @@ public class ModItems { //GameRegistry.registerItem(ingot_pet, ingot_pet.getUnlocalizedName()); GameRegistry.registerItem(ingot_pc, ingot_pc.getUnlocalizedName()); GameRegistry.registerItem(ingot_pvc, ingot_pvc.getUnlocalizedName()); + GameRegistry.registerItem(ingot_mud, ingot_mud.getUnlocalizedName()); GameRegistry.registerItem(ingot_schraranium, ingot_schraranium.getUnlocalizedName()); GameRegistry.registerItem(ingot_schrabidium, ingot_schrabidium.getUnlocalizedName()); GameRegistry.registerItem(ingot_schrabidate, ingot_schrabidate.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/machine/ItemWatzPellet.java b/src/main/java/com/hbm/items/machine/ItemWatzPellet.java index 4a0f35dc1..c8e31a111 100644 --- a/src/main/java/com/hbm/items/machine/ItemWatzPellet.java +++ b/src/main/java/com/hbm/items/machine/ItemWatzPellet.java @@ -36,18 +36,18 @@ public class ItemWatzPellet extends ItemEnumMulti { public static enum EnumWatzType { - SCHRABIDIUM( 0x32FFFF, 0x005C5C, 2_000, 20D, 0.02D, new FunctionLinear(1.5D), new FunctionSqrt(1D/20D).withOff(20D * 20D), null), - HES( 0x66DCD6, 0x023933, 1_750, 20D, 0.01D, new FunctionLinear(1.25D), new FunctionSqrt(1/15D).withOff(15D*15D), null), - MES( 0xCBEADF, 0x28473C, 1_500, 15D, 0.005D, new FunctionLinear(1.15D), new FunctionSqrt(1/15D).withOff(15D*15D), null), - LES( 0xABB4A8, 0x0C1105, 1_250, 15D, 0.0025D, new FunctionLinear(1D), new FunctionSqrt(1/10D).withOff(10D*10D), null), - HEN( 0xA6B2A6, 0x030F03, 0, 10D, 0.001D, new FunctionSqrt(100), null, null), - MEU( 0xC1C7BD, 0x2B3227, 0, 10D, 0.001D, new FunctionSqrt(75), null, null), - MEP( 0x9AA3A0, 0x111A17, 0, 15D, 0.001D, new FunctionSqrt(150), new FunctionSqrt(1D/20D).withOff(20D * 20D), null), - LEAD( 0xA6A6B2, 0x03030F, 0, 0, 0.005D, null, null, new FunctionSqrt(10)), //standard absorber, negative coefficient - BORON( 0xBDC8D2, 0x29343E, 0, 0, 0.005D, null, null, new FunctionLinear(10)), //improved absorber, linear - DU( 0xC1C7BD, 0x2B3227, 0, 0, 0.005D, null, null, new FunctionQuadratic(1D, 1D).withDiv(100)), //absorber with positive coefficient - NQD( 0x4B4B4B, 0x121212, 2_000, 20, 0.02D, new FunctionLinear(2D), new FunctionSqrt(1D/25D).withOff(25D * 25D), null), - NQR( 0x2D2D2D, 0x0B0B0B, 2_500, 30, 0.02D, new FunctionLinear(1.5D), new FunctionSqrt(1D/25D).withOff(25D * 25D), null); + SCHRABIDIUM( 0x32FFFF, 0x005C5C, 2_000, 20D, 0.01D, new FunctionLinear(1.5D), new FunctionSqrtFalling(10D), null), + HES( 0x66DCD6, 0x023933, 1_750, 20D, 0.005D, new FunctionLinear(1.25D), new FunctionSqrtFalling(15D), null), + MES( 0xCBEADF, 0x28473C, 1_500, 15D, 0.0025D, new FunctionLinear(1.15D), new FunctionSqrtFalling(15D), null), + LES( 0xABB4A8, 0x0C1105, 1_250, 15D, 0.00125D, new FunctionLinear(1D), new FunctionSqrtFalling(20D), null), + HEN( 0xA6B2A6, 0x030F03, 0, 10D, 0.0005D, new FunctionSqrt(100), new FunctionSqrtFalling(10D), null), + MEU( 0xC1C7BD, 0x2B3227, 0, 10D, 0.0005D, new FunctionSqrt(75), new FunctionSqrtFalling(10D), null), + MEP( 0x9AA3A0, 0x111A17, 0, 15D, 0.0005D, new FunctionSqrt(150), new FunctionSqrtFalling(10D), null), + LEAD( 0xA6A6B2, 0x03030F, 0, 0, 0.0025D, null, null, new FunctionSqrt(10)), //standard absorber, negative coefficient + BORON( 0xBDC8D2, 0x29343E, 0, 0, 0.0025D, null, null, new FunctionLinear(10)), //improved absorber, linear + DU( 0xC1C7BD, 0x2B3227, 0, 0, 0.0025D, null, null, new FunctionQuadratic(1D, 1D).withDiv(100)), //absorber with positive coefficient + NQD( 0x4B4B4B, 0x121212, 2_000, 20, 0.01D, new FunctionLinear(2D), new FunctionSqrt(1D/25D).withOff(25D * 25D), null), + NQR( 0x2D2D2D, 0x0B0B0B, 2_500, 30, 0.01D, new FunctionLinear(1.5D), new FunctionSqrt(1D/25D).withOff(25D * 25D), null); public double yield = 1_000_000_000; public int colorLight; @@ -123,6 +123,9 @@ public class ItemWatzPellet extends ItemEnumMulti { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { + + if(this != ModItems.watz_pellet) return; + EnumWatzType num = EnumUtil.grabEnumSafely(EnumWatzType.class, stack.getItemDamage()); list.add(EnumChatFormatting.GREEN + "Depletion: " + String.format(Locale.US, "%.1f", getDurabilityForDisplay(stack) * 100D) + "%"); @@ -145,7 +148,7 @@ public class ItemWatzPellet extends ItemEnumMulti { @Override public boolean showDurabilityBar(ItemStack stack) { - return getDurabilityForDisplay(stack) > 0D; + return this == ModItems.watz_pellet && getDurabilityForDisplay(stack) > 0D; } @Override @@ -184,6 +187,7 @@ public class ItemWatzPellet extends ItemEnumMulti { @Override public void onCreated(ItemStack stack, World world, EntityPlayer player) { + if(this != ModItems.watz_pellet) return; setNBTDefaults(stack); //minimize the window where NBT screwups can happen } } diff --git a/src/main/java/com/hbm/items/weapon/ItemGunBase.java b/src/main/java/com/hbm/items/weapon/ItemGunBase.java index 507b1a603..347570496 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunBase.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunBase.java @@ -690,7 +690,9 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu GunConfiguration gcfg = gun.mainConfig; if(type == ElementType.HOTBAR) { - BulletConfiguration bcfg = BulletConfigSyncingUtil.pullConfig(gun.mainConfig.config.get(ItemGunBase.getMagType(stack))); + int mag = ItemGunBase.getMagType(stack); + if(gun.mainConfig.config.size() == 0) return; + BulletConfiguration bcfg = BulletConfigSyncingUtil.pullConfig(gun.mainConfig.config.get(mag < gun.mainConfig.config.size() ? mag : 0)); if(bcfg == null) { return; diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 3eb20ac61..0a206e0f1 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 (4562)"; + public static final String VERSION = "1.0.27 BETA (4578)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index f0b062205..baadb5428 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -366,7 +366,8 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.mechanism_launcher_1, 1), new Object[] { "TTT", "SSS", "BBI", 'T', TI.plate(), 'S', STEEL.ingot(), 'B', ModItems.bolt_tungsten, 'I', MINGRADE.ingot() }); addRecipeAuto(new ItemStack(ModItems.mechanism_launcher_2, 1), new Object[] { "TTT", "SSS", "BBI", 'T', ALLOY.plate(), 'S', ANY_PLASTIC.ingot(), 'B', ModItems.bolt_dura_steel, 'I', DESH.ingot() }); addRecipeAuto(new ItemStack(ModItems.mechanism_special, 1), new Object[] { "PCI", "ISS", "PCI", 'P', ModItems.plate_desh, 'C', ModItems.coil_advanced_alloy, 'I', STAR.ingot(), 'S', ModItems.circuit_targeting_tier3 }); - + + addRecipeAuto(new ItemStack(ModBlocks.watz_pump, 1), new Object[] { "MPM", "PCP", "PSP", 'M', ModItems.motor_desh, 'P', ANY_RESISTANTALLOY.plateTriple(), 'C', KEY_CIRCUIT_BISMUTH, 'S', ModItems.pipes_steel }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.fwatz_cooler), 1), new Object[] { "IPI", "IPI", "IPI", 'I', TI.ingot(), 'P', TI.plate() }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.fwatz_tank), 1), new Object[] { "CGC", "GGG", "CGC", 'C', CMB.plate(), 'G', KEY_ANYPANE }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.fwatz_scaffold), 1), new Object[] { "IPI", "P P", "IPI", 'I', W.ingot(), 'P', getReflector() }); @@ -765,6 +766,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.barrel_antimatter, 1), new Object[] { "IPI", "IBI", "IPI", 'I', BIGMT.plate(), 'P', ModItems.coil_advanced_torus, 'B', ModItems.battery_sc_technetium }); addRecipeAuto(new ItemStack(ModBlocks.tesla, 1), new Object[] { "CCC", "PIP", "WTW", 'C', ModItems.coil_copper, 'I', IRON.ingot(), 'P', ANY_PLASTIC.ingot(), 'T', ModBlocks.machine_transformer, 'W', KEY_PLANKS }); addRecipeAuto(new ItemStack(ModBlocks.struct_plasma_core, 1), new Object[] { "CBC", "BHB", "CBC", 'C', ModItems.circuit_gold, 'B', ModBlocks.machine_lithium_battery, 'H', ModBlocks.fusion_heater }); + addRecipeAuto(new ItemStack(ModBlocks.struct_watz_core, 1), new Object[] { "CBC", "BHB", "CBC", 'C', ModItems.circuit_schrabidium, 'B', ANY_RESISTANTALLOY.plateTriple(), 'H', ModBlocks.watz_cooler }); addShapelessAuto(new ItemStack(ModBlocks.fusion_heater), new Object[] { ModBlocks.fusion_hatch }); addShapelessAuto(new ItemStack(ModItems.energy_core), new Object[] { ModItems.fusion_core, ModItems.fuse }); addRecipeAuto(new ItemStack(ModItems.catalytic_converter, 1), new Object[] { "PCP", "PBP", "PCP", 'P', ANY_HARDPLASTIC.ingot(), 'C', CO.dust(), 'B', BI.ingot() }); diff --git a/src/main/java/com/hbm/render/entity/projectile/RenderShrapnel.java b/src/main/java/com/hbm/render/entity/projectile/RenderShrapnel.java index 8bc74b359..69c387e22 100644 --- a/src/main/java/com/hbm/render/entity/projectile/RenderShrapnel.java +++ b/src/main/java/com/hbm/render/entity/projectile/RenderShrapnel.java @@ -29,7 +29,7 @@ public class RenderShrapnel extends Render { bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/entity/shrapnel.png")); if(rocket instanceof EntityShrapnel) { - if(rocket.getDataWatcher().getWatchableObjectByte(16) == 2) { //scale up lava blobs + if(rocket.getDataWatcher().getWatchableObjectByte(16) >= 2) { //scale up lava blobs GL11.glScaled(3, 3, 3); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java index 6ee9c5d3b..bc44e2653 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java @@ -23,6 +23,7 @@ import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.CrucibleUtil; +import api.hbm.block.ICrucibleAcceptor; import api.hbm.tile.IHeatSource; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; @@ -41,7 +42,7 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCrucible extends TileEntityMachineBase implements IGUIProvider, IConfigurableMachine { +public class TileEntityCrucible extends TileEntityMachineBase implements IGUIProvider, ICrucibleAcceptor, IConfigurableMachine { public int heat; public int progress; @@ -529,4 +530,57 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro public double getMaxRenderDistanceSquared() { return 65536.0D; } + + @Override + public boolean canAcceptPartialPour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) { + + CrucibleRecipe recipe = getLoadedRecipe(); + + if(recipe == null) { + return getQuantaFromType(this.wasteStack, null) < this.wasteZCapacity; + } + + int recipeContent = recipe.getInputAmount(); + int recipeInputRequired = getQuantaFromType(recipe.input, stack.material); + int matMaximum = recipeInputRequired * this.recipeZCapacity / recipeContent; + int amountStored = getQuantaFromType(recipeStack, stack.material); + + return amountStored < matMaximum; + } + + @Override + public MaterialStack pour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) { + + CrucibleRecipe recipe = getLoadedRecipe(); + + if(recipe == null) { + + int amount = getQuantaFromType(this.wasteStack, null); + + if(amount + stack.amount <= this.wasteZCapacity) { + this.addToStack(this.wasteStack, stack.copy()); + return null; + } else { + int toAdd = this.wasteZCapacity - amount; + this.addToStack(this.wasteStack, new MaterialStack(stack.material, toAdd)); + return new MaterialStack(stack.material, stack.amount - toAdd); + } + } + + int recipeContent = recipe.getInputAmount(); + int recipeInputRequired = getQuantaFromType(recipe.input, stack.material); + int matMaximum = recipeInputRequired * this.recipeZCapacity / recipeContent; + + if(recipeInputRequired + stack.amount <= matMaximum) { + this.addToStack(this.recipeStack, stack.copy()); + return null; + } + + int toAdd = matMaximum - stack.amount; + this.addToStack(this.recipeStack, new MaterialStack(stack.material, toAdd)); + return new MaterialStack(stack.material, stack.amount - toAdd); + } + + @Override public boolean canAcceptPartialFlow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { return false; } + @Override public MaterialStack flow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { return null; } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java b/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java index be72c62f4..4f1124f8e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java @@ -2,8 +2,11 @@ package com.hbm.tileentity.machine; import java.util.ArrayList; import java.util.List; +import java.util.Random; import com.hbm.blocks.ModBlocks; +import com.hbm.entity.projectile.EntityShrapnel; +import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.container.ContainerWatz; import com.hbm.inventory.fluid.Fluids; @@ -14,6 +17,9 @@ import com.hbm.inventory.gui.GUIWatz; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemWatzPellet; import com.hbm.items.machine.ItemWatzPellet.EnumWatzType; +import com.hbm.main.MainRegistry; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.Compat; @@ -22,10 +28,13 @@ import com.hbm.util.fauxpointtwelve.DirPos; import com.hbm.util.function.Function; import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -126,6 +135,29 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand } segments.get(segments.size() - 1).sendOutBottom(); + + /* explode on mud overflow */ + if(sharedTanks[2].getFill() > 0) { + for(int x = -3; x <= 3; x++) { + for(int y = 3; y < 6; y++) { + for(int z = -3; z <= 3; z++) { + worldObj.setBlock(xCoord + x, yCoord + y, zCoord + z, Blocks.air); + } + } + } + this.disassemble(); + + ChunkRadiationManager.proxy.incrementRad(worldObj, xCoord, yCoord + 1, zCoord, 1_000F); + + worldObj.playSoundEffect(xCoord + 0.5, yCoord + 2, zCoord + 0.5, "hbm:block.rbmk_explosion", 50.0F, 1.0F); + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "rbmkmush"); + data.setFloat("scale", 5); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5, yCoord + 2, zCoord + 0.5), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 250)); + MainRegistry.proxy.effectNT(data); + + return; + } } } @@ -137,7 +169,7 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand public void updateCoolant(FluidTank[] tanks) { - double coolingFactor = 0.05D; //20% per tick, TEMP + double coolingFactor = 0.1D; //10% per tick, TEMP double heatToUse = this.heat * coolingFactor; FT_Heatable trait = tanks[0].getTankType().getTrait(FT_Heatable.class); @@ -215,17 +247,21 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand } + for(int i = 0; i < 24; i++) { + ItemStack stack = slots[i]; + + /* deplete */ + if(stack != null && stack.getItem() == ModItems.watz_pellet && ItemWatzPellet.getEnrichment(stack) <= 0) { + slots[i] = new ItemStack(ModItems.watz_pellet_depleted, 1, stack.getItemDamage()); + continue; // depleted pellets may persist for one tick + } + } + if(above != null) { for(int i = 0; i < 24; i++) { ItemStack stackBottom = slots[i]; ItemStack stackTop = above.slots[i]; - /* deplete */ - if(stackBottom != null && stackBottom.getItem() == ModItems.watz_pellet && ItemWatzPellet.getYield(stackBottom) <= 0) { - slots[i] = new ItemStack(ModItems.watz_pellet_depleted, 1, stackBottom.getItemDamage()); - continue; // depleted pellets may persist for one tick - } - /* items fall down if the bottom slot is empty */ if(stackBottom == null && stackTop != null) { slots[i] = stackTop.copy(); @@ -407,6 +443,73 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand return bb; } + private void disassemble() { + + int count = 20; + Random rand = worldObj.rand; + for(int i = 0; i < count * 5; i++) { + EntityShrapnel shrapnel = new EntityShrapnel(worldObj); + shrapnel.posX = xCoord + 0.5; + shrapnel.posY = yCoord + 3; + shrapnel.posZ = zCoord + 0.5; + shrapnel.motionY = ((rand.nextFloat() * 0.5) + 0.5) * (1 + (count / (15 + rand.nextInt(21)))) + (rand.nextFloat() / 50 * count); + shrapnel.motionX = rand.nextGaussian() * 1 * (1 + (count / 100)); + shrapnel.motionZ = rand.nextGaussian() * 1 * (1 + (count / 100)); + shrapnel.setWatz(true); + worldObj.spawnEntityInWorld(shrapnel); + } + + worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.mud_block); + worldObj.setBlock(xCoord, yCoord + 1, zCoord, ModBlocks.mud_block); + worldObj.setBlock(xCoord, yCoord + 2, zCoord, ModBlocks.mud_block); + + setBrokenColumn(0, ModBlocks.watz_element, 0, 1, 0); + setBrokenColumn(0, ModBlocks.watz_element, 0, 2, 0); + setBrokenColumn(0, ModBlocks.watz_element, 0, 0, 1); + setBrokenColumn(0, ModBlocks.watz_element, 0, 0, 2); + setBrokenColumn(0, ModBlocks.watz_element, 0, -1, 0); + setBrokenColumn(0, ModBlocks.watz_element, 0, -2, 0); + setBrokenColumn(0, ModBlocks.watz_element, 0, 0, -1); + setBrokenColumn(0, ModBlocks.watz_element, 0, 0, -2); + setBrokenColumn(0, ModBlocks.watz_element, 0, 1, 1); + setBrokenColumn(0, ModBlocks.watz_element, 0, 1, -1); + setBrokenColumn(0, ModBlocks.watz_element, 0, -1, 1); + setBrokenColumn(0, ModBlocks.watz_element, 0, -1, -1); + setBrokenColumn(0, ModBlocks.watz_cooler, 0, 2, 1); + setBrokenColumn(0, ModBlocks.watz_cooler, 0, 2, -1); + setBrokenColumn(0, ModBlocks.watz_cooler, 0, 1, 2); + setBrokenColumn(0, ModBlocks.watz_cooler, 0, -1, 2); + setBrokenColumn(0, ModBlocks.watz_cooler, 0, -2, 1); + setBrokenColumn(0, ModBlocks.watz_cooler, 0, -2, -1); + setBrokenColumn(0, ModBlocks.watz_cooler, 0, 1, -2); + setBrokenColumn(0, ModBlocks.watz_cooler, 0, -1, -2); + + for(int j = -1; j < 2; j++) { + setBrokenColumn(1, ModBlocks.watz_end, 1, 3, j); + setBrokenColumn(1, ModBlocks.watz_end, 1, j, 3); + setBrokenColumn(1, ModBlocks.watz_end, 1, -3, j); + setBrokenColumn(1, ModBlocks.watz_end, 1, j, -3); + } + setBrokenColumn(1, ModBlocks.watz_end, 1, 2, 2); + setBrokenColumn(1, ModBlocks.watz_end, 1, 2, -2); + setBrokenColumn(1, ModBlocks.watz_end, 1, -2, 2); + setBrokenColumn(1, ModBlocks.watz_end, 1, -2, -2); + } + + private void setBrokenColumn(int minHeight, Block b, int meta, int x, int z) { + + int height = minHeight + worldObj.rand.nextInt(3 - minHeight); + + for(int i = 0; i < 3; i++) { + + if(i <= height) { + worldObj.setBlock(xCoord + x, yCoord + i, zCoord + z, b, meta, 3); + } else { + worldObj.setBlock(xCoord + x, yCoord + i, zCoord + z, ModBlocks.mud_block); + } + } + } + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { diff --git a/src/main/java/com/hbm/util/function/Function.java b/src/main/java/com/hbm/util/function/Function.java index 6f50ee651..544328e5c 100644 --- a/src/main/java/com/hbm/util/function/Function.java +++ b/src/main/java/com/hbm/util/function/Function.java @@ -64,6 +64,13 @@ public abstract class Function { @Override public String getDangerFromFuel() { return EnumChatFormatting.YELLOW + "MEDIUM / SQUARE ROOT"; } } + public static class FunctionSqrtFalling extends FunctionSqrt { + public FunctionSqrtFalling(double fallFactor) { + super(1D / fallFactor); + this.withOff(fallFactor * fallFactor); + } + } + public static class FunctionLinear extends FunctionSingleArg { public FunctionLinear(double level) { super(level); } @Override public double effonix(double x) { return getX(x) * this.level; } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index bb2d077b3..eb0dbc7e7 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -416,6 +416,7 @@ container.zirnox=ZIRNOX Atomreaktor crucible.aa=Herstellung - Fortgeschrittene Legierung crucible.cdalloy=Herstellung Cadmiumstahl +crucible.cmb=Herstellung CMB-Stahl crucible.ferro=Herstellung - Ferrouran crucible.hematite=Herstellung - Eisen aus Hämatit crucible.hss=Herstellung - Schnellarbeitsstahl @@ -781,6 +782,7 @@ hbmmat.uranium=Uran hbmmat.uranium233=Uran-233 hbmmat.uranium235=Uran-235 hbmmat.uranium238=Uran-238 +hbmmat.watzmud=Giftiger Schlamm hbmmat.whitephosphorus=Weißer Phosphor hbmmat.workersalloy=Desh hbmmat.wroughtiron=Schmiedeeisen @@ -2014,6 +2016,7 @@ item.ingot_magnetized_tungsten.name=Magnetisierter Wolframbarren item.ingot_meteorite.name=Meteoritenbarren item.ingot_meteorite_forged.name=Geschmiedeter Meteoritenbarren item.ingot_mox_fuel.name=MOX-Kernbrennstoffbarren +item.ingot_mud.name=Fester Schlammziegel item.ingot_neptunium.name=Neptuniumbarren item.ingot_neptunium_fuel.name=Neptuniumkernbrennstoffbarren item.ingot_niobium.name=Niobbarren @@ -4277,6 +4280,7 @@ tile.waste_mycelium.name=Leuchtende Myzel tile.waste_planks.name=Verkohlte Holzbretter tile.waste_trinitite.name=Trinititerz tile.waste_trinitite_red.name=Rotes Trinititerz +tile.watz.name=Watzkraftwerk tile.watz_conductor.name=Watz-Stromanschluss tile.watz_control.name=Verstärkte Steuerstäbe tile.watz_cooler.name=Watz-Superkühler @@ -4285,6 +4289,7 @@ tile.watz_element.name=Watzreaktionskammer tile.watz_end.name=Watz-Stabilitätselement tile.watz_end_bolted.name=Watz-Stabilitätselement (Genietet) tile.watz_hatch.name=Watzreaktorzugriffsluke +tile.watz_pump.name=Watz-Druckpumpe tile.yellow_barrel.name=Radioaktives Fass tile.zirnox_destroyed.name=Zerstörter ZINOX diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 1585d0491..97050a4fb 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -709,6 +709,7 @@ container.zirnox=ZIRNOX Nuclear Reactor crucible.aa=Advanced Alloy Production crucible.cdalloy=Cadmium Steel Production +crucible.cmb=CMB Steel Production crucible.ferro=Ferrouranium Production crucible.hematite=Iron Production from Hematite crucible.hss=High-Speed Steel Production @@ -1358,6 +1359,7 @@ hbmmat.uranium=Uranium hbmmat.uranium233=Uranium-233 hbmmat.uranium235=Uranium-235 hbmmat.uranium238=Uranium-238 +hbmmat.watzmud=Poisonous Mud hbmmat.whitephosphorus=White Phosphorus hbmmat.workersalloy=Desh hbmmat.wroughtiron=Wroght Iron @@ -2663,6 +2665,7 @@ item.ingot_magnetized_tungsten.name=Magnetized Tungsten Ingot item.ingot_meteorite.name=Meteorite Ingot item.ingot_meteorite_forged.name=Forged Meteorite Ingot item.ingot_mox_fuel.name=Ingot of MOX Fuel +item.ingot_mud.name=Solid Mud Brick item.ingot_neptunium.name=Neptunium Ingot item.ingot_neptunium.desc=That one's my favourite! item.ingot_neptunium.desc.P11=Woo, scary! @@ -5095,6 +5098,7 @@ tile.waste_mycelium.name=Glowing Mycelium tile.waste_planks.name=Charred Wooden Planks tile.waste_trinitite.name=Trinitite Ore tile.waste_trinitite_red.name=Red Trinitite Ore +tile.watz.name=Watz Powerplant tile.watz_conductor.name=Watz Electricity Port tile.watz_control.name=Reinforced Control Rods tile.watz_cooler.name=Watz Reactor Supercooler @@ -5103,6 +5107,7 @@ tile.watz_element.name=Watz Reaction Chamber tile.watz_end.name=Watz Reactor Stability Element tile.watz_end_bolted.name=Watz Reactor Stability Element (Riveted) tile.watz_hatch.name=Watz Reactor Access Hatch +tile.watz_pump.name=Watz Pressure Pump tile.yellow_barrel.name=Radioactive Barrel tile.zirnox_destroyed.name=Destroyed ZINROX diff --git a/src/main/resources/assets/hbm/textures/items/ingot_mud.png b/src/main/resources/assets/hbm/textures/items/ingot_mud.png new file mode 100644 index 0000000000000000000000000000000000000000..e18313181b6850347c4d68ca2df77464d73e03fa GIT binary patch literal 537 zcmV+!0_OdRP)A#k{c~AO?!t89P>&>SO)0|CeI8~9_a-Q zI??FFknSjWzdx7Qoq7P4RGd0DNco75lmZ0Q-fj@LVvbJqf!2(j9zbocz~@Y22cB=P z-M&O)v5Isg$gD~2T?SUB`q60$8jw()I7|72V(IxaxQ7ve=bQ1Ny-d$srm=7*mq^P3 z0T>vnOoLW{qOn-z?#%`xeGc=VHnS_}NK>7?&V{Qp)L-5J;NZ!Npc71*u>9&4PwqEq zw<1(*C>CsN&jLUMo^QrVE(PDgExDY(G6%w?{$iG=4?eK95kh283beKv9qoZQd(6l6 zRwnRefdl;(POn2{YJmAiP1@}U9j541`~ZuXM6+Crs6|@YG5N4njLpN>Yx!5NsxaS!{LpD~=x`Swn_pSk)@-VsKSDp}mtkig){}5o b=- Date: Sun, 23 Apr 2023 23:08:15 +0300 Subject: [PATCH 5/6] Updated ru_RU.lang --- src/main/resources/assets/hbm/lang/ru_RU.lang | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index 46a1df9df..eace51f10 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -1261,6 +1261,7 @@ hbmmat.wroughtiron=Кованое железо hbmmat.desh=Деш hbmmat.cdalloy=Кадмиевая сталь hbmmat.cadmium=Кадмий +hbmmat.watzmud=Токсичные отходы crucible.aa=Производство продвинутого сплава crucible.ferro=Производство ферроуранового сплава @@ -1274,6 +1275,7 @@ crucible.steelPig=Переплавка чугуна в сталь crucible.steelWrought=Переплавка кованого железа в сталь crucible.tcalloy=Производство технециевой стали crucible.cdalloy=Производство кадмиевой стали +crucible.cmb=Производство стали Альянса matshape.block=Блок %s matshape.blocks=Блоки %s @@ -1716,6 +1718,7 @@ tile.struct_launcher_core_large.name=Ядро большой пусковой п tile.struct_soyuz_core.name=Ядро стартовой площадки Союза tile.struct_plasma_core.name=Ядро нагревателя плазмы tile.struct_iter_core.name=Ядро термоядерного реактора +tile.struct_watz_core.name=Ядро Ватцз-реактора tile.machine_difurnace_off.name=Доменная печь tile.machine_difurnace_on.name=Доменная печь @@ -2094,6 +2097,8 @@ tile.machine_vacuum_distill.name=Вакуумный нефтеперерабат tile.machine_catalytic_reformer.name=Каталитический реформер container.catalyticReformer=Каталитический реформер tile.fan.name=Вентилятор +tile.watz.name=Реактор Ватцз +tile.watz_pump.name=Нагнетающая помпа Ватцза container.hadron=Ускоритель частиц tile.hadron_access.name=Терминал доступа ускорителя частиц @@ -2227,6 +2232,7 @@ tile.watz_element.name=Камера реакции Ватцза tile.watz_control.name=Упрочнённые регулирующие стержни tile.watz_cooler.name=Суперохладитель реактора Ватцза tile.watz_end.name=Стабилизатор реактора Ватцза +tile.watz_end_bolted.name=Стабилизатор реактора Ватцза (Заклепанный) tile.watz_hatch.name=Люк доступа к реактору Ватцза tile.watz_conductor.name=Порт электричества Ватцза tile.watz_core.name=Контроллер реактора Ватцза @@ -2384,6 +2390,7 @@ item.coil_gold_torus.name=Золотая кольцевая катушка item.lithium.name=Куб лития item.ingot_phosphorus.name=Брусок белого фосфора item.ingot_magnetized_tungsten.name=Намагниченный слиток вольфрама +item.ingot_mud.name=Кирпич из твёрдых отходов item.ingot_combine_steel.name=Слиток стали Альянса item.ingot_combine_steel.desc=*вставьте референс на Гражданскую Оборону* item.ingot_combine_steel.desc.11="Я имею в виду, это глагол для громкого крика.$Инопланетяне - это не глаголы. Это существительные!"$"На самом деле, я думаю, что это также название $какого-то сельскохозяйственного оборудования, такого как $молотилка за доллар или что-то в этом роде."$"Это еще хуже. Теперь у нас есть слово,$которое может означать "смешивать вещи вместе",$часть сельскохозяйственного оборудования, и давайте посмотрим...$а да, это также может означать "самая продвинутая $форма жизни в известной вселенной".."$"И?"$"'И?' Да ладно, чувак, они же ИНОПЛАНЕТЯНЕ!" @@ -4048,6 +4055,7 @@ item.gun_darter.name=Дротиковый пистолет item.gun_mymy.name=Ньетес item.gun_ar15.name="Джош" item.gun_glass_cannon.name=Стеклянная пушка +item.boltgun.name=Пневматический заклепочник item.gun_revolver_iron_ammo.name=Пуля item.gun_revolver_ammo.name=Свинцовая пуля @@ -4394,6 +4402,7 @@ entity.hbm.entity_schrabnel.name=Шрапнель entity.entity_fucc_a_ducc.name=Утка entity.entity_mob_nuclear_creeper.name=Ядерный крипер entity.entity_mob_tainted_creeper.name=Заражённый порчей крипер +entity.entity_mob_phosgene_creeper.name=Фосгеновый крипер entity.entity_mob_mask_man.name=Маскмен entity.entity_mob_hunter_chopper.name=Вертолёт-охотник entity.entity_cyber_crab.name=Киберкраб From b276b0167f76c7f5a79214597ce53ad4bfb4f1f8 Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 24 Apr 2023 16:11:57 +0200 Subject: [PATCH 6/6] coker --- src/main/java/com/hbm/blocks/ModBlocks.java | 13 ++-- .../com/hbm/blocks/machine/MachineCoker.java | 39 ++++++++++ .../java/com/hbm/crafting/RodRecipes.java | 3 + .../ContainerMachineCatalyticReformer.java | 6 -- .../container/ContainerMachineCoker.java | 73 ++++++++++++++++++ .../hbm/inventory/gui/GUIMachineCoker.java | 52 +++++++++++++ .../com/hbm/items/machine/ItemWatzPellet.java | 2 +- src/main/java/com/hbm/main/MainRegistry.java | 3 + .../machine/oil/TileEntityMachineCoker.java | 64 +++++++++++++++ .../hbm/textures/gui/processing/gui_coker.png | Bin 0 -> 2018 bytes 10 files changed, 243 insertions(+), 12 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/machine/MachineCoker.java create mode 100644 src/main/java/com/hbm/inventory/container/ContainerMachineCoker.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUIMachineCoker.java create mode 100644 src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java create mode 100644 src/main/resources/assets/hbm/textures/gui/processing/gui_coker.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 4e7c82139..3b4ee27cf 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -928,6 +928,7 @@ public class ModBlocks { public static Block fraction_spacer; public static Block machine_catalytic_cracker; public static Block machine_catalytic_reformer; + public static Block machine_coker; public static Block machine_boiler_off; public static Block machine_boiler_on; @@ -2139,6 +2140,7 @@ public class ModBlocks { fraction_spacer = new FractionSpacer(Material.iron).setBlockName("fraction_spacer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_catalytic_cracker = new MachineCatalyticCracker(Material.iron).setBlockName("machine_catalytic_cracker").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_catalytic_reformer = new MachineCatalyticReformer(Material.iron).setBlockName("machine_catalytic_reformer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_coker = new MachineCoker(Material.iron).setBlockName("machine_coker").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_autosaw = new MachineAutosaw().setBlockName("machine_autosaw").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_drill = new MachineMiningDrill(Material.iron).setBlockName("machine_drill").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_drill"); machine_excavator = new MachineExcavator().setBlockName("machine_excavator").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); @@ -3186,12 +3188,13 @@ public class ModBlocks { register(machine_flare); register(machine_refinery); register(machine_vacuum_distill); - GameRegistry.registerBlock(machine_fraction_tower, machine_fraction_tower.getUnlocalizedName()); - GameRegistry.registerBlock(fraction_spacer, fraction_spacer.getUnlocalizedName()); - GameRegistry.registerBlock(machine_catalytic_cracker, machine_catalytic_cracker.getUnlocalizedName()); + register(machine_fraction_tower); + register(fraction_spacer); + register(machine_catalytic_cracker); register(machine_catalytic_reformer); - GameRegistry.registerBlock(machine_drill, machine_drill.getUnlocalizedName()); - GameRegistry.registerBlock(machine_autosaw, machine_autosaw.getUnlocalizedName()); + register(machine_coker); + register(machine_drill); + register(machine_autosaw); register(machine_excavator); register(machine_mining_laser); register(barricade); diff --git a/src/main/java/com/hbm/blocks/machine/MachineCoker.java b/src/main/java/com/hbm/blocks/machine/MachineCoker.java new file mode 100644 index 000000000..b944783ba --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineCoker.java @@ -0,0 +1,39 @@ +package com.hbm.blocks.machine; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.tileentity.machine.oil.TileEntityMachineCoker; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class MachineCoker extends BlockDummyable { + + public MachineCoker(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + + if(meta >= 12) return new TileEntityMachineCoker(); + + return null; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + return standardOpenBehavior(world, x, y, z, player, side); + } + + @Override + public int[] getDimensions() { + return new int[] {4, 0, 2, 2, 2, 2}; + } + + @Override + public int getOffset() { + return 2; + } +} diff --git a/src/main/java/com/hbm/crafting/RodRecipes.java b/src/main/java/com/hbm/crafting/RodRecipes.java index 77e6a2aa5..06f29fb44 100644 --- a/src/main/java/com/hbm/crafting/RodRecipes.java +++ b/src/main/java/com/hbm/crafting/RodRecipes.java @@ -136,6 +136,9 @@ public class RodRecipes { addPellet(PB, EnumWatzType.LEAD); addPellet(B, EnumWatzType.BORON); addPellet(U238, EnumWatzType.DU); + } + + public static void registerInit() { /* GT6 */ if(OreDictionary.doesOreNameExist("ingotNaquadah-Enriched")) addPellet(new DictFrame("Naquadah-Enriched"), EnumWatzType.NQD); if(OreDictionary.doesOreNameExist("ingotNaquadria")) addPellet(new DictFrame("Naquadria"), EnumWatzType.NQR); diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineCatalyticReformer.java b/src/main/java/com/hbm/inventory/container/ContainerMachineCatalyticReformer.java index a746904c8..41b30d98e 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineCatalyticReformer.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineCatalyticReformer.java @@ -9,7 +9,6 @@ import api.hbm.energy.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; -import net.minecraft.inventory.ICrafting; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; @@ -55,11 +54,6 @@ public class ContainerMachineCatalyticReformer extends Container { } } - @Override - public void addCraftingToCrafters(ICrafting crafting) { - super.addCraftingToCrafters(crafting); - } - @Override public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { ItemStack var3 = null; diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineCoker.java b/src/main/java/com/hbm/inventory/container/ContainerMachineCoker.java new file mode 100644 index 000000000..61ea7768e --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineCoker.java @@ -0,0 +1,73 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotCraftingOutput; +import com.hbm.items.machine.IItemFluidIdentifier; +import com.hbm.tileentity.machine.oil.TileEntityMachineCoker; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerMachineCoker extends Container { + + private TileEntityMachineCoker coker; + + public ContainerMachineCoker(InventoryPlayer invPlayer, TileEntityMachineCoker tedf) { + + coker = tedf; + + this.addSlotToContainer(new Slot(tedf, 0, 35, 72)); + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 1, 97, 27)); + + 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, 122 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 180)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(par2); + + if(var4 != null && var4.getHasStack()) { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if(par2 <= 1) { + if(!this.mergeItemStack(var5, 2, this.inventorySlots.size(), true)) { + return null; + } + } else { + + if(var3.getItem() instanceof IItemFluidIdentifier) { + if(!this.mergeItemStack(var5, 0, 1, false)) { + return null; + } + } else { + return null; + } + } + + if(var5.stackSize == 0) { + var4.putStack((ItemStack) null); + } else { + var4.onSlotChanged(); + } + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return coker.isUseableByPlayer(player); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineCoker.java b/src/main/java/com/hbm/inventory/gui/GUIMachineCoker.java new file mode 100644 index 000000000..a05678ed7 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineCoker.java @@ -0,0 +1,52 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerMachineCoker; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.oil.TileEntityMachineCoker; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIMachineCoker extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_coker.png"); + private TileEntityMachineCoker refinery; + + public GUIMachineCoker(InventoryPlayer invPlayer, TileEntityMachineCoker tedf) { + super(new ContainerMachineCoker(invPlayer, tedf)); + refinery = tedf; + + this.xSize = 176; + this.ySize = 204; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + refinery.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 35, guiTop + 18, 16, 52); + refinery.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 125, guiTop + 18, 16, 52); + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.refinery.hasCustomInventoryName() ? this.refinery.getInventoryName() : I18n.format(this.refinery.getInventoryName()); + + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0xC7C1A3); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + refinery.tanks[0].renderTank(guiLeft + 35, guiTop + 70, this.zLevel, 16, 52); + refinery.tanks[1].renderTank(guiLeft + 125, guiTop + 70, this.zLevel, 16, 52); + } +} diff --git a/src/main/java/com/hbm/items/machine/ItemWatzPellet.java b/src/main/java/com/hbm/items/machine/ItemWatzPellet.java index c8e31a111..be5e0ad7f 100644 --- a/src/main/java/com/hbm/items/machine/ItemWatzPellet.java +++ b/src/main/java/com/hbm/items/machine/ItemWatzPellet.java @@ -135,7 +135,7 @@ public class ItemWatzPellet extends ItemEnumMulti { if(num.passive > 0){ list.add(color + "Base fission rate: " + reset + num.passive); - list.add(EnumChatFormatting.RED + "Self-ingiting!"); + list.add(EnumChatFormatting.RED + "Self-igniting!"); } if(num.heatEmission > 0) list.add(color + "Heat per flux: " + reset + num.heatEmission + " TU"); if(num.burnFunc != null) { diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index e9908af75..6e1e381e5 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -49,6 +49,7 @@ import com.hbm.blocks.generic.BlockMotherOfAllOres; import com.hbm.blocks.generic.BlockToolConversion; import com.hbm.commands.CommandReloadRecipes; import com.hbm.config.*; +import com.hbm.crafting.RodRecipes; import com.hbm.creativetabs.*; import com.hbm.entity.EntityMappings; import com.hbm.entity.grenade.*; @@ -637,6 +638,8 @@ public class MainRegistry { @EventHandler public static void load(FMLInitializationEvent event) { + + RodRecipes.registerInit(); achSacrifice = new Achievement("achievement.sacrifice", "sacrifice", -3, 1, ModItems.burnt_bark, null).initIndependentStat().setSpecial().registerStat(); achImpossible = new Achievement("achievement.impossible", "impossible", 18, 10, ModItems.nothing, null).initIndependentStat().setSpecial().registerStat(); diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java new file mode 100644 index 000000000..00d05c2ff --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java @@ -0,0 +1,64 @@ +package com.hbm.tileentity.machine.oil; + +import com.hbm.inventory.container.ContainerMachineCoker; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.gui.GUIMachineCoker; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.TileEntityMachineBase; + +import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.world.World; + +public class TileEntityMachineCoker extends TileEntityMachineBase implements IFluidStandardTransceiver, IGUIProvider { + + public FluidTank[] tanks; + + public TileEntityMachineCoker() { + super(1); + tanks = new FluidTank[2]; + tanks[0] = new FluidTank(Fluids.HEAVYOIL, 16_000); + tanks[1] = new FluidTank(Fluids.GAS, 8_000); + } + + @Override + public String getName() { + return "container.machineCoker"; + } + + @Override + public void updateEntity() { + + } + + @Override + public FluidTank[] getAllTanks() { + return tanks; + } + + @Override + public FluidTank[] getSendingTanks() { + return new FluidTank[] { tanks[1] }; + } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] { tanks[0] }; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerMachineCoker(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIMachineCoker(player.inventory, this); + } +} diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_coker.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_coker.png new file mode 100644 index 0000000000000000000000000000000000000000..221c215fb74287c0f3ad3ca88a4afb2bb8645a66 GIT binary patch literal 2018 zcmb7FX;4#F7`<5v5s{=uKokg|LkhG&Lj<@!gv@mefSGl&oIZ4^| z%kK5<_tQ%pj|Jy00_HDBu+w6h+W04m(?KzLrCh~Q3~ZpXTFjbhV8RR8Zd~(WA=++{bHbEcGME=!YHAP^!7IsjcT~as)Jq07dq7SoyW>eG`umlpTAca( z#X7SLrc-)iqYm>CLpYVKn!TlLft~cKHHGLx$>mFD8=U4Cth@Z{&-s0Hpgk%n$sOG8j4W>>w`nnl=@mMXUC zob``binaujkD^YcjHBzuS|%VdtJCiIb&%@A0%5U}d+kQ)felZOcRl=uVlVZcz^cCD!nLk;LHv=L#n@41a%oU89GD{ELi2pZth$Z0YtH(ovY@1Fn*PcRLh zQZdH@4bv}kR;A2C_LAB^9}r<~=ZS0Xx>INqvGJ6#DjM}@p9}82I?ZhR&H9@u+9x~;>&OLEX}sfvwhVecolOb zE|f~8<{V*F@ROD%`)?0jA5bad1S4@t_tD(OMoS`**g@#-8G2bDO^Jd1)%X6x5?_aO zmJkQ63rD0<=`ilF;gEpiVR5v+KW4AROxjLvo@+j$K48(NTu0k# zl%6A8b|k^O_y+$p+tgj`_RR1voS5w+BO{?U$c|Xxm@9@;yW@0i iOK+oB+vu&H=}LWs>A9+*wLSjoJZ}%bJvHu>)4u{xj8A$1 literal 0 HcmV?d00001