From e11087bee6581a266d6f583a6b32ab0257e66122 Mon Sep 17 00:00:00 2001 From: 245tt Date: Mon, 22 Jan 2024 00:01:27 +0100 Subject: [PATCH 1/9] the --- .../java/com/hbm/inventory/gui/GUIAnvil.java | 44 ++++++++++++++++--- .../gui/GUIScreenTemplateFolder.java | 1 + 2 files changed, 38 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/hbm/inventory/gui/GUIAnvil.java b/src/main/java/com/hbm/inventory/gui/GUIAnvil.java index 6f8ef4a10..024905dd8 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIAnvil.java +++ b/src/main/java/com/hbm/inventory/gui/GUIAnvil.java @@ -44,6 +44,7 @@ public class GUIAnvil extends GuiContainer { int size; int selection; private GuiTextField search; + private InventoryPlayer playerInventory; public GUIAnvil(InventoryPlayer player, int tier) { super(new ContainerAnvil(player, tier)); @@ -51,7 +52,8 @@ public class GUIAnvil extends GuiContainer { this.tier = tier; this.xSize = 176; this.ySize = 222; - + + this.playerInventory = player; for(AnvilConstructionRecipe recipe : AnvilRecipes.getConstruction()) { if(recipe.isTierValid(this.tier)) this.originList.add(recipe); @@ -243,7 +245,7 @@ public class GUIAnvil extends GuiContainer { if(this.selection >= 0) { AnvilConstructionRecipe recipe = recipes.get(this.selection); - List list = recipeToList(recipe); + List list = recipeToList(recipe,playerInventory); int longest = 0; for(String s : list) { @@ -274,7 +276,7 @@ public class GUIAnvil extends GuiContainer { * @param recipe * @return */ - public List recipeToList(AnvilConstructionRecipe recipe) { + public List recipeToList(AnvilConstructionRecipe recipe,InventoryPlayer inventory) { List list = new ArrayList(); @@ -283,16 +285,44 @@ public class GUIAnvil extends GuiContainer { for(AStack stack : recipe.input) { if(stack instanceof ComparableStack) { ItemStack input = ((ComparableStack) stack).toStack(); - list.add(">" + input.stackSize + "x " + input.getDisplayName()); - + boolean hasItem = false; + for (int i = 0; i < inventory.mainInventory.length; i++) { + ItemStack stackItem = inventory.mainInventory[i]; + if(stackItem == null) + { + continue; + } + if (stackItem.getItem() == input.getItem() && stackItem.stackSize >= stack.stacksize) { + hasItem = true; + } + } + if(hasItem) { + list.add(">" + input.stackSize + "x " + input.getDisplayName()); + }else { + list.add(EnumChatFormatting.RED + ">" + input.stackSize + "x " + input.getDisplayName()); + } } else if(stack instanceof OreDictStack) { OreDictStack input = (OreDictStack) stack; ArrayList ores = OreDictionary.getOres(input.name); if(ores.size() > 0) { ItemStack inStack = ores.get((int) (Math.abs(System.currentTimeMillis() / 1000) % ores.size())); - list.add(">" + input.stacksize + "x " + inStack.getDisplayName()); - + boolean hasItem = false; + for (int i = 0; i < inventory.mainInventory.length; i++) { + ItemStack stackItem = inventory.mainInventory[i]; + if(stackItem == null) + { + continue; + } + if (stackItem.getItem() == inStack.getItem() && stackItem.stackSize >= stack.stacksize) { + hasItem = true; + } + } + if (hasItem) { + list.add(">" + input.stacksize + "x " + inStack.getDisplayName()); + } else { + list.add(EnumChatFormatting.RED + ">" + input.stacksize + "x " + inStack.getDisplayName()); + } } else { list.add("I AM ERROR"); } diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java b/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java index a563eb732..06e2d2e70 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java @@ -186,6 +186,7 @@ public class GUIScreenTemplateFolder extends GuiScreen { this.search.setDisabledTextColour(0xffffff); this.search.setEnableBackgroundDrawing(false); this.search.setMaxStringLength(100); + this.search.setFocused(true); } @Override From 3d345de4d53fd4d61c6331144dd33d090371b75b Mon Sep 17 00:00:00 2001 From: 245tt Date: Mon, 22 Jan 2024 10:08:41 +0100 Subject: [PATCH 2/9] the 2 --- src/main/java/com/hbm/inventory/gui/GUIAnvil.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/hbm/inventory/gui/GUIAnvil.java b/src/main/java/com/hbm/inventory/gui/GUIAnvil.java index 024905dd8..253dad133 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIAnvil.java +++ b/src/main/java/com/hbm/inventory/gui/GUIAnvil.java @@ -286,17 +286,19 @@ public class GUIAnvil extends GuiContainer { if(stack instanceof ComparableStack) { ItemStack input = ((ComparableStack) stack).toStack(); boolean hasItem = false; + int amount =0; for (int i = 0; i < inventory.mainInventory.length; i++) { ItemStack stackItem = inventory.mainInventory[i]; if(stackItem == null) { continue; } - if (stackItem.getItem() == input.getItem() && stackItem.stackSize >= stack.stacksize) { + if (stackItem.getItem() == input.getItem() && input.getItemDamage() == stackItem.getItemDamage()) { hasItem = true; + amount +=stackItem.stackSize; } } - if(hasItem) { + if(hasItem && amount >= stack.stacksize) { list.add(">" + input.stackSize + "x " + input.getDisplayName()); }else { list.add(EnumChatFormatting.RED + ">" + input.stackSize + "x " + input.getDisplayName()); @@ -308,17 +310,19 @@ public class GUIAnvil extends GuiContainer { if(ores.size() > 0) { ItemStack inStack = ores.get((int) (Math.abs(System.currentTimeMillis() / 1000) % ores.size())); boolean hasItem = false; + int amount =0; for (int i = 0; i < inventory.mainInventory.length; i++) { ItemStack stackItem = inventory.mainInventory[i]; if(stackItem == null) { continue; } - if (stackItem.getItem() == inStack.getItem() && stackItem.stackSize >= stack.stacksize) { + if (stackItem.getItem() == inStack.getItem() && inStack.getItemDamage() == stackItem.getItemDamage()) { hasItem = true; + amount += stackItem.stackSize; } } - if (hasItem) { + if (hasItem && amount >= stack.stacksize) { list.add(">" + input.stacksize + "x " + inStack.getDisplayName()); } else { list.add(EnumChatFormatting.RED + ">" + input.stacksize + "x " + inStack.getDisplayName()); From 94a1c1964034fca424f1c646f199bb6a806b39e3 Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 24 Jan 2024 14:48:18 +0100 Subject: [PATCH 3/9] i fell on a vietcong punji stick and now i am paraplegic --- changelog | 22 +++ gradle.properties | 3 +- src/main/java/com/hbm/blocks/ModBlocks.java | 2 - .../hbm/blocks/generic/BlockDeepCobble.java | 43 ----- .../java/com/hbm/blocks/generic/BlockOre.java | 19 +- .../inventory/container/ContainerBook.java | 167 ++++++++---------- .../container/ContainerLemegeton.java | 96 ++++++++++ .../java/com/hbm/inventory/gui/GUIAnvil.java | 44 +++-- .../java/com/hbm/inventory/gui/GUIBook.java | 3 +- .../com/hbm/inventory/gui/GUILemegeton.java | 40 +++++ .../inventory/recipes/AssemblerRecipes.java | 4 +- .../inventory/recipes/LemegetonRecipes.java | 78 ++++++++ .../inventory/recipes/ShredderRecipes.java | 3 + .../inventory/recipes/anvil/AnvilRecipes.java | 15 ++ src/main/java/com/hbm/items/ItemEnums.java | 4 + src/main/java/com/hbm/items/ModItems.java | 6 + .../java/com/hbm/items/special/ItemBook.java | 33 ---- .../com/hbm/items/tool/ItemBookLemegeton.java | 35 ++++ src/main/java/com/hbm/main/MainRegistry.java | 1 + .../java/com/hbm/world/feature/DeepLayer.java | 79 --------- src/main/resources/assets/hbm/lang/de_DE.lang | 2 + src/main/resources/assets/hbm/lang/en_US.lang | 2 + .../textures/gui/processing/gui_lemegeton.png | Bin 0 -> 3013 bytes .../hbm/textures/items/book_lemegeton.png | Bin 0 -> 982 bytes .../assets/hbm/textures/items/chunk_base.png | Bin 0 -> 309 bytes .../hbm/textures/items/chunk_ore.rare.png | Bin 0 -> 452 bytes 26 files changed, 410 insertions(+), 291 deletions(-) delete mode 100644 src/main/java/com/hbm/blocks/generic/BlockDeepCobble.java create mode 100644 src/main/java/com/hbm/inventory/container/ContainerLemegeton.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUILemegeton.java create mode 100644 src/main/java/com/hbm/inventory/recipes/LemegetonRecipes.java create mode 100644 src/main/java/com/hbm/items/tool/ItemBookLemegeton.java delete mode 100644 src/main/java/com/hbm/world/feature/DeepLayer.java create mode 100644 src/main/resources/assets/hbm/textures/gui/processing/gui_lemegeton.png create mode 100644 src/main/resources/assets/hbm/textures/items/book_lemegeton.png create mode 100644 src/main/resources/assets/hbm/textures/items/chunk_base.png create mode 100644 src/main/resources/assets/hbm/textures/items/chunk_ore.rare.png diff --git a/changelog b/changelog index f406cefee..126875cb3 100644 --- a/changelog +++ b/changelog @@ -4,7 +4,29 @@ * Creates 16 when crafted, however it is not returned when the muffled machine is broken * Should work with pretty much all machines that use looped sounds, as well as a few other noisy ones (compressors, diesel generators, presses) * Simply right-click to install, doesn't need to be inserted into an upgrade slot, in fact it works on a few machines that have no GUI at all +* Lemegeton + * A book that can do material upgrading, like turning steel into HSS, HSS into Tc-steel, lead into gold, gold into bismuth, bismuth into osmiridium, etc. + * Basically allows a material to be upgraded to the next gating material in progression + * Obviously unobtainable in survival mode + * I don't know how this would ever be useful but I was stuck in a phonecall at work for two consecutive hours and didn't have anything else to do + * They should invent handsets that don't hurt when you hold them onto your head for too long + * Has no NEI handler because the call ended before I got to that + +## Changed +* Large turbines, levis and geothermal heat exchangers now have their own sounds when operating +* Anvils will now list ingredients in red if those aren't present in the player's inventory +* Derricks now only need one set of steel pipes instead of 3. They can also be recycled by shredding, returning 32 steel +* Pumpjacks now need a single desh motor instead of two regular ones +* Rare earth ore, instead of detonating into a million fragments that are annoying to process, clog inventories and just cause everyone to not mine that ore in earlygame, will now drop a chunk of rare earth ore + * Rare earth chunks can be shredded directly into one unit of desh blend + * For efficiencymaxxers, silk-touching rare earth still works as expected, yielding two units when shredded + * The luck enchantment should work as expected, dropping multiple chunks. Yay! + * To get things that can be useful in small amounts in earlygame like boron and cobalt (boron for Atlas and cobalt for tools), the rare earth chunk can be hammered down into fragments on a steel anvil + * Cerium and lanthanium, due to being useless, only have a 10% chance of producing a framgent + * Boron and cobalt each produce a guaranteed fragment, as well as an additional one with a 50% chance + * Neodymium and niobium both yield a shard 50% of the time ## Fixed * Fixed basalt ores dropping their items with invalid metadata * Fixed creative infinite fluid tanks not being able to fill fluid gauges at >0PU +* Fixed an issue where repeatedly opening and closing certain doors would cause their sound loop to get stuck running forever diff --git a/gradle.properties b/gradle.properties index dfdd7bdff..211ed111d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -16,4 +16,5 @@ credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion al \ (OpenComputers integration), martemen (project settings), Pvndols (thorium fuel recipe, gas turbine),\ \ JamesH2 (blood mechanics, nitric acid, particle emitter), sdddddf80 (recipe configs, chinese localization,\ \ custom machine holograms, I18n improvements), SuperCraftAlex (tooltips) LePeep (coilgun model, BDCL QC),\ - \ 70k (textures, glyphid AI, strand caster), Maksymisio (polish localization) Ice-Arrow (research reactor tweaks) + \ 70k (textures, glyphid AI, strand caster), Maksymisio (polish localization) Ice-Arrow (research reactor tweaks),\ + \ 245tt (anvil GUI improvements), MellowArpeggiation (turbine sounds, sound fixes) diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 47a1bbff1..52282b525 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -143,7 +143,6 @@ public class ModBlocks { public static Block stalagmite; public static Block stalactite; public static Block stone_biome; - public static Block stone_deep_cobble; public static Block depth_brick; public static Block depth_tiles; @@ -1376,7 +1375,6 @@ public class ModBlocks { stalagmite = new BlockStalagmite().setBlockName("stalagmite").setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.0F); stalactite = new BlockStalagmite().setBlockName("stalactite").setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.0F); stone_biome = new BlockBiomeStone().setBlockName("stone_biome").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F); - stone_deep_cobble = new BlockDeepCobble().setBlockName("stone_deep_cobble").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(30.0F); basalt = new BlockGeneric(Material.rock).setBlockName("basalt").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt"); ore_basalt = new BlockOreBasalt().setBlockName("ore_basalt").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_basalt"); diff --git a/src/main/java/com/hbm/blocks/generic/BlockDeepCobble.java b/src/main/java/com/hbm/blocks/generic/BlockDeepCobble.java deleted file mode 100644 index 34c894bbb..000000000 --- a/src/main/java/com/hbm/blocks/generic/BlockDeepCobble.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.hbm.blocks.generic; - -import java.util.Random; - -import com.hbm.blocks.BlockEnumMulti; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.world.World; - -public class BlockDeepCobble extends BlockEnumMulti { - - public static enum EnumDeepCobbleTypes { - NORMAL, - BURNING, - STEAMING - } - - public BlockDeepCobble() { - super(Material.rock, EnumDeepCobbleTypes.class, true, true); - } - - @Override - @SideOnly(Side.CLIENT) - public void randomDisplayTick(World world, int x, int y, int z, Random rand) { - super.randomDisplayTick(world, x, y, z, rand); - - int meta = world.getBlockMetadata(x, y, z); - Block b = world.getBlock(x, y + 1, z); - - if(!b.isNormalCube()) { - if(meta == EnumDeepCobbleTypes.BURNING.ordinal()) { - world.spawnParticle("flame", x + rand.nextDouble(), y + 1.0625, z + rand.nextDouble(), 0.0, 0.0, 0.0); - } - - if(meta == EnumDeepCobbleTypes.STEAMING.ordinal()) { - world.spawnParticle("cloud", x + 0.25 + rand.nextDouble() * 0.5, y + 1.0625, z + 0.25 + rand.nextDouble() * 0.5, 0.0, 0.05, 0.0); - } - } - } -} \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/generic/BlockOre.java b/src/main/java/com/hbm/blocks/generic/BlockOre.java index 269f6b037..fef0e1b08 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockOre.java +++ b/src/main/java/com/hbm/blocks/generic/BlockOre.java @@ -5,6 +5,7 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.interfaces.Spaghetti; +import com.hbm.items.ItemEnums.EnumChunkType; import com.hbm.items.ModItems; import com.hbm.potion.HbmPotion; import cpw.mods.fml.relauncher.Side; @@ -151,20 +152,7 @@ public class BlockOre extends Block { } } if(this == ModBlocks.ore_rare || this == ModBlocks.ore_gneiss_rare) { - switch(rand.nextInt(6)) { - case 0: - return ModItems.fragment_boron; - case 1: - return ModItems.fragment_cerium; - case 2: - return ModItems.fragment_cobalt; - case 3: - return ModItems.fragment_lanthanium; - case 4: - return ModItems.fragment_neodymium; - case 5: - return ModItems.fragment_niobium; - } + return ModItems.chunk_ore; } if(this == ModBlocks.deco_aluminium) { return ModItems.ingot_aluminium; @@ -266,7 +254,8 @@ public class BlockOre extends Block { } @Override - public int damageDropped(int p_149692_1_) { + public int damageDropped(int meta) { + if(this == ModBlocks.ore_rare || this == ModBlocks.ore_gneiss_rare) return EnumChunkType.RARE.ordinal(); return this == ModBlocks.waste_planks ? 1 : 0; } diff --git a/src/main/java/com/hbm/inventory/container/ContainerBook.java b/src/main/java/com/hbm/inventory/container/ContainerBook.java index a3959b58a..9e1357dae 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerBook.java +++ b/src/main/java/com/hbm/inventory/container/ContainerBook.java @@ -14,109 +14,93 @@ import net.minecraft.inventory.SlotCrafting; import net.minecraft.item.ItemStack; public class ContainerBook extends Container { - - public InventoryCrafting craftMatrix = new InventoryCrafting(this, 2, 2); - public IInventory craftResult = new InventoryCraftResult(); - public ContainerBook(InventoryPlayer inventory) { - - this.addSlotToContainer(new SlotCrafting(inventory.player, this.craftMatrix, this.craftResult, 0, 124, 35)); + public InventoryCrafting craftMatrix = new InventoryCrafting(this, 2, 2); + public IInventory craftResult = new InventoryCraftResult(); - for (int l = 0; l < 2; ++l) { - for (int i1 = 0; i1 < 2; ++i1) { - this.addSlotToContainer(new Slot(this.craftMatrix, i1 + l * 2, 30 + i1 * 36, 17 + l * 36)); - } - } + public ContainerBook(InventoryPlayer inventory) { - for(int l = 0; l < 3; ++l) { - for (int i1 = 0; i1 < 9; ++i1) { - this.addSlotToContainer(new Slot(inventory, i1 + l * 9 + 9, 8 + i1 * 18, 84 + l * 18)); - } - } + this.addSlotToContainer(new SlotCrafting(inventory.player, this.craftMatrix, this.craftResult, 0, 124, 35)); - for(int l = 0; l < 9; ++l) { - this.addSlotToContainer(new Slot(inventory, l, 8 + l * 18, 142)); - } + for(int l = 0; l < 2; ++l) { + for(int i1 = 0; i1 < 2; ++i1) { + this.addSlotToContainer(new Slot(this.craftMatrix, i1 + l * 2, 30 + i1 * 36, 17 + l * 36)); + } + } - this.onCraftMatrixChanged(this.craftMatrix); - } - - public void onCraftMatrixChanged(IInventory inventory) { - this.craftResult.setInventorySlotContents(0, MagicRecipes.getRecipe(this.craftMatrix)); - } - - public void onContainerClosed(EntityPlayer player) { - super.onContainerClosed(player); + for(int l = 0; l < 3; ++l) { + for(int i1 = 0; i1 < 9; ++i1) { + this.addSlotToContainer(new Slot(inventory, i1 + l * 9 + 9, 8 + i1 * 18, 84 + l * 18)); + } + } - if (!player.worldObj.isRemote) { - - for (int i = 0; i < 4; ++i) { - ItemStack itemstack = this.craftMatrix.getStackInSlotOnClosing(i); + for(int l = 0; l < 9; ++l) { + this.addSlotToContainer(new Slot(inventory, l, 8 + l * 18, 142)); + } + + this.onCraftMatrixChanged(this.craftMatrix); + } + + public void onCraftMatrixChanged(IInventory inventory) { + this.craftResult.setInventorySlotContents(0, MagicRecipes.getRecipe(this.craftMatrix)); + } + + public void onContainerClosed(EntityPlayer player) { + super.onContainerClosed(player); + + if(!player.worldObj.isRemote) { + + for(int i = 0; i < 4; ++i) { + ItemStack itemstack = this.craftMatrix.getStackInSlotOnClosing(i); + + if(itemstack != null) + player.dropPlayerItemWithRandomChoice(itemstack, false); + } + } + } - if (itemstack != null) - player.dropPlayerItemWithRandomChoice(itemstack, false); - } - } - } - @Override - public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int p_82846_2_) - { - ItemStack itemstack = null; - Slot slot = (Slot)this.inventorySlots.get(p_82846_2_); + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int p_82846_2_) { + ItemStack itemstack = null; + Slot slot = (Slot) this.inventorySlots.get(p_82846_2_); - if (slot != null && slot.getHasStack()) - { - ItemStack itemstack1 = slot.getStack(); - itemstack = itemstack1.copy(); + if(slot != null && slot.getHasStack()) { + ItemStack itemstack1 = slot.getStack(); + itemstack = itemstack1.copy(); - if (p_82846_2_ == 0) - { - if (!this.mergeItemStack(itemstack1, 10 - 5, 46 - 5, true)) - { - return null; - } + if(p_82846_2_ == 0) { + if(!this.mergeItemStack(itemstack1, 10 - 5, 46 - 5, true)) { + return null; + } - slot.onSlotChange(itemstack1, itemstack); - } - else if (p_82846_2_ >= 10 - 5 && p_82846_2_ < 37 - 5) - { - if (!this.mergeItemStack(itemstack1, 37 - 5, 46 - 5, false)) - { - return null; - } - } - else if (p_82846_2_ >= 37 - 5 && p_82846_2_ < 46 - 5) - { - if (!this.mergeItemStack(itemstack1, 10 - 5, 37 - 5, false)) - { - return null; - } - } - else if (!this.mergeItemStack(itemstack1, 10 - 5, 46 - 5, false)) - { - return null; - } + slot.onSlotChange(itemstack1, itemstack); + } else if(p_82846_2_ >= 10 - 5 && p_82846_2_ < 37 - 5) { + if(!this.mergeItemStack(itemstack1, 37 - 5, 46 - 5, false)) { + return null; + } + } else if(p_82846_2_ >= 37 - 5 && p_82846_2_ < 46 - 5) { + if(!this.mergeItemStack(itemstack1, 10 - 5, 37 - 5, false)) { + return null; + } + } else if(!this.mergeItemStack(itemstack1, 10 - 5, 46 - 5, false)) { + return null; + } - if (itemstack1.stackSize == 0) - { - slot.putStack((ItemStack)null); - } - else - { - slot.onSlotChanged(); - } + if(itemstack1.stackSize == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); + } - if (itemstack1.stackSize == itemstack.stackSize) - { - return null; - } + if(itemstack1.stackSize == itemstack.stackSize) { + return null; + } - slot.onPickupFromSlot(p_82846_1_, itemstack1); - } + slot.onPickupFromSlot(p_82846_1_, itemstack1); + } - return itemstack; - } + return itemstack; + } @Override public boolean canInteractWith(EntityPlayer player) { @@ -124,8 +108,7 @@ public class ContainerBook extends Container { } @Override - public boolean func_94530_a(ItemStack stack, Slot slot) { - return slot.inventory != this.craftResult && super.func_94530_a(stack, slot); - } - + public boolean func_94530_a(ItemStack stack, Slot slot) { + return slot.inventory != this.craftResult && super.func_94530_a(stack, slot); + } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerLemegeton.java b/src/main/java/com/hbm/inventory/container/ContainerLemegeton.java new file mode 100644 index 000000000..cac140458 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerLemegeton.java @@ -0,0 +1,96 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.recipes.LemegetonRecipes; +import com.hbm.items.ModItems; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.InventoryCraftResult; +import net.minecraft.inventory.InventoryCrafting; +import net.minecraft.inventory.Slot; +import net.minecraft.inventory.SlotCrafting; +import net.minecraft.item.ItemStack; + +public class ContainerLemegeton extends Container { + + public InventoryCrafting craftMatrix = new InventoryCrafting(this, 1, 1); + public IInventory craftResult = new InventoryCraftResult(); + + public ContainerLemegeton(InventoryPlayer inventory) { + + this.addSlotToContainer(new SlotCrafting(inventory.player, this.craftMatrix, this.craftResult, 0, 107, 35)); + this.addSlotToContainer(new Slot(this.craftMatrix, 0, 49, 35)); + + for(int l = 0; l < 3; ++l) { + for(int i1 = 0; i1 < 9; ++i1) { + this.addSlotToContainer(new Slot(inventory, i1 + l * 9 + 9, 8 + i1 * 18, 84 + l * 18)); + } + } + + for(int l = 0; l < 9; ++l) { + this.addSlotToContainer(new Slot(inventory, l, 8 + l * 18, 142)); + } + + this.onCraftMatrixChanged(this.craftMatrix); + } + + public void onCraftMatrixChanged(IInventory inventory) { + this.craftResult.setInventorySlotContents(0, LemegetonRecipes.getRecipe(this.craftMatrix.getStackInSlot(0))); + } + + public void onContainerClosed(EntityPlayer player) { + super.onContainerClosed(player); + + if(!player.worldObj.isRemote) { + ItemStack itemstack = this.craftMatrix.getStackInSlotOnClosing(0); + if(itemstack != null) player.dropPlayerItemWithRandomChoice(itemstack, false); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int slotNo) { + ItemStack itemstack = null; + Slot slot = (Slot) this.inventorySlots.get(slotNo); + + if(slot != null && slot.getHasStack()) { + ItemStack itemstack1 = slot.getStack(); + itemstack = itemstack1.copy(); + + if(slotNo <= 1) { + if(!this.mergeItemStack(itemstack1, 2, this.inventorySlots.size(), true)) { + return null; + } + + slot.onSlotChange(itemstack1, itemstack); + } else if(!this.mergeItemStack(itemstack1, 1, 2, false)) { + return null; + } + + if(itemstack1.stackSize == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); + } + + if(itemstack1.stackSize == itemstack.stackSize) { + return null; + } + + slot.onPickupFromSlot(p_82846_1_, itemstack1); + } + + return itemstack; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return player.inventory.hasItem(ModItems.book_of_); + } + + @Override + public boolean func_94530_a(ItemStack stack, Slot slot) { + return slot.inventory != this.craftResult && super.func_94530_a(stack, slot); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIAnvil.java b/src/main/java/com/hbm/inventory/gui/GUIAnvil.java index 253dad133..ae7dbc1b1 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIAnvil.java +++ b/src/main/java/com/hbm/inventory/gui/GUIAnvil.java @@ -245,7 +245,7 @@ public class GUIAnvil extends GuiContainer { if(this.selection >= 0) { AnvilConstructionRecipe recipe = recipes.get(this.selection); - List list = recipeToList(recipe,playerInventory); + List list = recipeToList(recipe, playerInventory); int longest = 0; for(String s : list) { @@ -276,53 +276,51 @@ public class GUIAnvil extends GuiContainer { * @param recipe * @return */ - public List recipeToList(AnvilConstructionRecipe recipe,InventoryPlayer inventory) { + public List recipeToList(AnvilConstructionRecipe recipe, InventoryPlayer inventory) { List list = new ArrayList(); - + list.add(EnumChatFormatting.YELLOW + "Inputs:"); - + for(AStack stack : recipe.input) { - if(stack instanceof ComparableStack) { + if(stack instanceof ComparableStack) { ItemStack input = ((ComparableStack) stack).toStack(); boolean hasItem = false; - int amount =0; - for (int i = 0; i < inventory.mainInventory.length; i++) { + int amount = 0; + for(int i = 0; i < inventory.mainInventory.length; i++) { ItemStack stackItem = inventory.mainInventory[i]; - if(stackItem == null) - { + if(stackItem == null) { continue; } - if (stackItem.getItem() == input.getItem() && input.getItemDamage() == stackItem.getItemDamage()) { + if(stackItem.getItem() == input.getItem() && input.getItemDamage() == stackItem.getItemDamage()) { hasItem = true; - amount +=stackItem.stackSize; + amount += stackItem.stackSize; } } if(hasItem && amount >= stack.stacksize) { list.add(">" + input.stackSize + "x " + input.getDisplayName()); - }else { + } else { list.add(EnumChatFormatting.RED + ">" + input.stackSize + "x " + input.getDisplayName()); } } else if(stack instanceof OreDictStack) { OreDictStack input = (OreDictStack) stack; ArrayList ores = OreDictionary.getOres(input.name); - + if(ores.size() > 0) { - ItemStack inStack = ores.get((int) (Math.abs(System.currentTimeMillis() / 1000) % ores.size())); boolean hasItem = false; - int amount =0; - for (int i = 0; i < inventory.mainInventory.length; i++) { + int amount = 0; + for(int i = 0; i < inventory.mainInventory.length; i++) { ItemStack stackItem = inventory.mainInventory[i]; - if(stackItem == null) - { + if(stackItem == null) { continue; } - if (stackItem.getItem() == inStack.getItem() && inStack.getItemDamage() == stackItem.getItemDamage()) { + if(input.matchesRecipe(stackItem, true)) { hasItem = true; amount += stackItem.stackSize; } } - if (hasItem && amount >= stack.stacksize) { + ItemStack inStack = ores.get((int) (Math.abs(System.currentTimeMillis() / 1000) % ores.size())); + if(hasItem && amount >= stack.stacksize) { list.add(">" + input.stacksize + "x " + inStack.getDisplayName()); } else { list.add(EnumChatFormatting.RED + ">" + input.stacksize + "x " + inStack.getDisplayName()); @@ -335,11 +333,11 @@ public class GUIAnvil extends GuiContainer { list.add(""); list.add(EnumChatFormatting.YELLOW + "Outputs:"); - + for(AnvilOutput stack : recipe.output) { - list.add(">" + stack.stack.stackSize + "x " + stack.stack.getDisplayName() + (stack.chance != 1F ? (" (" + (stack.chance * 100) + "%)" ) : "")); + list.add(">" + stack.stack.stackSize + "x " + stack.stack.getDisplayName() + (stack.chance != 1F ? (" (" + (stack.chance * 100) + "%)") : "")); } - + return list; } diff --git a/src/main/java/com/hbm/inventory/gui/GUIBook.java b/src/main/java/com/hbm/inventory/gui/GUIBook.java index 298aba1bf..8952cef3d 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIBook.java +++ b/src/main/java/com/hbm/inventory/gui/GUIBook.java @@ -16,6 +16,8 @@ public class GUIBook extends GuiContainer { public GUIBook(InventoryPlayer player) { super(new ContainerBook(player)); + this.xSize = 176; + this.ySize = 166; } protected void drawGuiContainerForegroundLayer(int mX, int mY) { @@ -25,7 +27,6 @@ public class GUIBook extends GuiContainer { } protected void drawGuiContainerBackgroundLayer(float inter, int mX, int mY) { - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); this.mc.getTextureManager().bindTexture(texture); int left = (this.width - this.xSize) / 2; diff --git a/src/main/java/com/hbm/inventory/gui/GUILemegeton.java b/src/main/java/com/hbm/inventory/gui/GUILemegeton.java new file mode 100644 index 000000000..bc6ec5961 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUILemegeton.java @@ -0,0 +1,40 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerLemegeton; +import com.hbm.lib.RefStrings; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUILemegeton extends GuiContainer { + + public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_lemegeton.png"); + + public GUILemegeton(InventoryPlayer player) { + super(new ContainerLemegeton(player)); + this.xSize = 176; + this.ySize = 166; + } + + protected void drawGuiContainerForegroundLayer(int mX, int mY) { + + Minecraft.getMinecraft().standardGalacticFontRenderer.drawString("Material Upgrade Conversion", 28, 6, 4210752); + Minecraft.getMinecraft().standardGalacticFontRenderer.drawString("Standard Inventory", 8, this.ySize - 96 + 2, 4210752); + } + + protected void drawGuiContainerBackgroundLayer(float inter, int mX, int mY) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + this.mc.getTextureManager().bindTexture(texture); + int left = (this.width - this.xSize) / 2; + int top = (this.height - this.ySize) / 2; + + this.drawTexturedModalRect(left, top, 0, 0, this.xSize, this.ySize); + + if(this.inventorySlots.getSlot(0).getHasStack()) + this.drawTexturedModalRect(left + 7, top + 22, 0, 166, 162, 42); + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index f66125e0b..5d725518c 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -277,8 +277,8 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.machine_schrabidium_battery, 1), new AStack[] {new OreDictStack(DESH.ingot(), 4), new OreDictStack(NP237.dust(), 12), new OreDictStack(SA326.dust(), 12), new OreDictStack(SA326.ingot(), 2), new ComparableStack(ModItems.wire_schrabidium, 4), },800); makeRecipe(new ComparableStack(ModBlocks.machine_dineutronium_battery, 1), new AStack[] {new OreDictStack(DNT.ingot(), 24), new ComparableStack(ModItems.powder_spark_mix, 12), new ComparableStack(ModItems.battery_spark_cell_1000, 1), new OreDictStack(CMB.ingot(), 32), new ComparableStack(ModItems.coil_magnetized_tungsten, 8), },1600); makeRecipe(new ComparableStack(ModBlocks.machine_shredder, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 8), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModBlocks.steel_beam, 2), new ComparableStack(Blocks.iron_bars, 2) },200); - makeRecipe(new ComparableStack(ModBlocks.machine_well, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 20), new ComparableStack(ModBlocks.steel_beam, 8), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.pipes_steel, 3), new ComparableStack(ModItems.drill_titanium, 1), new ComparableStack(ModItems.wire_red_copper, 6), },250); - makeRecipe(new ComparableStack(ModBlocks.machine_pumpjack, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 8), new OreDictStack(STEEL.plateWelded(), 8), new ComparableStack(ModItems.pipes_steel, 4), new ComparableStack(ModItems.tank_steel, 4), new OreDictStack(STEEL.plate(), 32), new ComparableStack(ModItems.drill_titanium, 1), new ComparableStack(ModItems.motor, 2) }, 400); + makeRecipe(new ComparableStack(ModBlocks.machine_well, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 20), new ComparableStack(ModBlocks.steel_beam, 8), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.pipes_steel, 1), new ComparableStack(ModItems.drill_titanium, 1), new ComparableStack(ModItems.wire_red_copper, 6), },250); + makeRecipe(new ComparableStack(ModBlocks.machine_pumpjack, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 8), new OreDictStack(STEEL.plateWelded(), 8), new ComparableStack(ModItems.pipes_steel, 4), new ComparableStack(ModItems.tank_steel, 4), new OreDictStack(STEEL.plate(), 32), new ComparableStack(ModItems.drill_titanium, 1), new ComparableStack(ModItems.motor_desh) }, 400); makeRecipe(new ComparableStack(ModBlocks.machine_flare, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(IRON.ingot(), 12), new OreDictStack(CU.plate528(), 4), new ComparableStack(ModItems.tank_steel, 1), new ComparableStack(ModBlocks.deco_pipe_quad, 8), new ComparableStack(ModItems.hull_small_steel, 4), new ComparableStack(ModItems.thermo_element, 3), },200); makeRecipe(new ComparableStack(ModBlocks.machine_coker, 1), new AStack[] {!exp ? new OreDictStack(STEEL.plateWelded(), 3) : new OreDictStack(STEEL.heavyComp(), 2), new OreDictStack(IRON.ingot(), 16), new OreDictStack(CU.plate528(), 8), new OreDictStack(RUBBER.ingot(), 4), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModBlocks.steel_grate, 4) },200); makeRecipe(new ComparableStack(ModBlocks.machine_refinery, 1), new AStack[] {!exp ? new OreDictStack(STEEL.plateWelded(), 3) : new OreDictStack(STEEL.heavyComp(), 1), new OreDictStack(CU.plate528(), 16), new ComparableStack(ModItems.hull_big_steel, 6), new ComparableStack(ModItems.pipes_steel, 2), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.circuit_red_copper, 1) },350); diff --git a/src/main/java/com/hbm/inventory/recipes/LemegetonRecipes.java b/src/main/java/com/hbm/inventory/recipes/LemegetonRecipes.java new file mode 100644 index 000000000..bae7c2f25 --- /dev/null +++ b/src/main/java/com/hbm/inventory/recipes/LemegetonRecipes.java @@ -0,0 +1,78 @@ +package com.hbm.inventory.recipes; + +import java.util.HashMap; +import java.util.Map.Entry; + +import static com.hbm.inventory.OreDictManager.*; +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.inventory.RecipesCommon.OreDictStack; +import com.hbm.items.ModItems; + +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; + +public class LemegetonRecipes { + + public static HashMap recipes = new HashMap(); + + public static void register() { + recipes.put(new OreDictStack(IRON.ingot()), new ItemStack(ModItems.ingot_steel)); + recipes.put(new OreDictStack(STEEL.ingot()), new ItemStack(ModItems.ingot_dura_steel)); + recipes.put(new OreDictStack(DURA.ingot()), new ItemStack(ModItems.ingot_tcalloy)); + recipes.put(new OreDictStack(TCALLOY.ingot()), new ItemStack(ModItems.ingot_combine_steel)); + recipes.put(new OreDictStack(CMB.ingot()), new ItemStack(ModItems.ingot_dineutronium)); + + recipes.put(new OreDictStack(TI.ingot()), new ItemStack(ModItems.ingot_saturnite)); + recipes.put(new OreDictStack(BIGMT.ingot()), new ItemStack(ModItems.ingot_starmetal)); + + recipes.put(new OreDictStack(CU.ingot()), new ItemStack(ModItems.ingot_red_copper)); + recipes.put(new OreDictStack(MINGRADE.ingot()), new ItemStack(ModItems.ingot_advanced_alloy)); + recipes.put(new OreDictStack(ALLOY.ingot()), new ItemStack(ModItems.ingot_desh)); + + recipes.put(new OreDictStack(PB.ingot()), new ItemStack(Items.gold_ingot)); + recipes.put(new OreDictStack(GOLD.ingot()), new ItemStack(ModItems.ingot_bismuth)); + recipes.put(new OreDictStack(BI.ingot()), new ItemStack(ModItems.ingot_osmiridium)); + + recipes.put(new OreDictStack(TH232.ingot()), new ItemStack(ModItems.ingot_uranium)); + recipes.put(new OreDictStack(U.ingot()), new ItemStack(ModItems.ingot_u238)); + recipes.put(new OreDictStack(U238.ingot()), new ItemStack(ModItems.ingot_u235)); + recipes.put(new OreDictStack(U235.ingot()), new ItemStack(ModItems.ingot_plutonium)); + recipes.put(new OreDictStack(PU.ingot()), new ItemStack(ModItems.ingot_pu238)); + recipes.put(new OreDictStack(PU238.ingot()), new ItemStack(ModItems.ingot_pu239)); + recipes.put(new OreDictStack(PU239.ingot()), new ItemStack(ModItems.ingot_pu240)); + recipes.put(new OreDictStack(PU240.ingot()), new ItemStack(ModItems.ingot_pu241)); + recipes.put(new OreDictStack(PU241.ingot()), new ItemStack(ModItems.ingot_am241)); + recipes.put(new OreDictStack(AM241.ingot()), new ItemStack(ModItems.ingot_am242)); + + recipes.put(new OreDictStack(RA226.ingot()), new ItemStack(ModItems.ingot_polonium)); + recipes.put(new OreDictStack(PO210.ingot()), new ItemStack(ModItems.ingot_technetium)); + + recipes.put(new OreDictStack(POLYMER.ingot()), new ItemStack(ModItems.ingot_pc)); + recipes.put(new OreDictStack(BAKELITE.ingot()), new ItemStack(ModItems.ingot_pvc)); + recipes.put(new OreDictStack(LATEX.ingot()), new ItemStack(ModItems.ingot_rubber)); + + recipes.put(new OreDictStack(COAL.gem()), new ItemStack(ModItems.ingot_graphite)); + recipes.put(new OreDictStack(GRAPHITE.ingot()), new ItemStack(Items.diamond)); + recipes.put(new OreDictStack(DIAMOND.gem()), new ItemStack(ModItems.ingot_cft)); + + recipes.put(new OreDictStack(F.dust()), new ItemStack(ModItems.gem_sodalite)); + recipes.put(new OreDictStack(SODALITE.gem()), new ItemStack(ModItems.gem_volcanic)); + recipes.put(new OreDictStack(VOLCANIC.gem()), new ItemStack(ModItems.gem_rad)); + recipes.put(new ComparableStack(ModItems.gem_rad), new ItemStack(ModItems.gem_alexandrite)); + + recipes.put(new OreDictStack(KEY_SAND), new ItemStack(ModItems.ingot_fiberglass)); + recipes.put(new OreDictStack(FIBER.ingot()), new ItemStack(ModItems.ingot_asbestos)); + } + + public static ItemStack getRecipe(ItemStack ingredient) { + + for(Entry entry : recipes.entrySet()) { + if(entry.getKey().matchesRecipe(ingredient, true)) { + return entry.getValue().copy(); + } + } + + return null; + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java index 99e574056..88b5b9207 100644 --- a/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java @@ -16,6 +16,7 @@ import com.hbm.interfaces.Untested; import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ItemEnums.EnumChunkType; import com.hbm.items.ModItems; import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre; import com.hbm.main.MainRegistry; @@ -205,6 +206,8 @@ public class ShredderRecipes extends SerializableRecipe { ShredderRecipes.setRecipe(Items.apple, new ItemStack(Items.sugar, 1)); ShredderRecipes.setRecipe(Items.carrot, new ItemStack(Items.sugar, 1)); ShredderRecipes.setRecipe(ModItems.can_empty, new ItemStack(ModItems.powder_aluminium, 2)); + ShredderRecipes.setRecipe(ModBlocks.machine_well, new ItemStack(ModItems.powder_steel, 32)); + ShredderRecipes.setRecipe(DictFrame.fromOne(ModItems.chunk_ore, EnumChunkType.RARE), new ItemStack(ModItems.powder_desh_mix)); List logs = OreDictionary.getOres("logWood"); List planks = OreDictionary.getOres("plankWood"); diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index 86921434e..3a0c76a39 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -13,6 +13,7 @@ import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.recipes.AssemblerRecipes; import com.hbm.items.ItemAmmoEnums.*; +import com.hbm.items.ItemEnums.EnumChunkType; import com.hbm.items.ModItems; import com.hbm.items.food.ItemFlask.EnumInfusion; @@ -703,6 +704,20 @@ public class AnvilRecipes { public static void registerConstructionRecycling() { + constructionRecipes.add(new AnvilConstructionRecipe( + new ComparableStack(DictFrame.fromOne(ModItems.chunk_ore, EnumChunkType.RARE)), + new AnvilOutput[] { + new AnvilOutput(new ItemStack(ModItems.fragment_boron)), + new AnvilOutput(new ItemStack(ModItems.fragment_boron), 0.5F), + new AnvilOutput(new ItemStack(ModItems.fragment_lanthanium), 0.1F), + new AnvilOutput(new ItemStack(ModItems.fragment_cobalt)), + new AnvilOutput(new ItemStack(ModItems.fragment_cobalt), 0.5F), + new AnvilOutput(new ItemStack(ModItems.fragment_cerium), 0.1F), + new AnvilOutput(new ItemStack(ModItems.fragment_neodymium), 0.5F), + new AnvilOutput(new ItemStack(ModItems.fragment_niobium), 0.5F), + } + ).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( new ComparableStack(ModBlocks.heater_firebox), new AnvilOutput[] { diff --git a/src/main/java/com/hbm/items/ItemEnums.java b/src/main/java/com/hbm/items/ItemEnums.java index b4d48e009..afe1a97e0 100644 --- a/src/main/java/com/hbm/items/ItemEnums.java +++ b/src/main/java/com/hbm/items/ItemEnums.java @@ -50,6 +50,10 @@ public class ItemEnums { MUSTARDWILLOW } + public static enum EnumChunkType { + RARE + } + public static enum EnumAchievementType { GOFISH, ACID, diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index d2ad9d3b1..c30370ada 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -552,6 +552,7 @@ public class ModItems { public static Item fragment_boron; public static Item fragment_meteorite; public static Item fragment_coltan; + public static Item chunk_ore; public static Item biomass; public static Item biomass_compressed; @@ -2384,6 +2385,7 @@ public class ModItems { public static Item book_secret; public static Item book_of_; public static Item page_of_; + public static Item book_lemegeton; public static Item burnt_bark; public static Item smoke1; @@ -2983,6 +2985,7 @@ public class ModItems { fragment_boron = new Item().setUnlocalizedName("fragment_boron").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":fragment_boron"); fragment_meteorite = new Item().setUnlocalizedName("fragment_meteorite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":fragment_meteorite"); fragment_coltan = new Item().setUnlocalizedName("fragment_coltan").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":fragment_coltan"); + chunk_ore = new ItemEnumMulti(EnumChunkType.class, true, true).setUnlocalizedName("chunk_ore").setCreativeTab(MainRegistry.partsTab); biomass = new Item().setUnlocalizedName("biomass").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":biomass"); biomass_compressed = new Item().setUnlocalizedName("biomass_compressed").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":biomass_compressed"); @@ -5458,6 +5461,7 @@ public class ModItems { book_secret = new ItemCustomLore().setUnlocalizedName("book_secret").setCreativeTab(MainRegistry.polaroidID == 11 ? MainRegistry.consumableTab : null).setTextureName(RefStrings.MODID + ":book_secret"); book_of_ = new ItemBook().setUnlocalizedName("book_of_").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":book_of_"); page_of_ = new ItemEnumMulti(ItemEnums.EnumPages.class, true, false).setUnlocalizedName("page_of_").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":page_of_"); + book_lemegeton = new ItemBookLemegeton().setUnlocalizedName("book_lemegeton").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":book_lemegeton"); burnt_bark = new ItemCustomLore().setUnlocalizedName("burnt_bark").setCreativeTab(null).setTextureName(RefStrings.MODID + ":burnt_bark"); smoke1 = new Item().setUnlocalizedName("smoke1").setTextureName(RefStrings.MODID + ":smoke1"); @@ -5970,6 +5974,7 @@ public class ModItems { GameRegistry.registerItem(fragment_boron, fragment_boron.getUnlocalizedName()); GameRegistry.registerItem(fragment_meteorite, fragment_meteorite.getUnlocalizedName()); GameRegistry.registerItem(fragment_coltan, fragment_coltan.getUnlocalizedName()); + GameRegistry.registerItem(chunk_ore, chunk_ore.getUnlocalizedName()); //Things that look like rotten flesh but aren't GameRegistry.registerItem(biomass, biomass.getUnlocalizedName()); @@ -8055,6 +8060,7 @@ public class ModItems { GameRegistry.registerItem(book_secret, book_secret.getUnlocalizedName()); GameRegistry.registerItem(book_of_, book_of_.getUnlocalizedName()); GameRegistry.registerItem(page_of_, page_of_.getUnlocalizedName()); + GameRegistry.registerItem(book_lemegeton, book_lemegeton.getUnlocalizedName()); GameRegistry.registerItem(burnt_bark, burnt_bark.getUnlocalizedName()); //Kits diff --git a/src/main/java/com/hbm/items/special/ItemBook.java b/src/main/java/com/hbm/items/special/ItemBook.java index 5759ea383..56995b012 100644 --- a/src/main/java/com/hbm/items/special/ItemBook.java +++ b/src/main/java/com/hbm/items/special/ItemBook.java @@ -43,37 +43,4 @@ public class ItemBook extends Item implements IGUIProvider { public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIBook(player.inventory); } - - /*@Override - public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - - if(world.isRemote) - return stack; - - if(!player.isSneaking()) { - List list = world.getEntitiesWithinAABBExcludingEntity(player, AxisAlignedBB.getBoundingBox(player.posX - 10, player.posY - 2, player.posZ - 10, player.posX + 10, player.posY + 2, player.posZ + 10)); - - for(Object o : list) { - - if(o instanceof EntityLivingBase) { - EntityLivingBase entity = (EntityLivingBase)o; - - entity.addPotionEffect(new PotionEffect(HbmPotion.telekinesis.id, 20, 0)); - } - } - } else { - if(player.inventory.hasItemStack(new ItemStack(ModItems.ingot_u238m2, 1, 1)) && - player.inventory.hasItemStack(new ItemStack(ModItems.ingot_u238m2, 1, 2)) && - player.inventory.hasItemStack(new ItemStack(ModItems.ingot_u238m2, 1, 3))) { - player.inventory.clearInventory(ModItems.ingot_u238m2, 1); - player.inventory.clearInventory(ModItems.ingot_u238m2, 2); - player.inventory.clearInventory(ModItems.ingot_u238m2, 3); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ingot_u238m2)); - player.inventoryContainer.detectAndSendChanges(); - } - } - - return stack; - }*/ - } diff --git a/src/main/java/com/hbm/items/tool/ItemBookLemegeton.java b/src/main/java/com/hbm/items/tool/ItemBookLemegeton.java new file mode 100644 index 000000000..90bcdd20c --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemBookLemegeton.java @@ -0,0 +1,35 @@ +package com.hbm.items.tool; + +import com.hbm.inventory.container.ContainerLemegeton; +import com.hbm.inventory.gui.GUILemegeton; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.IGUIProvider; + +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.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public class ItemBookLemegeton extends Item implements IGUIProvider { + + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { + if(!world.isRemote) player.openGui(MainRegistry.instance, 0, world, 0, 0, 0); + return stack; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerLemegeton(player.inventory); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUILemegeton(player.inventory); + } +} diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 6ed8c16ab..0e53b69ab 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -843,6 +843,7 @@ public class MainRegistry { TileEntityNukeFurnace.registerFuels(); AssemblerRecipes.loadRecipes(); MagicRecipes.register(); + LemegetonRecipes.register(); SILEXRecipes.register(); AnvilRecipes.register(); RefineryRecipes.registerRefinery(); diff --git a/src/main/java/com/hbm/world/feature/DeepLayer.java b/src/main/java/com/hbm/world/feature/DeepLayer.java deleted file mode 100644 index 18ddb5d57..000000000 --- a/src/main/java/com/hbm/world/feature/DeepLayer.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.hbm.world.feature; - -import java.util.Random; - -import com.hbm.blocks.ModBlocks; - -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.init.Blocks; -import net.minecraft.world.World; -import net.minecraft.world.gen.NoiseGeneratorPerlin; -import net.minecraftforge.common.util.ForgeDirection; -import net.minecraftforge.event.terraingen.DecorateBiomeEvent; - -public class DeepLayer { - - NoiseGeneratorPerlin noise; - - @SubscribeEvent - public void onDecorate(DecorateBiomeEvent.Pre event) { - - World world = event.world; - if(world.provider == null || world.provider.dimensionId != 0) return; - - if(this.noise == null) { - this.noise = new NoiseGeneratorPerlin(new Random(event.world.getSeed() + 19), 4); - } - - int cX = event.chunkX; - int cZ = event.chunkZ; - - double scale = 0.01D; - int threshold = 2; - - for(int x = cX + 8; x < cX + 24; x++) { - for(int z = cZ + 8; z < cZ + 24; z++) { - - double n = noise.func_151601_a(x * scale, z * scale); - - if(n > threshold) { - int range = (int)((n - threshold) * 8); - - if(range > 24) - range = 48 - range; - - if(range < 0) - continue; - - for(int y = 1; y <= range; y++) { - - Block target = world.getBlock(x, y, z); - - if(target.isNormalCube() && target.getMaterial() == Material.rock && target.isReplaceableOreGen(world, x, y, z, Blocks.stone)) { - - boolean lava = false; - - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - Block neighbor = world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ); - if(neighbor.getMaterial() == Material.lava) { - lava = true; - break; - } - } - - if(lava || world.rand.nextInt(10) == 0) { - world.setBlock(x, y, z, ModBlocks.stone_deep_cobble, 1, 2); - } else if(world.rand.nextInt(10) == 0 && world.getBlock(x, y + 1, z).getMaterial() == Material.air) { - world.setBlock(x, y, z, ModBlocks.stone_deep_cobble, 2, 2); - } else { - world.setBlock(x, y, z, ModBlocks.stone_deep_cobble, 0, 2); - } - } - } - } - } - } - } -} diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 3a7ac08cf..a925fdc1e 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1301,6 +1301,7 @@ item.bomb_caller.name=Luftschlag Zielmarker item.bomb_waffle.name=Massenvernichtungswaffel item.guide_book.name=Handbuch item.book_of_.name=Das Buch der Güterwagons +item.book_lemegeton.name=Lemegeton item.book_secret.name=3-596-50802-9 item.bottle2_empty.name=Leere Glasflasche item.bottle2_fritz.name=Fritz-Kola @@ -1472,6 +1473,7 @@ item.chopper_head.name=Jagdschrauber Cockpit item.chopper_tail.name=Jagdschrauber Heck item.chopper_torso.name=Jagdschrauber Rumpf item.chopper_wing.name=Jagdschrauber Seitentragfläche +item.chunk_ore.rare.name=Seltenerdenerz-Brocken item.cigarette.name=FFI-Markenzigarette item.cinnebar.name=Zinnober item.circuit_aluminium.name=Einfacher Schaltkreis diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 1ca85dd75..27fa7b020 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1969,6 +1969,7 @@ item.bomb_caller.name=Airstrike Designator item.bomb_waffle.name=Waffle of Mass Destruction item.book_guide.name=Guide Book item.book_of_.name=The Book of Boxcars +item.book_lemegeton.name=Lemegeton item.book_secret.name=3-596-50802-9 item.bottle2_empty.name=Empty Bottle item.bottle2_fritz.name=Fritz Cola @@ -2169,6 +2170,7 @@ item.chopper_head.name=Hunter Chopper Cockpit item.chopper_tail.name=Hunter Chopper Tail item.chopper_torso.name=Hunter Chopper Body item.chopper_wing.name=Hunter Chopper Wing +item.chunk_ore.rare.name=Rare Earth Ore Chunk item.cigarette.name=FFI-Brand Cigarette item.cinnebar.name=Cinnabar item.circuit_aluminium.name=Basic Circuit diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_lemegeton.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_lemegeton.png new file mode 100644 index 0000000000000000000000000000000000000000..ffdd5c0ee2c36e9a5261c190ed536ed16c580255 GIT binary patch literal 3013 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 Rl9oU6+1ogst~lv=@83vdQxX6G literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/book_lemegeton.png b/src/main/resources/assets/hbm/textures/items/book_lemegeton.png new file mode 100644 index 0000000000000000000000000000000000000000..4cb0fca9af25f8c948c1fc37c82f7fc3d99ee74d GIT binary patch literal 982 zcmV;{11bE8P)n?UJuyG&5KCn|r@|N5Fp_M$^L8)m2`O zr_(6_zVEBC4&V2;_SNC$=4Q*ERkyL<@8x#)|lCHpBBg03M=fYwtx6Y|RNF0BR%GNFYfP6-L7_a2$upWP;~;%5hj@ zSFTlwxUS1$vDlwL)p#t0Vq23C>c@sY3~5)|vDeW%l@eSfQNvbx#x zJnlv#b?OkXtTlJjG%*ZgV?BC&RL;w^?M*;Onx<+zEJ7OsccT#xQG{ulY8+Pf0ZM#L zm9aAgz{bm!gCgI0WQIXNsA=Ty+gmPz0Mj%N6JZ@b38>RV0BGfyf>$<>Z?kOCH zn%IUxK%@!vqhoPjVRA^mdhn^9CLPd#>dM`xV;6|O4olwjf^8D&(F_qw&6ws zWeN<#Aj>j5&to!~aDINiF29=V_`25vpzXS(X}Z&SBY}+#mZeC{=X3ReF$@CS!jVED z*p0az*m)TVA(W7^EK^@Ou*z>ahLzy-=Mr^u>VQoP)9JMFGwN%iu?l?O=jrKbYd%R5 zRVC#(NfNbQ&R1;?B2YU2>(4(}E|(l1ze9?QON`dVhVYXUK zr&Eqx7ss}F`TT+ul3#!Oo$+|QAAu6zzkkoPU~k(tw&SSYDaDG!=a&~wzd1(=iO4cc z%c9#^slR1ebh{l|X0y~933NIgK8^puv2D`ymE|(Swk=wwg%lY8>3q&f_k{7MF|OMt zO=A(#u+}|C;GlP^Wfiu7o<&-G=|;U*SvHi*)+AMgRZ+07*qoM6N<$ Ef@sdt`Tzg` literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/chunk_base.png b/src/main/resources/assets/hbm/textures/items/chunk_base.png new file mode 100644 index 0000000000000000000000000000000000000000..d7e0ed298018be8422a24cd67e46b82a159819c4 GIT binary patch literal 309 zcmV-50m}Y~P)UBD4`1gu_8#KmvfO(z)D9bYX2r$O@d7dQ@e2{Za=DMzH`?R4Vj+ zpS4UT@~y$8ZR@;cF`G_D01k6Goi7&YOUaAx;|RgClsqfN`s!*V_73jv?dgsXluIQ5 zHn+C)z2i{3xCqT3d%duCS}g#g09tFEOeQf+69CtB0Wb|C>>s<`5Wa6VsaX~PF@T+H z78L}{&Cdf+JwNA3O3ntN?f|}RH1MRPRj-F;;R>Zfft5@KV|*ML1SC=^X3}YTo=3S_ zWp{geJ0)ABV}QDda#TE-WtUQNy5^&vSBc@ayFMUA+Q#ZN--WJoE_w00007XC literal 0 HcmV?d00001 From 24d763d75a886e8e9897a9eb85173ba53df5112a Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 24 Jan 2024 15:27:04 +0100 Subject: [PATCH 4/9] food rebalance, MRE --- changelog | 2 + .../container/ContainerLemegeton.java | 2 +- src/main/java/com/hbm/items/ModItems.java | 28 +++++----- .../java/com/hbm/items/food/ItemConserve.java | 52 +++++++++--------- .../java/com/hbm/items/food/ItemLemon.java | 9 --- .../java/com/hbm/main/CraftingManager.java | 3 +- src/main/resources/assets/hbm/lang/de_DE.lang | 2 +- src/main/resources/assets/hbm/lang/en_US.lang | 2 +- .../hbm/textures/items/definitelyfood.png | Bin 271 -> 329 bytes 9 files changed, 47 insertions(+), 53 deletions(-) diff --git a/changelog b/changelog index 126875cb3..2fdc7711a 100644 --- a/changelog +++ b/changelog @@ -25,6 +25,8 @@ * Cerium and lanthanium, due to being useless, only have a 10% chance of producing a framgent * Boron and cobalt each produce a guaranteed fragment, as well as an additional one with a 50% chance * Neodymium and niobium both yield a shard 50% of the time +* Rebalanced all the food items so their saturation values aren't ridiculously high (turns out - the number represents a *multiplier* for the hunger value and not a flat number) +* Dirt MREs are now just regular low-quality MREs made from latex packaging and some easily obtainable earlygame ingredients - wheat, rotten flesh and saplings (makes 4) ## Fixed * Fixed basalt ores dropping their items with invalid metadata diff --git a/src/main/java/com/hbm/inventory/container/ContainerLemegeton.java b/src/main/java/com/hbm/inventory/container/ContainerLemegeton.java index cac140458..ec6aeb1e4 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerLemegeton.java +++ b/src/main/java/com/hbm/inventory/container/ContainerLemegeton.java @@ -86,7 +86,7 @@ public class ContainerLemegeton extends Container { @Override public boolean canInteractWith(EntityPlayer player) { - return player.inventory.hasItem(ModItems.book_of_); + return player.inventory.hasItem(ModItems.book_lemegeton); } @Override diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index c30370ada..873b76d31 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -4333,30 +4333,30 @@ public class ModItems { glowing_stew = new ItemSoup(6).setUnlocalizedName("glowing_stew").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":glowing_stew"); balefire_scrambled = new ItemSoup(6).setUnlocalizedName("balefire_scrambled").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":balefire_scrambled"); balefire_and_ham = new ItemSoup(6).setUnlocalizedName("balefire_and_ham").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":balefire_and_ham"); - lemon = new ItemLemon(3, 5, false).setUnlocalizedName("lemon").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":lemon"); - definitelyfood = new ItemLemon(2, 5, false).setUnlocalizedName("definitelyfood").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":definitelyfood"); + lemon = new ItemLemon(3, 0.5F, false).setUnlocalizedName("lemon").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":lemon"); + definitelyfood = new ItemLemon(3, 0.5F, false).setUnlocalizedName("definitelyfood").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":definitelyfood"); med_ipecac = new ItemLemon(0, 0, false).setUnlocalizedName("med_ipecac").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":med_ipecac_new"); med_ptsd = new ItemLemon(0, 0, false).setUnlocalizedName("med_ptsd").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":med_ptsd_new"); med_schizophrenia = new ItemLemon(0, 0, false).setUnlocalizedName("med_schizophrenia").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":med_schizophrenia_new"); - loops = new ItemLemon(4, 5, false).setUnlocalizedName("loops").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":loops"); - loop_stew = new ItemLemon(10, 10, false).setUnlocalizedName("loop_stew").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":loop_stew"); - spongebob_macaroni = new ItemLemon(5, 5, false).setUnlocalizedName("spongebob_macaroni").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":spongebob_macaroni"); - fooditem = new ItemLemon(2, 5, false).setUnlocalizedName("fooditem").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":fooditem"); - twinkie = new ItemLemon(3, 5, false).setUnlocalizedName("twinkie").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":twinkie"); - static_sandwich = new ItemLemon(6, 5, false).setUnlocalizedName("static_sandwich").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":static_sandwich"); - pudding = new ItemLemon(6, 15, false).setUnlocalizedName("pudding").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":pudding"); + loops = new ItemLemon(4, 0.25F, false).setUnlocalizedName("loops").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":loops"); + loop_stew = new ItemLemon(10, 0.5F, false).setUnlocalizedName("loop_stew").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":loop_stew"); + spongebob_macaroni = new ItemLemon(5, 1F, false).setUnlocalizedName("spongebob_macaroni").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":spongebob_macaroni"); + fooditem = new ItemLemon(2, 5F, false).setUnlocalizedName("fooditem").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":fooditem"); + twinkie = new ItemLemon(3, 0.25F, false).setUnlocalizedName("twinkie").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":twinkie"); + static_sandwich = new ItemLemon(6, 1F, false).setUnlocalizedName("static_sandwich").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":static_sandwich"); + pudding = new ItemLemon(6, 1F, false).setUnlocalizedName("pudding").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":pudding"); canteen_13 = new ItemCanteen(1 * 60).setUnlocalizedName("canteen_13").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canteen_13"); canteen_vodka = new ItemCanteen(3 * 60).setUnlocalizedName("canteen_vodka").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canteen_vodka"); canteen_fab = new ItemCanteen(2 * 60).setUnlocalizedName("canteen_fab").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canteen_fab"); pancake = new ItemPancake(20, 20, false).setUnlocalizedName("pancake").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":pancake"); - nugget = new ItemLemon(200, 200, false).setUnlocalizedName("nugget").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":nugget"); + nugget = new ItemLemon(200, 1F, false).setUnlocalizedName("nugget").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":nugget"); peas = new ItemPeas().setUnlocalizedName("peas").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":peas"); marshmallow = new ItemMarshmallow().setUnlocalizedName("marshmallow").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":marshmallow"); - cheese = new ItemLemon(5, 10, false).setUnlocalizedName("cheese").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cheese"); - quesadilla = new ItemLemon(8, 10, false).setUnlocalizedName("cheese_quesadilla").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":quesadilla"); + cheese = new ItemLemon(5, 0.75F, false).setUnlocalizedName("cheese").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cheese"); + quesadilla = new ItemLemon(8, 1F, false).setUnlocalizedName("cheese_quesadilla").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":quesadilla"); mucho_mango = new ItemMuchoMango(10).setUnlocalizedName("mucho_mango").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":mucho_mango"); - glyphid_meat = new ItemLemon(3, 3, true).setUnlocalizedName("glyphid_meat").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":glyphid_meat"); - glyphid_meat_grilled = new ItemLemon(8, 8, true).setPotionEffect(Potion.damageBoost.id, 180, 1, 1F).setUnlocalizedName("glyphid_meat_grilled").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":glyphid_meat_grilled"); + glyphid_meat = new ItemLemon(3, 0.5F, true).setUnlocalizedName("glyphid_meat").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":glyphid_meat"); + glyphid_meat_grilled = new ItemLemon(8, 0.75F, true).setPotionEffect(Potion.damageBoost.id, 180, 1, 1F).setUnlocalizedName("glyphid_meat_grilled").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":glyphid_meat_grilled"); egg_glyphid = new Item().setUnlocalizedName("egg_glyphid").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":egg_glyphid"); defuser = new ItemTooling(ToolType.DEFUSER, 100).setUnlocalizedName("defuser").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":defuser"); diff --git a/src/main/java/com/hbm/items/food/ItemConserve.java b/src/main/java/com/hbm/items/food/ItemConserve.java index 11b2c9bb7..9b45540e6 100644 --- a/src/main/java/com/hbm/items/food/ItemConserve.java +++ b/src/main/java/com/hbm/items/food/ItemConserve.java @@ -105,33 +105,33 @@ public class ItemConserve extends ItemEnumMulti { } public static enum EnumFoodType { - BEEF(8, 5F), - TUNA(4, 5F), - MYSTERY(6, 5F), - PASHTET(4, 5F), - CHEESE(3, 5F), + BEEF(8, 0.75F), + TUNA(4, 0.75F), + MYSTERY(6, 0.5F), + PASHTET(4, 0.5F), + CHEESE(3, 1F), JIZZ(15, 5F), // :3 - MILK(5, 5F), - ASS(6, 5F), // :3 - PIZZA(8, 5F), - TUBE(2, 5F), - TOMATO(4, 5F), - ASBESTOS(7, 5F), - BHOLE(10, 5F), - HOTDOGS(5, 5F), - LEFTOVERS(1, 5F), - YOGURT(3, 5F), - STEW(5, 5F), - CHINESE(6, 5F), - OIL(3, 5F), - FIST(6, 5F), - SPAM(8, 5F), - FRIED(10, 5F), - NAPALM(6, 5F), - DIESEL(6, 5F), - KEROSENE(6, 4F), - RECURSION(1, 5F), - BARK(2, 5F); + MILK(5, 0.25F), + ASS(6, 0.75F), // :3 + PIZZA(8, 075F), + TUBE(2, 0.25F), + TOMATO(4, 0.5F), + ASBESTOS(7, 1F), + BHOLE(10, 1F), + HOTDOGS(5, 0.75F), + LEFTOVERS(1, 0.1F), + YOGURT(3, 0.5F), + STEW(5, 0.5F), + CHINESE(6, 0.1F), + OIL(3, 1F), + FIST(6, 0.75F), + SPAM(8, 1F), + FRIED(10, 0.75F), + NAPALM(6, 1F), + DIESEL(6, 1F), + KEROSENE(6, 1F), + RECURSION(1, 1F), + BARK(2, 1F); protected int foodLevel; protected float saturation; diff --git a/src/main/java/com/hbm/items/food/ItemLemon.java b/src/main/java/com/hbm/items/food/ItemLemon.java index 25bb74a9e..17499655c 100644 --- a/src/main/java/com/hbm/items/food/ItemLemon.java +++ b/src/main/java/com/hbm/items/food/ItemLemon.java @@ -33,15 +33,6 @@ public class ItemLemon extends ItemFood { list.add("Eh, good enough."); } - if(this == ModItems.definitelyfood) { - list.add("A'right, I got sick and tired of"); - list.add("having to go out, kill things just"); - list.add("to get food and not die, so here is "); - list.add("my absolutely genius solution:"); - list.add(""); - list.add("Have some edible dirt."); - } - if(this == ModItems.med_ipecac) { list.add("Bitter juice that will cause your stomach"); list.add("to forcefully eject its contents."); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 73d321015..d62c493c2 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -223,7 +223,8 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.shimmer_handle, 1), new Object[] { "GP", "GP", "GP", 'G', GOLD.plate(), 'P', ANY_PLASTIC.ingot() }); addRecipeAuto(new ItemStack(ModItems.shimmer_sledge, 1), new Object[] { "H", "G", "G", 'G', ModItems.shimmer_handle, 'H', ModItems.shimmer_head }); addRecipeAuto(new ItemStack(ModItems.shimmer_axe, 1), new Object[] { "H", "G", "G", 'G', ModItems.shimmer_handle, 'H', ModItems.shimmer_axe_head }); - addRecipeAuto(new ItemStack(ModItems.definitelyfood, 1), new Object[] { "DDD", "SDS", "DDD", 'D', Blocks.dirt, 'S', STEEL.plate() }); + addShapelessAuto(new ItemStack(ModItems.definitelyfood, 4), new Object[] { ANY_RUBBER.ingot(), Items.wheat, Items.rotten_flesh, "treeSapling" }); + addShapelessAuto(new ItemStack(ModItems.definitelyfood, 4), new Object[] { ANY_RUBBER.ingot(), Items.wheat, Items.rotten_flesh, Items.wheat_seeds, Items.wheat_seeds, Items.wheat_seeds }); addRecipeAuto(new ItemStack(ModItems.turbine_tungsten, 1), new Object[] { "BBB", "BSB", "BBB", 'B', ModItems.blade_tungsten, 'S', DURA.ingot() }); addRecipeAuto(new ItemStack(ModItems.ring_starmetal, 1), new Object[] { " S ", "S S", " S ", 'S', STAR.ingot() }); addRecipeAuto(new ItemStack(ModItems.flywheel_beryllium, 1), new Object[] { "IBI", "BTB", "IBI", 'B', BE.block(), 'I', IRON.plateCast(), 'T', ModItems.bolt_compound }); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index a925fdc1e..bc8b89113 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1676,7 +1676,7 @@ item.debris_fuel.name=RBMK-Kernbrennstoffbrocken item.debris_graphite.name=Heißer Graphitbrocken item.debris_metal.name=Gebrochene Metallleiste item.debris_shrapnel.name=Wartungssteg-Schrapnell -item.definitelyfood.name=GarantiertKeinDreck-Marken Feldration +item.definitelyfood.name=Feldration item.defuser.name=High-Tech Bombenentschärfungsgerät item.defuser_gold.name=Goldener Seitenschneider item.demon_core_closed.name=Bedeckter Dämonenkern diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 27fa7b020..08cd0042d 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -2380,7 +2380,7 @@ item.debris_fuel.name=RBMK Fuel Chunk item.debris_graphite.name=Hot Graphite Chunk item.debris_metal.name=Broken Metal Bar item.debris_shrapnel.name=Walkway Shrapnel -item.definitelyfood.name=TotallyNotDirt-Brand MRE +item.definitelyfood.name=MRE item.defuser.name=High-Tech Bomb Defusing Device item.defuser_gold.name=Golden Wire Cutter item.demon_core_closed.name=Closed Demon Core diff --git a/src/main/resources/assets/hbm/textures/items/definitelyfood.png b/src/main/resources/assets/hbm/textures/items/definitelyfood.png index 615a461c4c18eb7aa4432d9a72511fe20c100be5..601e4b63de42221535d02be2b7a6dc8a255f3d75 100644 GIT binary patch delta 287 zcmV+)0pR|R0?7i9Gk*a9Nklwe;zGE24_drZw4=}Zdw3sBl!Iu zqe+0@?^#n>RTO1u-%4o!CeN={vjI_(l4dzkl75+sV(CY%3x6A$X1UeZ4Dnov6b_y% zxxIg6IG*CUlHquY=(M?ecw)UP=!y}_oj&oh)N2&05} zo-H-7D~Ru8&y}1X`zWP3J>0d%lY?!`7aKI*!0Zd4S8f3`Hwb1SQaA*&ur{!Y#sGubjW{YJ5m4u002ovPDHLkV1ixTgM9!1 delta 228 zcmV!YTtBcu620eBfo(Ww`$!Bh;X z7^|0PVYWU#>f9^6KiOU5c*lGj6NC{42*QXUj2xf?P$>H2D_vw6odEE1* Date: Thu, 25 Jan 2024 15:48:24 +0100 Subject: [PATCH 5/9] small tweaks, radar screen fix --- changelog | 6 ++++-- src/main/java/com/hbm/blocks/generic/BlockOre.java | 3 --- .../java/com/hbm/inventory/recipes/AssemblerRecipes.java | 2 +- .../hbm/tileentity/machine/TileEntityMachineRadarNT.java | 6 +++++- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/changelog b/changelog index 2fdc7711a..1a0ac55f7 100644 --- a/changelog +++ b/changelog @@ -20,15 +20,17 @@ * Rare earth ore, instead of detonating into a million fragments that are annoying to process, clog inventories and just cause everyone to not mine that ore in earlygame, will now drop a chunk of rare earth ore * Rare earth chunks can be shredded directly into one unit of desh blend * For efficiencymaxxers, silk-touching rare earth still works as expected, yielding two units when shredded - * The luck enchantment should work as expected, dropping multiple chunks. Yay! + * The fortune enchantment should work as expected, dropping multiple chunks. Yay! * To get things that can be useful in small amounts in earlygame like boron and cobalt (boron for Atlas and cobalt for tools), the rare earth chunk can be hammered down into fragments on a steel anvil - * Cerium and lanthanium, due to being useless, only have a 10% chance of producing a framgent + * Cerium and lanthanium, due to being useless, only have a 10% chance of producing a fragment * Boron and cobalt each produce a guaranteed fragment, as well as an additional one with a 50% chance * Neodymium and niobium both yield a shard 50% of the time * Rebalanced all the food items so their saturation values aren't ridiculously high (turns out - the number represents a *multiplier* for the hunger value and not a flat number) * Dirt MREs are now just regular low-quality MREs made from latex packaging and some easily obtainable earlygame ingredients - wheat, rotten flesh and saplings (makes 4) +* The recipe for the chemical plant has been slightly simplified (again) ## Fixed * Fixed basalt ores dropping their items with invalid metadata * Fixed creative infinite fluid tanks not being able to fill fluid gauges at >0PU * Fixed an issue where repeatedly opening and closing certain doors would cause their sound loop to get stuck running forever +* Fixed radar screens behaving weirdly when out of then intended range. The max interaction range for radars is now infinite, and radars will send a second information packet to players near connected radars diff --git a/src/main/java/com/hbm/blocks/generic/BlockOre.java b/src/main/java/com/hbm/blocks/generic/BlockOre.java index fef0e1b08..6a7a4497b 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockOre.java +++ b/src/main/java/com/hbm/blocks/generic/BlockOre.java @@ -211,9 +211,6 @@ public class BlockOre extends Block { if(this == ModBlocks.ore_sulfur || this == ModBlocks.ore_nether_sulfur || this == ModBlocks.ore_meteor_sulfur || this == ModBlocks.basalt_sulfur) { return 2 + rand.nextInt(3); } - if(this == ModBlocks.ore_rare || this == ModBlocks.ore_gneiss_rare) { - return 4 + rand.nextInt(8); - } if(this == ModBlocks.block_meteor_broken) { return 1 + rand.nextInt(3); } diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 5d725518c..a0831faa8 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -283,7 +283,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.machine_coker, 1), new AStack[] {!exp ? new OreDictStack(STEEL.plateWelded(), 3) : new OreDictStack(STEEL.heavyComp(), 2), new OreDictStack(IRON.ingot(), 16), new OreDictStack(CU.plate528(), 8), new OreDictStack(RUBBER.ingot(), 4), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModBlocks.steel_grate, 4) },200); makeRecipe(new ComparableStack(ModBlocks.machine_refinery, 1), new AStack[] {!exp ? new OreDictStack(STEEL.plateWelded(), 3) : new OreDictStack(STEEL.heavyComp(), 1), new OreDictStack(CU.plate528(), 16), new ComparableStack(ModItems.hull_big_steel, 6), new ComparableStack(ModItems.pipes_steel, 2), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.circuit_red_copper, 1) },350); makeRecipe(new ComparableStack(ModBlocks.machine_epress, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new OreDictStack(ANY_RUBBER.ingot(), 4), new ComparableStack(ModItems.part_generic, 2, EnumPartType.PISTON_HYDRAULIC.ordinal()), new ComparableStack(ModItems.circuit_copper, 1) }, 100); - makeRecipe(new ComparableStack(ModBlocks.machine_chemplant, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 8), new OreDictStack(CU.plate528(), 6), new ComparableStack(ModItems.tank_steel, 4), new ComparableStack(ModItems.hull_big_steel, 1), new ComparableStack(ModItems.coil_tungsten, 3), new ComparableStack(ModItems.circuit_copper, 2), new ComparableStack(ModItems.circuit_red_copper, 1), new ComparableStack(ModItems.plate_polymer, 8), },200); + makeRecipe(new ComparableStack(ModBlocks.machine_chemplant, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(CU.plate528(), 6), new ComparableStack(ModItems.tank_steel, 4), new ComparableStack(ModItems.coil_tungsten, 3), new ComparableStack(ModItems.circuit_copper, 2), new ComparableStack(ModItems.circuit_red_copper, 1), new ComparableStack(ModItems.plate_polymer, 8), },200); makeRecipe(new ComparableStack(ModBlocks.machine_crystallizer, 1), new AStack[] {new ComparableStack(ModItems.hull_big_steel, 4), new ComparableStack(ModItems.pipes_steel, 1), new OreDictStack(DESH.ingot(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.blades_advanced_alloy, 2), new OreDictStack(STEEL.plateWelded(), 4), new OreDictStack(TI.plate(), 16), new ComparableStack(Blocks.glass, 4), new ComparableStack(ModItems.circuit_gold, 1), },400); makeRecipe(new ComparableStack(ModBlocks.machine_fluidtank, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new OreDictStack(STEEL.plate528(), 6), new ComparableStack(ModItems.hull_big_steel, 4), new OreDictStack(ANY_TAR.any(), 4), },150); makeRecipe(new ComparableStack(ModBlocks.machine_bat9000, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 16), new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 2), new ComparableStack(ModBlocks.steel_scaffold, 16), new OreDictStack(ANY_TAR.any(), 16), },150); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index f43773020..adf805493 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -17,6 +17,8 @@ import com.hbm.items.ModItems; import com.hbm.items.tool.ItemCoordinateBase; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; +import com.hbm.packet.BufPacket; +import com.hbm.packet.PacketDispatcher; import com.hbm.saveddata.SatelliteSavedData; import com.hbm.saveddata.satellites.Satellite; import com.hbm.saveddata.satellites.SatelliteHorizons; @@ -35,6 +37,7 @@ import api.hbm.entity.IRadarDetectable; import api.hbm.entity.IRadarDetectableNT; import api.hbm.entity.IRadarDetectableNT.RadarScanParams; import api.hbm.entity.RadarEntry; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -205,6 +208,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I screen.refZ = zCoord; screen.range = this.getRange(); screen.linked = true; + PacketDispatcher.wrapper.sendToAllAround(new BufPacket(pos.getX(), pos.getY(), pos.getZ(), this), new TargetPoint(this.worldObj.provider.dimensionId, pos.getX(), pos.getY(), pos.getZ(), 25)); } } } @@ -512,7 +516,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) { return false; } else { - return player.getDistance(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 128; + return true; } } From 174c7271a977696782be8840f6751109ee6537f4 Mon Sep 17 00:00:00 2001 From: Boblet Date: Fri, 26 Jan 2024 13:37:16 +0100 Subject: [PATCH 6/9] shit i really want in my survival world --- changelog | 13 + src/main/java/com/hbm/blocks/ModBlocks.java | 24 +- .../com/hbm/blocks/generic/BlockCluster.java | 1 - .../hbm/blocks/generic/BlockDoorGeneric.java | 1 - .../java/com/hbm/blocks/generic/BlockOre.java | 10 +- .../com/hbm/blocks/generic/BlockOutgas.java | 3 +- .../blocks/machine/MachineBrickFurnace.java | 172 +++++++++++++ .../com/hbm/blocks/network/CraneInserter.java | 14 +- .../blocks/rail/BlockRailWaypointSystem.java | 5 - .../java/com/hbm/crafting/ToolRecipes.java | 1 + .../hbm/entity/projectile/EntityRubble.java | 2 - .../com/hbm/inventory/OreDictManager.java | 8 +- .../container/ContainerFurnaceBrick.java | 78 ++++++ .../hbm/inventory/gui/GUIFurnaceBrick.java | 44 ++++ src/main/java/com/hbm/items/ModItems.java | 6 + .../java/com/hbm/items/tool/ItemSatRelay.java | 10 - .../java/com/hbm/main/CraftingManager.java | 1 + src/main/java/com/hbm/main/MainRegistry.java | 4 + .../java/com/hbm/packet/AuxButtonPacket.java | 2 - .../java/com/hbm/tileentity/TileMappings.java | 1 + .../machine/TileEntityFurnaceBrick.java | 232 ++++++++++++++++++ .../machine/TileEntityFurnaceIron.java | 4 +- .../machine/TileEntityMachineExcavator.java | 3 +- .../machine/TileEntityMachineWoodBurner.java | 1 - .../network/TileEntityCraneGrabber.java | 4 +- .../network/TileEntityCraneInserter.java | 4 +- src/main/java/com/hbm/util/InventoryUtil.java | 11 + src/main/java/com/hbm/util/ItemStackUtil.java | 37 +++ src/main/resources/assets/hbm/lang/de_DE.lang | 4 + src/main/resources/assets/hbm/lang/en_US.lang | 4 + .../blocks/machine_furnace_brick_bottom.png | Bin 0 -> 405 bytes .../machine_furnace_brick_front_off.png | Bin 0 -> 614 bytes .../blocks/machine_furnace_brick_front_on.png | Bin 0 -> 649 bytes .../blocks/machine_furnace_brick_side.png | Bin 0 -> 678 bytes .../blocks/machine_furnace_brick_top.png | Bin 0 -> 695 bytes .../gui/processing/gui_furnace_brick.png | Bin 0 -> 12826 bytes .../hbm/textures/items/dwarven_pickaxe.png | Bin 0 -> 313 bytes 37 files changed, 639 insertions(+), 65 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/machine/MachineBrickFurnace.java create mode 100644 src/main/java/com/hbm/inventory/container/ContainerFurnaceBrick.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUIFurnaceBrick.java create mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceBrick.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_furnace_brick_bottom.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_furnace_brick_front_off.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_furnace_brick_front_on.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_furnace_brick_side.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_furnace_brick_top.png create mode 100644 src/main/resources/assets/hbm/textures/gui/processing/gui_furnace_brick.png create mode 100644 src/main/resources/assets/hbm/textures/items/dwarven_pickaxe.png diff --git a/changelog b/changelog index 1a0ac55f7..2b9abf3b3 100644 --- a/changelog +++ b/changelog @@ -11,6 +11,17 @@ * I don't know how this would ever be useful but I was stuck in a phonecall at work for two consecutive hours and didn't have anything else to do * They should invent handsets that don't hurt when you hold them onto your head for too long * Has no NEI handler because the call ended before I got to that +* Bricked furnace + * An earlygame machine made from smooth stone and bricks + * Largely identical to vanilla furnaces + * Like the wood burner, it will collect ashes from burnt fuel + * Certain recipes are sped up, sand and cobblestone are smelted at twice the speed while (fire) clay is smelted at quadruple speed + * This means that making a clay brick block now takes as much time using a bricked furnace as one single furnace operation in a vanilla furnace + * I *really* like bricks and I don't feel like waiting until I can get an arc furnace to mass produce them at a sensible pace +* Dwarven pickaxe + * Earlygame tool made from iron and copper + * Has the harvest level of iron, a durability of just 250 but the AoE ability + * Great for getting cobblestone quickly or making tunnels when you don't have desh or electric tools yet ## Changed * Large turbines, levis and geothermal heat exchangers now have their own sounds when operating @@ -28,9 +39,11 @@ * Rebalanced all the food items so their saturation values aren't ridiculously high (turns out - the number represents a *multiplier* for the hunger value and not a flat number) * Dirt MREs are now just regular low-quality MREs made from latex packaging and some easily obtainable earlygame ingredients - wheat, rotten flesh and saplings (makes 4) * The recipe for the chemical plant has been slightly simplified (again) +* Iron furnaces now have a 20% faster base smelting speed, making them complete operations in 8 seconds instead of 10 without upgrades ## Fixed * Fixed basalt ores dropping their items with invalid metadata * Fixed creative infinite fluid tanks not being able to fill fluid gauges at >0PU * Fixed an issue where repeatedly opening and closing certain doors would cause their sound loop to get stuck running forever * Fixed radar screens behaving weirdly when out of then intended range. The max interaction range for radars is now infinite, and radars will send a second information packet to players near connected radars +* Fixed very rare bug where waiting for wood ash to build up in the wood burner and then clearing the slot will remove twice as much ash on the internal counter for the initial ash item created diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 52282b525..05ae45215 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -152,10 +152,6 @@ public class ModBlocks { public static Block basalt; public static Block ore_basalt; - @Deprecated public static Block basalt_sulfur; - @Deprecated public static Block basalt_fluorite; - @Deprecated public static Block basalt_asbestos; - @Deprecated public static Block basalt_gem; public static Block basalt_smooth; public static Block basalt_brick; public static Block basalt_polished; @@ -713,10 +709,11 @@ public class ModBlocks { public static Block machine_puf6_tank; public static Block machine_reactor_breeding; - + + public static Block machine_furnace_brick_off; + public static Block machine_furnace_brick_on; public static Block machine_nuke_furnace_off; public static Block machine_nuke_furnace_on; - public static Block machine_rtg_furnace_off; public static Block machine_rtg_furnace_on; @@ -1378,10 +1375,6 @@ public class ModBlocks { basalt = new BlockGeneric(Material.rock).setBlockName("basalt").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt"); ore_basalt = new BlockOreBasalt().setBlockName("ore_basalt").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_basalt"); - basalt_sulfur = new BlockRemap(ore_basalt, 0).setBlockName("basalt_sulfur"); - basalt_fluorite = new BlockRemap(ore_basalt, 1).setBlockName("basalt_fluorite"); - basalt_asbestos = new BlockRemap(ore_basalt, 2).setBlockName("basalt_asbestos"); - basalt_gem = new BlockRemap(ore_basalt, 3).setBlockName("basalt_gem"); basalt_smooth = new BlockGeneric(Material.rock).setBlockName("basalt_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt_smooth"); basalt_brick = new BlockGeneric(Material.rock).setBlockName("basalt_brick").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt_brick"); basalt_polished = new BlockGeneric(Material.rock).setBlockName("basalt_polished").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt_polished"); @@ -1864,10 +1857,11 @@ public class ModBlocks { machine_puf6_tank = new MachinePuF6Tank(Material.iron).setBlockName("machine_puf6_tank").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); machine_reactor_breeding = new MachineReactorBreeding(Material.iron).setBlockName("machine_reactor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_reactor"); - + + machine_furnace_brick_off = new MachineBrickFurnace(false).setBlockName("machine_furnace_brick_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + machine_furnace_brick_on = new MachineBrickFurnace(true).setBlockName("machine_furnace_brick_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); machine_nuke_furnace_off = new MachineNukeFurnace(false).setBlockName("machine_nuke_furnace_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); machine_nuke_furnace_on = new MachineNukeFurnace(true).setBlockName("machine_nuke_furnace_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); - machine_rtg_furnace_off = new MachineRtgFurnace(false).setBlockName("machine_rtg_furnace_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); machine_rtg_furnace_on = new MachineRtgFurnace(true).setBlockName("machine_rtg_furnace_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); @@ -2549,10 +2543,6 @@ public class ModBlocks { //Basalt ores register(ore_basalt); - GameRegistry.registerBlock(basalt_sulfur, basalt_sulfur.getUnlocalizedName()); - GameRegistry.registerBlock(basalt_fluorite, basalt_fluorite.getUnlocalizedName()); - GameRegistry.registerBlock(basalt_asbestos, basalt_asbestos.getUnlocalizedName()); - GameRegistry.registerBlock(basalt_gem, ItemBlockBase.class, basalt_gem.getUnlocalizedName()); //End Ores GameRegistry.registerBlock(ore_tikite, ore_tikite.getUnlocalizedName()); @@ -3136,6 +3126,8 @@ public class ModBlocks { register(foundry_outlet); register(foundry_slagtap); register(slag); + register(machine_furnace_brick_off); + register(machine_furnace_brick_on); register(machine_difurnace_off); register(machine_difurnace_on); register(machine_difurnace_extension); diff --git a/src/main/java/com/hbm/blocks/generic/BlockCluster.java b/src/main/java/com/hbm/blocks/generic/BlockCluster.java index da64a6849..03ed4027e 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockCluster.java +++ b/src/main/java/com/hbm/blocks/generic/BlockCluster.java @@ -62,7 +62,6 @@ public class BlockCluster extends Block implements IDrillInteraction, ITooltipPr if(this == ModBlocks.cluster_titanium) return ModItems.crystal_titanium; if(this == ModBlocks.cluster_aluminium) return ModItems.crystal_aluminium; if(this == ModBlocks.cluster_copper) return ModItems.crystal_copper; - if(this == ModBlocks.basalt_gem) return ModItems.gem_volcanic; return null; } diff --git a/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java b/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java index fbe36d426..0e496af45 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java +++ b/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java @@ -5,7 +5,6 @@ import java.util.List; import com.hbm.blocks.BlockDummyable; import com.hbm.interfaces.IBomb; import com.hbm.items.special.ItemDoorSkin; -import com.hbm.items.tool.ItemLock; import com.hbm.tileentity.DoorDecl; import com.hbm.tileentity.TileEntityDoorGeneric; import com.hbm.util.fauxpointtwelve.BlockPos; diff --git a/src/main/java/com/hbm/blocks/generic/BlockOre.java b/src/main/java/com/hbm/blocks/generic/BlockOre.java index 6a7a4497b..f54c9eff6 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockOre.java +++ b/src/main/java/com/hbm/blocks/generic/BlockOre.java @@ -44,13 +44,13 @@ public class BlockOre extends Block { @Spaghetti("*throws up*") @Override public Item getItemDropped(int i, Random rand, int j) { - if(this == ModBlocks.ore_fluorite || this == ModBlocks.basalt_fluorite) { + if(this == ModBlocks.ore_fluorite) { return ModItems.fluorite; } if(this == ModBlocks.ore_niter) { return ModItems.niter; } - if(this == ModBlocks.ore_sulfur || this == ModBlocks.ore_nether_sulfur || this == ModBlocks.ore_meteor_sulfur || this == ModBlocks.basalt_sulfur) { + if(this == ModBlocks.ore_sulfur || this == ModBlocks.ore_nether_sulfur || this == ModBlocks.ore_meteor_sulfur) { return ModItems.sulfur; } if(this == ModBlocks.waste_trinitite || this == ModBlocks.waste_trinitite_red) { @@ -178,7 +178,7 @@ public class BlockOre extends Block { if(this == ModBlocks.deco_asbestos) { return ModItems.ingot_asbestos; } - if(this == ModBlocks.ore_asbestos || this == ModBlocks.ore_gneiss_asbestos || this == ModBlocks.basalt_asbestos) { + if(this == ModBlocks.ore_asbestos || this == ModBlocks.ore_gneiss_asbestos) { return ModItems.ingot_asbestos; } if(this == ModBlocks.ore_lignite) { @@ -202,13 +202,13 @@ public class BlockOre extends Block { @Override public int quantityDropped(Random rand) { - if(this == ModBlocks.ore_fluorite || this == ModBlocks.basalt_fluorite) { + if(this == ModBlocks.ore_fluorite) { return 2 + rand.nextInt(3); } if(this == ModBlocks.ore_niter) { return 2 + rand.nextInt(3); } - if(this == ModBlocks.ore_sulfur || this == ModBlocks.ore_nether_sulfur || this == ModBlocks.ore_meteor_sulfur || this == ModBlocks.basalt_sulfur) { + if(this == ModBlocks.ore_sulfur || this == ModBlocks.ore_nether_sulfur || this == ModBlocks.ore_meteor_sulfur) { return 2 + rand.nextInt(3); } if(this == ModBlocks.block_meteor_broken) { diff --git a/src/main/java/com/hbm/blocks/generic/BlockOutgas.java b/src/main/java/com/hbm/blocks/generic/BlockOutgas.java index 650819005..ae6107817 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockOutgas.java +++ b/src/main/java/com/hbm/blocks/generic/BlockOutgas.java @@ -57,8 +57,7 @@ public class BlockOutgas extends BlockOre { if(this == ModBlocks.ore_asbestos || this == ModBlocks.ore_gneiss_asbestos || this == ModBlocks.block_asbestos || this == ModBlocks.deco_asbestos || this == ModBlocks.brick_asbestos || this == ModBlocks.tile_lab || - this == ModBlocks.tile_lab_cracked || this == ModBlocks.tile_lab_broken || - this == ModBlocks.basalt_asbestos) { + this == ModBlocks.tile_lab_cracked || this == ModBlocks.tile_lab_broken) { return ModBlocks.gas_asbestos; } diff --git a/src/main/java/com/hbm/blocks/machine/MachineBrickFurnace.java b/src/main/java/com/hbm/blocks/machine/MachineBrickFurnace.java new file mode 100644 index 000000000..48054e36e --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineBrickFurnace.java @@ -0,0 +1,172 @@ +package com.hbm.blocks.machine; + +import java.util.Random; + +import com.hbm.blocks.ModBlocks; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.machine.TileEntityFurnaceBrick; +import com.hbm.util.ItemStackUtil; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; + +public class MachineBrickFurnace extends BlockContainer { + + private final Random rand = new Random(); + private final boolean isActive; + private static boolean keepInventory; + + @SideOnly(Side.CLIENT) private IIcon iconTop; + @SideOnly(Side.CLIENT) private IIcon iconBottom; + @SideOnly(Side.CLIENT) private IIcon iconFront; + + public MachineBrickFurnace(boolean blockState) { + super(Material.iron); + isActive = blockState; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":machine_furnace_brick_top"); + this.iconBottom = iconRegister.registerIcon(RefStrings.MODID + ":machine_furnace_brick_bottom"); + this.iconFront = iconRegister.registerIcon(RefStrings.MODID + (this.isActive ? ":machine_furnace_brick_front_on" : ":machine_furnace_brick_front_off")); + this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":machine_furnace_brick_side"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + return metadata == 0 && side == 3 ? this.iconFront : (side == metadata ? this.iconFront : (side == 1 ? this.iconTop : (side == 0 ? this.iconBottom : this.blockIcon))); + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityFurnaceBrick(); + } + + @Override + @SideOnly(Side.CLIENT) + public Item getItem(World world, int x, int y, int z) { + return Item.getItemFromBlock(ModBlocks.machine_furnace_brick_off); + } + + @Override + public void onBlockAdded(World world, int x, int y, int z) { + super.onBlockAdded(world, x, y, z); + this.setDefaultDirection(world, x, y, z); + } + + private void setDefaultDirection(World world, int x, int y, int z) { + if(!world.isRemote) { + Block nZ = world.getBlock(x, y, z - 1); + Block pZ = world.getBlock(x, y, z + 1); + Block nX = world.getBlock(x - 1, y, z); + Block pX = world.getBlock(x + 1, y, z); + + byte meta = 3; + + if(nZ.func_149730_j() && !pZ.func_149730_j()) meta = 3; + if(pZ.func_149730_j() && !nZ.func_149730_j()) meta = 2; + if(nX.func_149730_j() && !pX.func_149730_j()) meta = 5; + if(pX.func_149730_j() && !nX.func_149730_j()) meta = 4; + + world.setBlockMetadataWithNotify(x, y, z, meta, 2); + } + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { + int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; + if(i == 0) world.setBlockMetadataWithNotify(x, y, z, 2, 2); + if(i == 1) world.setBlockMetadataWithNotify(x, y, z, 5, 2); + if(i == 2) world.setBlockMetadataWithNotify(x, y, z, 3, 2); + if(i == 3) world.setBlockMetadataWithNotify(x, y, z, 4, 2); + + if(itemStack.hasDisplayName()) ((TileEntityFurnaceBrick)world.getTileEntity(x, y, z)).setCustomName(itemStack.getDisplayName()); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + if(world.isRemote) { + return true; + } else if(!player.isSneaking()) { + TileEntityFurnaceBrick entity = (TileEntityFurnaceBrick) world.getTileEntity(x, y, z); + if(entity != null) { + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); + } + return true; + } else { + return false; + } + } + + public static void updateBlockState(boolean isProcessing, World world, int x, int y, int z) { + int i = world.getBlockMetadata(x, y, z); + TileEntity entity = world.getTileEntity(x, y, z); + keepInventory = true; + + if(isProcessing) { + world.setBlock(x, y, z, ModBlocks.machine_furnace_brick_on); + } else { + world.setBlock(x, y, z, ModBlocks.machine_furnace_brick_off); + } + + keepInventory = false; + world.setBlockMetadataWithNotify(x, y, z, i, 2); + + if(entity != null) { + entity.validate(); + world.setTileEntity(x, y, z, entity); + } + } + + @Override + public void breakBlock(World world, int x, int y, int z, Block block, int meta) { + if(!keepInventory) ItemStackUtil.spillItems(world, x, y, z, block, rand); + super.breakBlock(world, x, y, z, block, meta); + } + + @Override + @SideOnly(Side.CLIENT) + public void randomDisplayTick(World world, int x, int y, int z, Random rand) { + if(isActive) { + int meta = world.getBlockMetadata(x, y, z); + float cX = x + 0.5F; + float cY = y + rand.nextFloat() * 0.375F; + float cZ = z + 0.5F; + float off = 0.52F; + float var = rand.nextFloat() * 0.6F - 0.3F; + rand.nextFloat(); + rand.nextFloat(); + + if(meta == 4) { + world.spawnParticle("smoke", cX - off, cY, cZ + var, 0.0D, 0.0D, 0.0D); + world.spawnParticle("flame", cX - off, cY, cZ + var, 0.0D, 0.0D, 0.0D); + } else if(meta == 5) { + world.spawnParticle("smoke", cX + off, cY, cZ + var, 0.0D, 0.0D, 0.0D); + world.spawnParticle("flame", cX + off, cY, cZ + var, 0.0D, 0.0D, 0.0D); + } else if(meta == 2) { + world.spawnParticle("smoke", cX + var, cY, cZ - off, 0.0D, 0.0D, 0.0D); + world.spawnParticle("flame", cX + var, cY, cZ - off, 0.0D, 0.0D, 0.0D); + } else if(meta == 3) { + world.spawnParticle("smoke", cX + var, cY, cZ + off, 0.0D, 0.0D, 0.0D); + world.spawnParticle("flame", cX + var, cY, cZ + off, 0.0D, 0.0D, 0.0D); + } + } + } +} diff --git a/src/main/java/com/hbm/blocks/network/CraneInserter.java b/src/main/java/com/hbm/blocks/network/CraneInserter.java index 97347dc3c..22dcdcad8 100644 --- a/src/main/java/com/hbm/blocks/network/CraneInserter.java +++ b/src/main/java/com/hbm/blocks/network/CraneInserter.java @@ -6,6 +6,8 @@ import api.hbm.conveyor.IEnterableBlock; import com.hbm.lib.RefStrings; import com.hbm.tileentity.network.TileEntityCraneBase; import com.hbm.tileentity.network.TileEntityCraneInserter; +import com.hbm.util.InventoryUtil; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -17,7 +19,6 @@ import net.minecraft.inventory.IInventory; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityFurnace; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -72,7 +73,7 @@ public class CraneInserter extends BlockCraneBase implements IEnterableBlock { if(te instanceof ISidedInventory) { ISidedInventory sided = (ISidedInventory) te; - access = masquerade(sided, outputDirection.getOpposite().ordinal()); + access = InventoryUtil.masquerade(sided, outputDirection.getOpposite().ordinal()); } if(te instanceof IInventory) { @@ -90,15 +91,6 @@ public class CraneInserter extends BlockCraneBase implements IEnterableBlock { } } - public static int[] masquerade(ISidedInventory sided, int side) { - - if(sided instanceof TileEntityFurnace) { - return new int[] {1, 0}; - } - - return sided.getAccessibleSlotsFromSide(side); - } - public static ItemStack addToInventory(IInventory inv, int[] access, ItemStack toAdd, int side) { ISidedInventory sided = inv instanceof ISidedInventory ? (ISidedInventory) inv : null; diff --git a/src/main/java/com/hbm/blocks/rail/BlockRailWaypointSystem.java b/src/main/java/com/hbm/blocks/rail/BlockRailWaypointSystem.java index 9cf026cd1..2a5f8b9ff 100644 --- a/src/main/java/com/hbm/blocks/rail/BlockRailWaypointSystem.java +++ b/src/main/java/com/hbm/blocks/rail/BlockRailWaypointSystem.java @@ -5,18 +5,13 @@ import java.util.List; import com.hbm.blocks.BlockDummyable; import com.hbm.entity.train.EntityRailCarBase; -import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.PlayerInformPacket; import com.hbm.util.BobMathUtil; -import com.hbm.util.ChatBuilder; import com.hbm.util.ParticleUtil; import com.hbm.util.Tuple.Pair; import com.hbm.util.fauxpointtwelve.BlockPos; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.material.Material; import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.Vec3; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; diff --git a/src/main/java/com/hbm/crafting/ToolRecipes.java b/src/main/java/com/hbm/crafting/ToolRecipes.java index 5d1edf7e4..df95ca834 100644 --- a/src/main/java/com/hbm/crafting/ToolRecipes.java +++ b/src/main/java/com/hbm/crafting/ToolRecipes.java @@ -69,6 +69,7 @@ public class ToolRecipes { CraftingManager.addShapelessAuto(new ItemStack(ModItems.centri_stick, 1), new Object[] { ModItems.centrifuge_element, ModItems.energy_core, KEY_STICK }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.smashing_hammer, 1), new Object[] { "STS", "SPS", " P ", 'S', STEEL.block(), 'T', W.block(), 'P', ANY_PLASTIC.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.meteorite_sword, 1), new Object[] { " B", "GB ", "SG ", 'B', ModItems.blade_meteorite, 'G', GOLD.plate(), 'S', KEY_STICK }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.dwarven_pickaxe, 1), new Object[] { "CIC", " S ", " S ", 'C', CU.ingot(), 'I', IRON.ingot(), 'S', KEY_STICK }); //Drax CraftingManager.addRecipeAuto(new ItemStack(ModItems.drax, 1), new Object[] { "BDS", "CDC", "FMF", 'B', ModItems.starmetal_pickaxe, 'S', ModItems.starmetal_shovel, 'C', CO.ingot(), 'F', ModItems.fusion_core, 'D', DESH.ingot(), 'M', ModItems.motor_desh }); diff --git a/src/main/java/com/hbm/entity/projectile/EntityRubble.java b/src/main/java/com/hbm/entity/projectile/EntityRubble.java index 05459bcfd..b19f7263b 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityRubble.java +++ b/src/main/java/com/hbm/entity/projectile/EntityRubble.java @@ -6,8 +6,6 @@ import com.hbm.packet.ParticleBurstPacket; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.Block; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.projectile.EntityThrowable; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index 930675550..81875b605 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -392,15 +392,15 @@ public class OreDictManager { EUPH .nugget(nugget_euphemium) .ingot(ingot_euphemium) .dust(powder_euphemium) .block(block_euphemium); DNT .nugget(nugget_dineutronium) .ingot(ingot_dineutronium) .dust(powder_dineutronium) .block(block_dineutronium); FIBER .ingot(ingot_fiberglass) .block(block_fiberglass); - ASBESTOS .asbestos(1F) .ingot(ingot_asbestos) .dust(powder_asbestos) .block(block_asbestos) .ore(ore_asbestos, ore_gneiss_asbestos, basalt_asbestos, DictFrame.fromOne(ore_basalt, EnumBasaltOreType.ASBESTOS), DictFrame.fromOne(stone_resource, EnumStoneType.ASBESTOS)); + ASBESTOS .asbestos(1F) .ingot(ingot_asbestos) .dust(powder_asbestos) .block(block_asbestos) .ore(ore_asbestos, ore_gneiss_asbestos, DictFrame.fromOne(ore_basalt, EnumBasaltOreType.ASBESTOS), DictFrame.fromOne(stone_resource, EnumStoneType.ASBESTOS)); OSMIRIDIUM .nugget(nugget_osmiridium) .ingot(ingot_osmiridium); /* * DUST AND GEM ORES */ - S .dust(sulfur) .block(block_sulfur) .ore(ore_sulfur, ore_nether_sulfur, basalt_sulfur, DictFrame.fromOne(ore_basalt, EnumBasaltOreType.SULFUR), ore_meteor_sulfur, DictFrame.fromOne(stone_resource, EnumStoneType.SULFUR)) .oreNether(ore_nether_sulfur); + S .dust(sulfur) .block(block_sulfur) .ore(ore_sulfur, ore_nether_sulfur, DictFrame.fromOne(ore_basalt, EnumBasaltOreType.SULFUR), ore_meteor_sulfur, DictFrame.fromOne(stone_resource, EnumStoneType.SULFUR)) .oreNether(ore_nether_sulfur); KNO .dust(niter) .block(block_niter) .ore(ore_niter); - F .dust(fluorite) .block(block_fluorite) .ore(ore_fluorite, basalt_fluorite, DictFrame.fromOne(ore_basalt, EnumBasaltOreType.FLUORITE)); + F .dust(fluorite) .block(block_fluorite) .ore(ore_fluorite, DictFrame.fromOne(ore_basalt, EnumBasaltOreType.FLUORITE)); LIGNITE .gem(lignite) .dust(powder_lignite) .ore(ore_lignite); COALCOKE .gem(fromOne(coke, EnumCokeType.COAL)) .block(fromOne(block_coke, EnumCokeType.COAL)); PETCOKE .gem(fromOne(coke, EnumCokeType.PETROLEUM)) .block(fromOne(block_coke, EnumCokeType.PETROLEUM)); @@ -410,7 +410,7 @@ public class OreDictManager { CHLOROCALCITE .dust(powder_chlorocalcite); MOLYSITE .dust(powder_molysite) .ore(DictFrame.fromOne(ore_basalt, EnumBasaltOreType.MOLYSITE)); SODALITE .gem(gem_sodalite); - VOLCANIC .gem(gem_volcanic) .ore(basalt_gem, DictFrame.fromOne(ore_basalt, EnumBasaltOreType.GEM)); + VOLCANIC .gem(gem_volcanic) .ore(DictFrame.fromOne(ore_basalt, EnumBasaltOreType.GEM)); HEMATITE .ore(fromOne(stone_resource, EnumStoneType.HEMATITE)); MALACHITE .ore(fromOne(stone_resource, EnumStoneType.MALACHITE)); SLAG .block(block_slag); diff --git a/src/main/java/com/hbm/inventory/container/ContainerFurnaceBrick.java b/src/main/java/com/hbm/inventory/container/ContainerFurnaceBrick.java new file mode 100644 index 000000000..5492d2478 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerFurnaceBrick.java @@ -0,0 +1,78 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotCraftingOutput; +import com.hbm.tileentity.machine.TileEntityFurnaceBrick; +import com.hbm.util.InventoryUtil; + +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; +import net.minecraft.tileentity.TileEntityFurnace; + +public class ContainerFurnaceBrick extends Container { + + private TileEntityFurnaceBrick furnace; + + public ContainerFurnaceBrick(InventoryPlayer invPlayer, TileEntityFurnaceBrick tedf) { + furnace = tedf; + + //input + this.addSlotToContainer(new Slot(tedf, 0, 62, 35)); + //fuel + this.addSlotToContainer(new Slot(tedf, 1, 35, 17)); + //output + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 2, 116, 35)); + //ash + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 3, 35, 53)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); + } + } + + @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 <= 3) { + if(!this.mergeItemStack(var5, 3, this.inventorySlots.size(), true)) { + return null; + } + } else { + + if(!TileEntityFurnace.isItemFuel(var5)) { + if(!InventoryUtil.mergeItemStack(this.inventorySlots, var5, 0, 1, false)) + return null; + } else { + if(!this.mergeItemStack(var5, 1, 2, false) && !this.mergeItemStack(var5, 0, 1, false)) return null; + } + } + + if(var5.stackSize == 0) { + var4.putStack((ItemStack) null); + } else { + var4.onSlotChanged(); + } + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return furnace.isUseableByPlayer(player); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIFurnaceBrick.java b/src/main/java/com/hbm/inventory/gui/GUIFurnaceBrick.java new file mode 100644 index 000000000..31e360e39 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIFurnaceBrick.java @@ -0,0 +1,44 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerFurnaceBrick; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityFurnaceBrick; + +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIFurnaceBrick extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_furnace_brick.png"); + private TileEntityFurnaceBrick furnace; + + public GUIFurnaceBrick(InventoryPlayer invPlayer, TileEntityFurnaceBrick tile) { + super(new ContainerFurnaceBrick(invPlayer, tile)); + this.furnace = tile; + } + + protected void drawGuiContainerForegroundLayer(int p_146979_1_, int p_146979_2_) { + String name = this.furnace.hasCustomInventoryName() ? this.furnace.getInventoryName() : I18n.format(this.furnace.getInventoryName()); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0xffffff); + this.fontRendererObj.drawString(I18n.format("container.inventory", new Object[0]), 8, this.ySize - 96 + 2, 0xffffff); + } + + 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); + this.mc.getTextureManager().bindTexture(texture); + this.drawTexturedModalRect(guiLeft, guiTop, 0, 0, this.xSize, this.ySize); + + if(furnace.isInvalid() && furnace.getWorldObj().getTileEntity(furnace.xCoord, furnace.yCoord, furnace.zCoord) instanceof TileEntityFurnaceBrick) + furnace = (TileEntityFurnaceBrick) furnace.getWorldObj().getTileEntity(furnace.xCoord, furnace.yCoord, furnace.zCoord); + + if(this.furnace.burnTime > 0) { + int b = furnace.burnTime * 13 / furnace.maxBurnTime; + this.drawTexturedModalRect(guiLeft + 62, guiTop + 54 + 12 - b, 176, 12 - b, 14, b + 1); + int p = this.furnace.progress * 24 / 200; + this.drawTexturedModalRect(guiLeft + 85, guiTop + 34, 176, 14, p + 1, 16); + } + } +} diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 873b76d31..bbadae89c 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -2091,6 +2091,7 @@ public class ModItems { public static Item chlorophyte_pickaxe; public static Item mese_pickaxe; public static Item dnt_sword; + public static Item dwarven_pickaxe; public static Item meteorite_sword; public static Item meteorite_sword_seared; @@ -5321,6 +5322,10 @@ public class ModItems { dnt_sword = new ItemSwordAbility(12F, 0, matMese).setUnlocalizedName("dnt_sword").setTextureName(RefStrings.MODID + ":dnt_sword"); + ToolMaterial matDwarf = EnumHelper.addToolMaterial("HBM_DWARVEN", 2, 0, 4F, 0.0F, 10).setRepairItem(new ItemStack(ModItems.ingot_copper)); + dwarven_pickaxe = new ItemToolAbility(5F, -0.1, matDwarf, EnumToolType.MINER) + .addBreakAbility(new ToolAbility.HammerAbility(1)).setUnlocalizedName("dwarven_pickaxe").setMaxDamage(250).setTextureName(RefStrings.MODID + ":dwarven_pickaxe"); + ToolMaterial matMeteorite = EnumHelper.addToolMaterial("HBM_METEORITE", 4, 0, 50F, 0.0F, 200).setRepairItem(new ItemStack(ModItems.plate_paa)); meteorite_sword = new ItemSwordMeteorite(10F, 0, matMeteorite).setUnlocalizedName("meteorite_sword").setTextureName(RefStrings.MODID + ":meteorite_sword"); meteorite_sword_seared = new ItemSwordMeteorite(15F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_seared").setTextureName(RefStrings.MODID + ":meteorite_sword"); @@ -7466,6 +7471,7 @@ public class ModItems { GameRegistry.registerItem(cape_hidden, cape_hidden.getUnlocalizedName()); //Tools + GameRegistry.registerItem(dwarven_pickaxe, dwarven_pickaxe.getUnlocalizedName()); GameRegistry.registerItem(schrabidium_sword, schrabidium_sword.getUnlocalizedName()); GameRegistry.registerItem(schrabidium_hammer, schrabidium_hammer.getUnlocalizedName()); GameRegistry.registerItem(shimmer_sledge, shimmer_sledge.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/tool/ItemSatRelay.java b/src/main/java/com/hbm/items/tool/ItemSatRelay.java index 519befad2..ba040cbd0 100644 --- a/src/main/java/com/hbm/items/tool/ItemSatRelay.java +++ b/src/main/java/com/hbm/items/tool/ItemSatRelay.java @@ -1,16 +1,6 @@ package com.hbm.items.tool; import com.hbm.items.machine.ItemSatChip; -import com.hbm.lib.Library; -import com.hbm.saveddata.SatelliteSavedData; -import com.hbm.saveddata.satellites.Satellite; -import com.hbm.saveddata.satellites.Satellite.Interfaces; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; public class ItemSatRelay extends ItemSatChip { //Schrabby doesn't fucking know how this works so I HOPE it will create a new item that works without fucking everything up diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index d62c493c2..6fef046e3 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -325,6 +325,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.anvil_murky, 1), new Object[] { "UUU", "UAU", "UUU", 'U', ModItems.undefined, 'A', ModBlocks.anvil_steel }); addRecipeAuto(new ItemStack(ModBlocks.machine_fraction_tower), new Object[] { "H", "G", "H", 'H', STEEL.plateWelded(), 'G', ModBlocks.steel_grate }); addRecipeAuto(new ItemStack(ModBlocks.fraction_spacer), new Object[] { "BHB", 'H', ModItems.hull_big_steel, 'B', Blocks.iron_bars }); + addRecipeAuto(new ItemStack(ModBlocks.machine_furnace_brick_off), new Object[] { "III", "I I", "BBB", 'I', Items.brick, 'B', Blocks.stone }); addRecipeAuto(new ItemStack(ModBlocks.furnace_iron), new Object[] { "III", "IFI", "BBB", 'I', IRON.ingot(), 'F', Blocks.furnace, 'B', Blocks.stonebrick }); addRecipeAuto(new ItemStack(ModBlocks.machine_mixer), new Object[] { "PIP", "GCG", "PMP", 'P', STEEL.plate(), 'I', DURA.ingot(), 'G', KEY_ANYPANE, 'C', ModItems.circuit_copper, 'M', ModItems.motor }); addRecipeAuto(new ItemStack(ModBlocks.fan), new Object[] { "BPB", "PRP", "BPB", 'B', STEEL.bolt(), 'P', IRON.plate(), 'R', REDSTONE.dust() }); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 0e53b69ab..fc7d9bc9c 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1212,6 +1212,10 @@ public class MainRegistry { ignoreMappings.add("hbm:tile.reactor_computer"); ignoreMappings.add("hbm:tile.ff"); ignoreMappings.add("hbm:tile.muffler"); + ignoreMappings.add("hbm:tile.basalt_sulfur"); + ignoreMappings.add("hbm:tile.basalt_fluorite"); + ignoreMappings.add("hbm:tile.basalt_asbestos"); + ignoreMappings.add("hbm:tile.basalt_gem"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/packet/AuxButtonPacket.java b/src/main/java/com/hbm/packet/AuxButtonPacket.java index 922b1704a..ee636bda0 100644 --- a/src/main/java/com/hbm/packet/AuxButtonPacket.java +++ b/src/main/java/com/hbm/packet/AuxButtonPacket.java @@ -2,8 +2,6 @@ package com.hbm.packet; import com.hbm.config.MobConfig; import com.hbm.entity.mob.EntityDuck; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; import com.hbm.items.weapon.ItemMissile.PartSize; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityTickingBase; diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 1eec40138..3686a7b31 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -274,6 +274,7 @@ public class TileMappings { put(TileEntityHeaterElectric.class, "tileentity_electric_heater"); put(TileEntityHeaterHeatex.class, "tileentity_heater_heatex"); put(TileEntityFurnaceIron.class, "tileentity_furnace_iron"); + put(TileEntityFurnaceBrick.class, "tileentity_furnace_brick"); put(TileEntityFurnaceSteel.class, "tileentity_furnace_steel"); put(TileEntityFurnaceCombination.class, "tileentity_combination_oven"); put(TileEntityStirling.class, "tileentity_stirling"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceBrick.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceBrick.java new file mode 100644 index 000000000..f31af3b06 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceBrick.java @@ -0,0 +1,232 @@ +package com.hbm.tileentity.machine; + +import java.util.HashMap; + +import com.hbm.blocks.machine.MachineBrickFurnace; +import com.hbm.inventory.OreDictManager.DictFrame; +import com.hbm.inventory.container.ContainerFurnaceBrick; +import com.hbm.inventory.gui.GUIFurnaceBrick; +import com.hbm.items.ModItems; +import com.hbm.items.ItemEnums.EnumAshType; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.TileEntityMachineBase; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.inventory.Container; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.FurnaceRecipes; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntityFurnace; +import net.minecraft.world.World; + +public class TileEntityFurnaceBrick extends TileEntityMachineBase implements IGUIProvider { + + private static final int[] slotsTop = new int[] { 0 }; + private static final int[] slotsBottom = new int[] { 2, 1, 3 }; + private static final int[] slotsSides = new int[] {1}; + + public static HashMap burnSpeed = new HashMap(); + + static { + burnSpeed.put(Items.clay_ball, 4); + burnSpeed.put(ModItems.ball_fireclay, 4); + burnSpeed.put(Item.getItemFromBlock(Blocks.netherrack), 4); + burnSpeed.put(Item.getItemFromBlock(Blocks.cobblestone), 2); + burnSpeed.put(Item.getItemFromBlock(Blocks.sand), 2); + } + + public int burnTime; + public int maxBurnTime; + public int progress; + + public int ashLevelWood; + public int ashLevelCoal; + public int ashLevelMisc; + + public TileEntityFurnaceBrick() { + super(4); + } + + @Override + public String getName() { + return "container.furnaceBrick"; + } + + @Override + + public void updateEntity() { + + if(!worldObj.isRemote) { + boolean wasBurning = this.burnTime > 0; + boolean markDirty = false; + + if(this.burnTime > 0) { + this.burnTime--; + } + + if(this.burnTime != 0 || this.slots[1] != null && this.slots[0] != null) { + if(this.burnTime == 0 && this.canSmelt()) { + this.maxBurnTime = this.burnTime = TileEntityFurnace.getItemBurnTime(this.slots[1]); + + if(this.burnTime > 0) { + markDirty = true; + + if(this.slots[1] != null) { + this.slots[1].stackSize--; + + EnumAshType type = TileEntityFireboxBase.getAshFromFuel(slots[1]); + if(type == EnumAshType.WOOD) ashLevelWood += burnTime; + if(type == EnumAshType.COAL) ashLevelCoal += burnTime; + if(type == EnumAshType.MISC) ashLevelMisc += burnTime; + int threshold = 2000; + if(processAsh(ashLevelWood, EnumAshType.WOOD, threshold)) ashLevelWood -= threshold; + if(processAsh(ashLevelCoal, EnumAshType.COAL, threshold)) ashLevelCoal -= threshold; + if(processAsh(ashLevelMisc, EnumAshType.MISC, threshold)) ashLevelMisc -= threshold; + + if(this.slots[1].stackSize == 0) { + this.slots[1] = slots[1].getItem().getContainerItem(slots[1]); + } + } + } + } + + if(this.burnTime > 0 && this.canSmelt()) { + this.progress += this.getBurnSpeed(); + + if(this.progress >= 200) { + this.progress = 0; + this.smeltItem(); + markDirty = true; + } + } else { + this.progress = 0; + } + } + + if(wasBurning != this.burnTime > 0) { + markDirty = true; + MachineBrickFurnace.updateBlockState(this.burnTime > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord); + } + + if(markDirty) { + this.markDirty(); + } + + this.networkPackNT(15); + } + } + + public int getBurnSpeed() { + Integer speed = burnSpeed.get(slots[0].getItem()); + if(speed != null) return speed; + return 1; + } + + @Override + public boolean isItemValidForSlot(int slot, ItemStack stack) { + return slot >= 2 ? false : (slot == 1 ? TileEntityFurnace.getItemBurnTime(stack) > 0 : true); + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) { + return side == 0 ? slotsBottom : (side == 1 ? slotsTop : slotsSides); + } + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt(burnTime); + buf.writeInt(maxBurnTime); + buf.writeInt(progress); + } + + @Override public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.burnTime = buf.readInt(); + this.maxBurnTime = buf.readInt(); + this.progress = buf.readInt(); + } + + protected boolean processAsh(int level, EnumAshType type, int threshold) { + + if(level >= threshold) { + if(slots[3] == null) { + slots[3] = DictFrame.fromOne(ModItems.powder_ash, type); + return true; + } else if(slots[3].stackSize < slots[3].getMaxStackSize() && slots[3].getItem() == ModItems.powder_ash && slots[3].getItemDamage() == type.ordinal()) { + slots[3].stackSize++; + return true; + } + } + + return false; + } + + private boolean canSmelt() { + if(this.slots[0] == null) { + return false; + } else { + ItemStack itemstack = FurnaceRecipes.smelting().getSmeltingResult(this.slots[0]); + if(itemstack == null) + return false; + if(this.slots[2] == null) + return true; + if(!this.slots[2].isItemEqual(itemstack)) + return false; + int result = slots[2].stackSize + itemstack.stackSize; + return result <= getInventoryStackLimit() && result <= this.slots[2].getMaxStackSize(); + } + } + + public void smeltItem() { + if(this.canSmelt()) { + ItemStack itemstack = FurnaceRecipes.smelting().getSmeltingResult(this.slots[0]); + + if(this.slots[2] == null) { + this.slots[2] = itemstack.copy(); + } else if(this.slots[2].getItem() == itemstack.getItem()) { + this.slots[2].stackSize += itemstack.stackSize; + } + + --this.slots[0].stackSize; + + if(this.slots[0].stackSize <= 0) { + this.slots[0] = null; + } + } + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.burnTime = nbt.getInteger("burnTime"); + this.maxBurnTime = nbt.getInteger("maxBurn"); + this.progress = nbt.getInteger("progress"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setInteger("burnTime", this.burnTime); + nbt.setInteger("maxBurn", this.maxBurnTime); + nbt.setInteger("progress", this.progress); + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerFurnaceBrick(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIFurnaceBrick(player.inventory, this); + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java index b30350152..c85bb845d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java @@ -36,7 +36,7 @@ public class TileEntityFurnaceIron extends TileEntityMachineBase implements IGUI public int progress; public int processingTime; - public static final int baseTime = 200; + public static final int baseTime = 160; public ModuleBurnTime burnModule; @@ -63,7 +63,7 @@ public class TileEntityFurnaceIron extends TileEntityMachineBase implements IGUI if(!worldObj.isRemote) { UpgradeManager.eval(slots, 4, 4); - this.processingTime = baseTime - (100 * Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3) / 3); + this.processingTime = baseTime - ((baseTime / 2) * Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3) / 3); wasOn = false; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java index 321ea65dc..ac6265b3a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java @@ -29,6 +29,7 @@ import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.Compat; import com.hbm.util.EnumUtil; import com.hbm.util.I18nUtil; +import com.hbm.util.InventoryUtil; import com.hbm.util.ItemStackUtil; import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.util.fauxpointtwelve.DirPos; @@ -673,7 +674,7 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements if(inv instanceof ISidedInventory) { ISidedInventory sided = (ISidedInventory) inv; - access = CraneInserter.masquerade(sided, dir.ordinal()); + access = InventoryUtil.masquerade(sided, dir.ordinal()); } for(ItemStack item : items) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java index d4a1f7700..e2d9fc11f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java @@ -187,7 +187,6 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement if(level >= threshold) { if(slots[1] == null) { slots[1] = DictFrame.fromOne(ModItems.powder_ash, type); - ashLevelWood -= threshold; return true; } else if(slots[1].stackSize < slots[1].getMaxStackSize() && slots[1].getItem() == ModItems.powder_ash && slots[1].getItemDamage() == type.ordinal()) { slots[1].stackSize++; diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneGrabber.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneGrabber.java index cec453cd8..e5878bfb3 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCraneGrabber.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneGrabber.java @@ -9,6 +9,8 @@ import com.hbm.inventory.gui.GUICraneGrabber; import com.hbm.items.ModItems; import com.hbm.module.ModulePatternMatcher; import com.hbm.tileentity.IGUIProvider; +import com.hbm.util.InventoryUtil; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -81,7 +83,7 @@ public class TileEntityCraneGrabber extends TileEntityCraneBase implements IGUIP if(te instanceof ISidedInventory) { sided = (ISidedInventory) te; - access = CraneInserter.masquerade(sided, outputSide.getOpposite().ordinal()); + access = InventoryUtil.masquerade(sided, outputSide.getOpposite().ordinal()); } if(te instanceof IInventory) { diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneInserter.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneInserter.java index 9de4fb7fc..b98985bc2 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCraneInserter.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneInserter.java @@ -4,6 +4,8 @@ import com.hbm.blocks.network.CraneInserter; import com.hbm.inventory.container.ContainerCraneInserter; import com.hbm.inventory.gui.GUICraneInserter; import com.hbm.tileentity.IGUIProvider; +import com.hbm.util.InventoryUtil; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; @@ -42,7 +44,7 @@ public class TileEntityCraneInserter extends TileEntityCraneBase implements IGUI if(te instanceof ISidedInventory) { ISidedInventory sided = (ISidedInventory) te; //access = sided.getAccessibleSlotsFromSide(dir.ordinal()); - access = CraneInserter.masquerade(sided, outputSide.getOpposite().ordinal()); + access = InventoryUtil.masquerade(sided, outputSide.getOpposite().ordinal()); } if(te instanceof IInventory) { diff --git a/src/main/java/com/hbm/util/InventoryUtil.java b/src/main/java/com/hbm/util/InventoryUtil.java index 4e6a27661..97cc2bfe7 100644 --- a/src/main/java/com/hbm/util/InventoryUtil.java +++ b/src/main/java/com/hbm/util/InventoryUtil.java @@ -4,16 +4,27 @@ import java.util.List; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.recipes.anvil.AnvilRecipes.AnvilOutput; +import com.hbm.tileentity.machine.TileEntityFurnaceBrick; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.ISidedInventory; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntityFurnace; import net.minecraftforge.oredict.OreDictionary; //'t was about time public class InventoryUtil { + public static int[] masquerade(ISidedInventory sided, int side) { + + if(sided instanceof TileEntityFurnace) return new int[] {1, 0}; + if(sided instanceof TileEntityFurnaceBrick) return new int[] {1, 0, 3}; + + return sided.getAccessibleSlotsFromSide(side); + } + /** * Will attempt to cram a much of the given itemstack into the stack array as possible * The rest will be returned diff --git a/src/main/java/com/hbm/util/ItemStackUtil.java b/src/main/java/com/hbm/util/ItemStackUtil.java index 313e9bad3..1ab7af389 100644 --- a/src/main/java/com/hbm/util/ItemStackUtil.java +++ b/src/main/java/com/hbm/util/ItemStackUtil.java @@ -2,12 +2,17 @@ package com.hbm.util; import java.util.ArrayList; import java.util.List; +import java.util.Random; +import net.minecraft.block.Block; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.nbt.NBTTagString; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; import net.minecraftforge.oredict.OreDictionary; public class ItemStackUtil { @@ -161,4 +166,36 @@ public class ItemStackUtil { return list; } + + public static void spillItems(World world, int x, int y, int z, Block block, Random rand) { + IInventory tileentityfurnace = (IInventory) world.getTileEntity(x, y, z); + + if(tileentityfurnace != null) { + for(int slot = 0; slot < tileentityfurnace.getSizeInventory(); ++slot) { + ItemStack itemstack = tileentityfurnace.getStackInSlot(slot); + + if(itemstack != null) { + float oX = rand.nextFloat() * 0.8F + 0.1F; + float oY = rand.nextFloat() * 0.8F + 0.1F; + float oZ = rand.nextFloat() * 0.8F + 0.1F; + + while(itemstack.stackSize > 0) { + int j1 = rand.nextInt(21) + 10; + if(j1 > itemstack.stackSize) j1 = itemstack.stackSize; + itemstack.stackSize -= j1; + + EntityItem entityitem = new EntityItem(world, x + oX, y + oY, z + oZ, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); + if(itemstack.hasTagCompound()) entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy()); + + float motion = 0.05F; + entityitem.motionX = (float) rand.nextGaussian() * motion; + entityitem.motionY = (float) rand.nextGaussian() * motion + 0.2F; + entityitem.motionZ = (float) rand.nextGaussian() * motion; + world.spawnEntityInWorld(entityitem); + } + } + } + world.func_147453_f(x, y, z, block); + } + } } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index bc8b89113..83a7ea76a 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -323,6 +323,7 @@ container.factoryTitanium=Einfache Fabrik container.fluidtank=Tank container.forceField=Kraftfeldgenerator container.frackingTower=Hydraulischer Frackingturm +container.furnaceBrick=Ziegelofen container.furnaceCombination=Kombinationsofen container.furnaceIron=Eiserner Ofen container.furnaceSteel=Stahlofen @@ -1737,6 +1738,7 @@ item.drone.request.name=Logistikdrone item.drone_linker.name=Transportdronen-Linker item.ducttape.name=Klebeband item.dust.name=Staub +item.dwarven_pickaxe.name=Zwergenspitzhacke item.dynosphere_base.name=Blanke Dynosphere item.dynosphere_desh.name=Desh-Dynosphere item.dynosphere_desh_charged.name=Desh-Dynosphere (Geladen) @@ -3947,6 +3949,8 @@ tile.frozen_dirt.name=Gefrorene Erde tile.frozen_grass.name=Gefrorenes Gras tile.frozen_log.name=Gefrorener Baumstamm tile.frozen_planks.name=Gefrorene Holzbretter +tile.machine_furnace_brick_off.name=Ziegelofen +tile.machine_furnace_brick_on.name=Ziegelofen tile.furnace_combination.name=Kombinationsofen tile.furnace_combination.desc=Großer Ofen welcher Holzhokle und Kohlekoks herstellen kann.$Erzeugt flüssige Nebenprodukte.$Wärmetransferrate: ΔT*0.25 TU/t tile.furnace_iron.name=Eiserner Ofen diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 08cd0042d..ae9250687 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -682,6 +682,7 @@ container.fluidtank=Tank container.fileCabinet=Filing Cabinet container.forceField=Forcefield Emitter container.frackingTower=Hydraulic Fracking Tower +container.furnaceBrick=Bricked Furnace container.furnaceCombination=Combination Oven container.furnaceIron=Iron Furnace container.furnaceSteel=Steel Furnace @@ -2446,6 +2447,7 @@ item.dust.name=Dust item.dust.desc=I hate dust! item.dust.desc.P11=Another one bites the dust! item.dust_tiny.name=Tiny Pile of Dust +item.dwarven_pickaxe.name=Dwarven Pickaxe item.dynosphere_base.name=Blank Dynosphere item.dynosphere_desh.name=Desh Dynosphere item.dynosphere_desh_charged.name=Desh Dynosphere (Charged) @@ -4941,6 +4943,8 @@ tile.frozen_dirt.name=Frozen Dirt tile.frozen_grass.name=Frozen Grass tile.frozen_log.name=Frozen Log tile.frozen_planks.name=Frozen Planks +tile.machine_furnace_brick_off.name=Bricked Furnace +tile.machine_furnace_brick_on.name=Bricked Furnace tile.furnace_combination.name=Combination Oven tile.furnace_combination.desc=A large furnace that can produce charcoal and coal coke.$Produces fluid byproducts.$Heat transfer rate: ΔT*0.25 TU/t tile.furnace_iron.name=Iron Furnace diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_furnace_brick_bottom.png b/src/main/resources/assets/hbm/textures/blocks/machine_furnace_brick_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..6db8f00c0bfa2336faea0abde93bce673a23dfa7 GIT binary patch literal 405 zcmV;G0c!qChpU>apIOt=ZXO?9F;QfBHZ5ugfzU55-kH-V&9N*%0yWzdp@6YF>;`_dz z0y$?|YXH<*vDWGX?>#9cj4=Q#%Yt)`Qp!JqbzLc?0AP$E=R71DW3&J;oF_Rr=SV35 zV6COKHYD~oBw~zA$8jj4VD=A%NC1uY=VWG*Oie6ybWv1FwX=++f}#{k1+5gkRTqLg z|4bMD0{sUT6a=A&iVHVd6nF6wu+*xFZPO-cGWT&YNuVVb-{p7S_q)B{(H`EJO*(!+ zR?l#F_6GHrPY{}*;rZBklXehNFb&qWn~Yt%%f|8&xs0M6gaD}3dJ}-0A2Mp?$yhnw zuT^QdKIQ5bBUTnasxxF5^zh}+Hc^rw00B@mb=DiZxUNgB)kbO>hfEzyR{-cz;e`1I71mUuXRM zIRZaG3Jq0_B%bF18ZBvJ+xCGrwxr4TM(UVh7^#hp<4`J<_7De&dvF{F$8qpH57i60 zZkkmob)b!O$L)2XJkO(CE)OLB3zbR*qx(Dm0v6EJRKN@9?f?J)07*qoM6N<$f~}R~8fmrHG0PH(HeL;zz(*YfWsLHc6BD9v3r7o05fRb6?Iq&pDiP&y^nC zmCJQc9OWYG!&iDc9}VLbPO{G4Mpci&0^K^Df#g; znx;uUpYI0m?$UE{mfO)`nkJ@cV%s*NUBR-fuAna6J_T?yY8OD$G=y#26bgkM=t*mCWr{q~qHA|6FqBb_UJD-$hIZ6tolw?_kZQHDDJ_4Ye<(QH|cMm>LpA%2#jaQy5 zZSOKUcn?67W^}TQ>+&8xL)TqHyFcPiwao9qn2Sk3-8H16DNDd4PH6W>1@tlqSuis{ zmMt~&pfenEF%1|75p~zl9r`FKu(hUaG{YdG>KdXnDVhP&Bt^V=^)kP@$N-TGloDiF z#$uyE@9gY`AJ?_mXrRUSFC_EbmbP~}`S=#CB*xMR;~@NL@m|~B<$Qk+fZG+1Z=X)k zKYN!2v7Th4dCt*18vw4QQBp9NMpWnF=}o3wOE2jqNpm?l*L@tEB((G&uC@QQS>OJ*c=dE8>qjvK+oHVk zkmjd%NFiy55i?^hew;ArI_$MNEIfG5>E;HWrSang0KMDn0N_OlbHy>NqQ{rLI_)6h zXT3qSSRhK9j5`iP{W@upW*HKY043LEzuhAU0*<>rN(d%go1(1&u$3lEQUDG+JxZPn zz+}NeFRnczGZ`h5BBewv*SI;jDK!~N3Z#@6W3X+Tx!OGdiYCJ?xaj)!2P%V!#{=V# z$@JP(a_c6NSx$HJO%$JJ%YjtV(0Ts_B?ev)j{5WB^*%=Kz4?-s0 zoX3o%as~(OE{%RbJBX-wF7i4GRVknLsIl zF@~vXm9vwROFS-Ws#-;h?>i)e-KJO9Ir{hptt76c5w3&i^+)~k>N=;J8vtAzALHxR z5&HMp`DkJ#F{D|>{vaCwo~2Pz(CSB&2H`pL`wa6V#~mww7DrR?3OHH;u-D2D?6-S_ zX^N5pCG%c4Oz^BcBf5HfjVchwF>w;3mTN2k3tW}~w5^d#cUZI(aTKGZKxf}}kOIoK z#qp1DWavjRv#U?2Z@p!{JVCwFqYfmgK`V(Ak{kD*p-pD^)975G-0%Zt0Y@u7|2@3a zlYo?xN*LxjX!rp`79*gZi)H1ti)LF(F6L3IR!h$hZ d{srVg`VXY{5L$xox_kft002ovPDHLkV1f&-FL?j} literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_furnace_brick.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_furnace_brick.png new file mode 100644 index 0000000000000000000000000000000000000000..e2ffdd9f5301d7b6444989b91fc0825ddccb8e01 GIT binary patch literal 12826 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/dwarven_pickaxe.png b/src/main/resources/assets/hbm/textures/items/dwarven_pickaxe.png new file mode 100644 index 0000000000000000000000000000000000000000..a6540565c2304b2a65558dea1498355402155268 GIT binary patch literal 313 zcmV-90mlA`P) Date: Sat, 27 Jan 2024 17:44:15 +0100 Subject: [PATCH 7/9] return of chlorocalcite, cracked key --- changelog | 6 ++++ .../com/hbm/blocks/generic/BlockKeyhole.java | 30 ++++++++++-------- .../inventory/recipes/CombinationRecipes.java | 2 +- src/main/java/com/hbm/items/ModItems.java | 3 ++ src/main/java/com/hbm/main/MainRegistry.java | 2 ++ .../java/com/hbm/main/ModEventHandler.java | 5 +-- src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 3 ++ .../hbm/textures/items/key_red_cracked.png | Bin 0 -> 268 bytes 9 files changed, 36 insertions(+), 16 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/items/key_red_cracked.png diff --git a/changelog b/changelog index 2b9abf3b3..386439537 100644 --- a/changelog +++ b/changelog @@ -22,6 +22,10 @@ * Earlygame tool made from iron and copper * Has the harvest level of iron, a durability of just 250 but the AoE ability * Great for getting cobblestone quickly or making tunnels when you don't have desh or electric tools yet +* Cracked key + * A single-use item that can open red rooms like the red key, but does not work as a skeleton key for locks + * Spawns in dungeon chests or as a rare drop from hostile mobs + * Allows red rooms to be accessed without crafting the red key ## Changed * Large turbines, levis and geothermal heat exchangers now have their own sounds when operating @@ -40,6 +44,8 @@ * Dirt MREs are now just regular low-quality MREs made from latex packaging and some easily obtainable earlygame ingredients - wheat, rotten flesh and saplings (makes 4) * The recipe for the chemical plant has been slightly simplified (again) * Iron furnaces now have a 20% faster base smelting speed, making them complete operations in 8 seconds instead of 10 without upgrades +* Due to rising chlorine prices and a failing halogen market, the recipe of combination smelting chlorocalcite into chlorine and calcium has been added back + * For legacy reasons, the chlorocalcite processing chain involving chemical plants and electrolyzers will continue to work ## Fixed * Fixed basalt ores dropping their items with invalid metadata diff --git a/src/main/java/com/hbm/blocks/generic/BlockKeyhole.java b/src/main/java/com/hbm/blocks/generic/BlockKeyhole.java index 7c195a114..b1306c8cd 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockKeyhole.java +++ b/src/main/java/com/hbm/blocks/generic/BlockKeyhole.java @@ -51,19 +51,23 @@ public class BlockKeyhole extends BlockStone { @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.key_red && side != 0 && side != 1) { - if(world.isRemote) return true; - ForgeDirection dir = ForgeDirection.getOrientation(side); - generateRoom(world, x - dir.offsetX * 4, y - 2, z - dir.offsetZ * 4); - int b = 0; - if(side == 2) b = 1; - if(side == 5) b = 2; - if(side == 3) b = 3; - if(side == 4) b = 0; - ItemModDoor.placeDoorBlock(world, x, y - 1, z, b, ModBlocks.door_red); - world.playSoundAtEntity(player, "hbm:block.lockOpen", 1.0F, 1.0F); - player.triggerAchievement(MainRegistry.achRedRoom); - return true; + if(player.getHeldItem() != null) { + boolean cracked = player.getHeldItem().getItem() == ModItems.key_red_cracked; + if((player.getHeldItem().getItem() == ModItems.key_red || cracked) && side != 0 && side != 1) { + if(cracked) player.getHeldItem().stackSize--; + if(world.isRemote) return true; + ForgeDirection dir = ForgeDirection.getOrientation(side); + generateRoom(world, x - dir.offsetX * 4, y - 2, z - dir.offsetZ * 4); + int b = 0; + if(side == 2) b = 1; + if(side == 5) b = 2; + if(side == 3) b = 3; + if(side == 4) b = 0; + ItemModDoor.placeDoorBlock(world, x, y - 1, z, b, ModBlocks.door_red); + world.playSoundAtEntity(player, "hbm:block.lockOpen", 1.0F, 1.0F); + player.triggerAchievement(MainRegistry.achRedRoom); + return true; + } } return false; diff --git a/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java b/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java index 3c5b8bdd2..1fe93cf7e 100644 --- a/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java @@ -44,7 +44,7 @@ public class CombinationRecipes extends SerializableRecipe { recipes.put(LIGNITE.dust(), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.LIGNITE), new FluidStack(Fluids.COALCREOSOTE, 50))); recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.briquette, EnumBriquetteType.LIGNITE)), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.LIGNITE), new FluidStack(Fluids.COALCREOSOTE, 100))); - //recipes.put(CHLOROCALCITE.dust(), new Pair(new ItemStack(ModItems.powder_calcium), new FluidStack(Fluids.CHLORINE, 250))); + recipes.put(CHLOROCALCITE.dust(), new Pair(new ItemStack(ModItems.powder_calcium), new FluidStack(Fluids.CHLORINE, 250))); recipes.put(MOLYSITE.dust(), new Pair(new ItemStack(Items.iron_ingot), new FluidStack(Fluids.CHLORINE, 250))); recipes.put(CINNABAR.crystal(), new Pair(new ItemStack(ModItems.sulfur), new FluidStack(Fluids.MERCURY, 100))); recipes.put(new ComparableStack(Items.glowstone_dust), new Pair(new ItemStack(ModItems.sulfur), new FluidStack(Fluids.CHLORINE, 100))); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index bbadae89c..0c07cb805 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -2347,6 +2347,7 @@ public class ModItems { public static Item key; public static Item key_red; + public static Item key_red_cracked; public static Item key_kit; public static Item key_fake; public static Item pin; @@ -4645,6 +4646,7 @@ public class ModItems { key = new ItemKey().setUnlocalizedName("key").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":key"); key_red = new ItemCustomLore().setUnlocalizedName("key_red").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":key_red"); + key_red_cracked = new ItemCustomLore().setUnlocalizedName("key_red_cracked").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":key_red_cracked"); key_kit = new ItemCounterfitKeys().setUnlocalizedName("key_kit").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":key_pair"); key_fake = new ItemKey().setUnlocalizedName("key_fake").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":key_gold"); pin = new ItemCustomLore().setUnlocalizedName("pin").setMaxStackSize(8).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":pin"); @@ -6872,6 +6874,7 @@ public class ModItems { //Keys and Locks GameRegistry.registerItem(key, key.getUnlocalizedName()); GameRegistry.registerItem(key_red, key_red.getUnlocalizedName()); + GameRegistry.registerItem(key_red_cracked, key_red_cracked.getUnlocalizedName()); GameRegistry.registerItem(key_kit, key_kit.getUnlocalizedName()); GameRegistry.registerItem(key_fake, key_fake.getUnlocalizedName()); GameRegistry.registerItem(mech_key, mech_key.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index fc7d9bc9c..080f463d2 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -347,7 +347,9 @@ public class MainRegistry { ChestGenHooks.addItem(ChestGenHooks.MINESHAFT_CORRIDOR, new WeightedRandomChestContent(new ItemStack(ModItems.bathwater), 1, 1, 1)); ChestGenHooks.addItem(ChestGenHooks.MINESHAFT_CORRIDOR, new WeightedRandomChestContent(new ItemStack(ModItems.serum), 1, 1, 5)); ChestGenHooks.addItem(ChestGenHooks.MINESHAFT_CORRIDOR, new WeightedRandomChestContent(new ItemStack(ModItems.no9), 1, 1, 5)); + ChestGenHooks.addItem(ChestGenHooks.MINESHAFT_CORRIDOR, new WeightedRandomChestContent(new ItemStack(ModItems.key_red_cracked), 1, 1, 5)); ChestGenHooks.addItem(ChestGenHooks.DUNGEON_CHEST, new WeightedRandomChestContent(new ItemStack(ModItems.heart_piece), 1, 1, 1)); + ChestGenHooks.addItem(ChestGenHooks.DUNGEON_CHEST, new WeightedRandomChestContent(new ItemStack(ModItems.key_red_cracked), 1, 1, 5)); ChestGenHooks.addItem(ChestGenHooks.PYRAMID_DESERT_CHEST, new WeightedRandomChestContent(new ItemStack(ModItems.heart_piece), 1, 1, 1)); ChestGenHooks.addItem(ChestGenHooks.PYRAMID_JUNGLE_CHEST, new WeightedRandomChestContent(new ItemStack(ModItems.heart_piece), 1, 1, 1)); ChestGenHooks.addItem(ChestGenHooks.DUNGEON_CHEST, new WeightedRandomChestContent(new ItemStack(ModItems.scrumpy), 1, 1, 1)); diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index d0ab5626f..edd594447 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -322,8 +322,9 @@ public class ModEventHandler { event.entityLiving.dropItem(ModItems.bandaid, 1); } - if(event.entityLiving instanceof IMob && event.entityLiving.getRNG().nextInt(1000) == 0) { - event.entityLiving.dropItem(ModItems.heart_piece, 1); + if(event.entityLiving instanceof IMob) { + if(event.entityLiving.getRNG().nextInt(1000) == 0) event.entityLiving.dropItem(ModItems.heart_piece, 1); + if(event.entityLiving.getRNG().nextInt(250) == 0) event.entityLiving.dropItem(ModItems.key_red_cracked, 1); } if(event.entityLiving instanceof EntityCyberCrab && event.entityLiving.getRNG().nextInt(500) == 0) { diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 83a7ea76a..825ebcafd 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -2216,6 +2216,7 @@ item.key.name=Schlüssel item.key_fake.name=Gefälschter Schlüssel item.key_kit.name=Schlüssel-Imitationskit item.key_red.name=Roter Schlüssel +item.key_red_cracked.name=Zerbrochener Schlüssel item.kit_toolbox.name=Werkzeugkasten item.kit_toolbox_empty.name=Leerer Werkzeugkasten item.laser_crystal_bismuth.desc=Bismuth-Samarium-Uran-Thorium-Kristallmatrix diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index ae9250687..bd97239b7 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -2964,6 +2964,9 @@ item.key_kit.name=Key Imitation Kit item.key_red.name=Red Key item.key_red.desc=Explore the other side. item.key_red.desc.P11=§4e§r +item.key_red_cracked.name=Cracked Key +item.key_red_cracked.desc=??? +item.key_red.key_red_cracked.P11=§4???§r item.kit_toolbox.name=Toolbox item.kit_toolbox_empty.name=Empty Toolbox item.laser_crystal_bismuth.desc=Bismuth-Samarium-Uranium-Thorium crystal matrix diff --git a/src/main/resources/assets/hbm/textures/items/key_red_cracked.png b/src/main/resources/assets/hbm/textures/items/key_red_cracked.png new file mode 100644 index 0000000000000000000000000000000000000000..7abe81c3cc87b517928e415d6553bf3cc912ce3c GIT binary patch literal 268 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf zb9M3azTei2)sCxYZCRx`b^1pGJ+a406SW?(tUK@MqZaGJz`^l0r$DbLrqA-pg>DV@ zq8F_53#>(dJW)9ns;vFW%hl%h?sXxBiu;BCAIeL*zvjQs&WWOh+IC4&TrL(d3W@>q z8CsTqxUJ}xU?g@RD|+>;V@G$zZgag=bnzV9fnQ%6I|L-_mX`l5*dy+!k*0Cr|GHg3 P?=X0}`njxgN@xNA@_J|f literal 0 HcmV?d00001 From 67980608acb1bfcb21370d03d67602480b8ec8f0 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 28 Jan 2024 21:37:40 +0100 Subject: [PATCH 8/9] oops --- changelog | 6 + gradle.properties | 2 +- .../hbm/entity/effect/EntityFalloutRain.java | 15 +- .../hbm/entity/effect/EntityNukeTorex.java | 2 + .../container/ContainerFurnaceBrick.java | 3 +- .../java/com/hbm/items/tool/ItemPipette.java | 3 +- .../java/com/hbm/items/tool/ItemWandD.java | 10 +- src/main/java/com/hbm/lib/RefStrings.java | 2 +- .../com/hbm/main/ModEventHandlerRenderer.java | 30 +- .../entity/item/RenderFallingBlockNT.java | 42 +- .../render/tileentity/RenderConnector.java | 1 + .../hbm/render/tileentity/RenderPylon.java | 2 + .../render/tileentity/RenderPylonLarge.java | 1 + .../storage/TileEntityMachineFluidTank.java | 2 + src/main/java/com/hbm/util/TrackerUtil.java | 2 +- .../hbm/models/machines/hydrotreater.obj | 2311 +++++++++++++++++ .../textures/models/machines/hydrotreater.png | Bin 0 -> 941 bytes 17 files changed, 2381 insertions(+), 53 deletions(-) create mode 100644 src/main/resources/assets/hbm/models/machines/hydrotreater.obj create mode 100644 src/main/resources/assets/hbm/textures/models/machines/hydrotreater.png diff --git a/changelog b/changelog index 386439537..265da8cbc 100644 --- a/changelog +++ b/changelog @@ -46,6 +46,7 @@ * Iron furnaces now have a 20% faster base smelting speed, making them complete operations in 8 seconds instead of 10 without upgrades * Due to rising chlorine prices and a failing halogen market, the recipe of combination smelting chlorocalcite into chlorine and calcium has been added back * For legacy reasons, the chlorocalcite processing chain involving chemical plants and electrolyzers will continue to work +* Outer crater biomes can no longer override inner crater biomes, allowing craters to be "cleaned" by nuking them again with lower yield weapons ## Fixed * Fixed basalt ores dropping their items with invalid metadata @@ -53,3 +54,8 @@ * Fixed an issue where repeatedly opening and closing certain doors would cause their sound loop to get stuck running forever * Fixed radar screens behaving weirdly when out of then intended range. The max interaction range for radars is now infinite, and radars will send a second information packet to players near connected radars * Fixed very rare bug where waiting for wood ash to build up in the wood burner and then clearing the slot will remove twice as much ash on the internal counter for the initial ash item created +* Fixed crater biome fog tinting applying even if there is no nearby crater biome, causing oddities like underground fog being all white instead of being dark as it should be +* Crater biome fog no longer applies underwater, fixing an issue where being in water would cause the fog to be white instead of water-colored +* Fixed "pipette not empty" message crashing servers +* Fixed crash caused by certain modded blocks like Thermal's lumium lights being turned into falling blocks by impulse grenades or nuke aftereffects +* Fixed receiver subscription persisting when 256k tanks explode, causing them to infinitely receive and the void fluids diff --git a/gradle.properties b/gradle.properties index 211ed111d..d6e5796c3 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=4851 +mod_build_number=4858 credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\ diff --git a/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java b/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java index 458419d3d..5ba2952f4 100644 --- a/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java +++ b/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java @@ -64,7 +64,7 @@ public class EntityFalloutRain extends Entity { for(int z = chunkPosZ << 4; z <= (chunkPosZ << 4) + 16; z++) { double percent = Math.hypot(x - posX, z - posZ) * 100 / getScale(); stomp(x, z, percent); - BiomeGenBase biome = getBiomeChange(percent, getScale()); + BiomeGenBase biome = getBiomeChange(percent, getScale(), worldObj.getBiomeGenForCoords(x, z)); if(biome != null) { WorldUtil.setBiome(worldObj, x, z, biome); biomeModified = true; @@ -84,7 +84,7 @@ public class EntityFalloutRain extends Entity { if(distance <= getScale()) { double percent = distance * 100 / getScale(); stomp(x, z, percent); - BiomeGenBase biome = getBiomeChange(percent, getScale()); + BiomeGenBase biome = getBiomeChange(percent, getScale(), worldObj.getBiomeGenForCoords(x, z)); if(biome != null) { WorldUtil.setBiome(worldObj, x, z, biome); biomeModified = true; @@ -114,11 +114,14 @@ public class EntityFalloutRain extends Entity { } } - public static BiomeGenBase getBiomeChange(double dist, int scale) { + public static BiomeGenBase getBiomeChange(double dist, int scale, BiomeGenBase original) { if(!WorldConfig.enableCraterBiomes) return null; - if(scale >= 150 && dist < 15) return BiomeGenCraterBase.craterInnerBiome; - if(scale >= 100 && dist < 55) return BiomeGenCraterBase.craterBiome; - if(scale >= 25) return BiomeGenCraterBase.craterOuterBiome; + if(scale >= 150 && dist < 15) + return BiomeGenCraterBase.craterInnerBiome; + if(scale >= 100 && dist < 55 && original != BiomeGenCraterBase.craterInnerBiome) + return BiomeGenCraterBase.craterBiome; + if(scale >= 25 && original != BiomeGenCraterBase.craterInnerBiome && original != BiomeGenCraterBase.craterBiome) + return BiomeGenCraterBase.craterOuterBiome; return null; } diff --git a/src/main/java/com/hbm/entity/effect/EntityNukeTorex.java b/src/main/java/com/hbm/entity/effect/EntityNukeTorex.java index 628416174..1cb44d301 100644 --- a/src/main/java/com/hbm/entity/effect/EntityNukeTorex.java +++ b/src/main/java/com/hbm/entity/effect/EntityNukeTorex.java @@ -552,6 +552,7 @@ public class EntityNukeTorex extends Entity { public static void statFac(World world, double x, double y, double z, float scale) { EntityNukeTorex torex = new EntityNukeTorex(world).setScale(MathHelper.clamp_float((float) BobMathUtil.squirt(scale * 0.01) * 1.5F, 0.5F, 5F)); torex.setPosition(x, y, z); + torex.forceSpawn = true; world.spawnEntityInWorld(torex); TrackerUtil.setTrackingRange(world, torex, 1000); } @@ -559,6 +560,7 @@ public class EntityNukeTorex extends Entity { public static void statFacBale(World world, double x, double y, double z, float scale) { EntityNukeTorex torex = new EntityNukeTorex(world).setScale(MathHelper.clamp_float((float) BobMathUtil.squirt(scale * 0.01) * 1.5F, 0.5F, 5F)).setType(1); torex.setPosition(x, y, z); + torex.forceSpawn = true; world.spawnEntityInWorld(torex); TrackerUtil.setTrackingRange(world, torex, 1000); } diff --git a/src/main/java/com/hbm/inventory/container/ContainerFurnaceBrick.java b/src/main/java/com/hbm/inventory/container/ContainerFurnaceBrick.java index 5492d2478..6c362144f 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerFurnaceBrick.java +++ b/src/main/java/com/hbm/inventory/container/ContainerFurnaceBrick.java @@ -1,6 +1,7 @@ package com.hbm.inventory.container; import com.hbm.inventory.SlotCraftingOutput; +import com.hbm.inventory.SlotSmelting; import com.hbm.tileentity.machine.TileEntityFurnaceBrick; import com.hbm.util.InventoryUtil; @@ -23,7 +24,7 @@ public class ContainerFurnaceBrick extends Container { //fuel this.addSlotToContainer(new Slot(tedf, 1, 35, 17)); //output - this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 2, 116, 35)); + this.addSlotToContainer(new SlotSmelting(invPlayer.player, tedf, 2, 116, 35)); //ash this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 3, 35, 53)); diff --git a/src/main/java/com/hbm/items/tool/ItemPipette.java b/src/main/java/com/hbm/items/tool/ItemPipette.java index b7829ae2c..110dee982 100644 --- a/src/main/java/com/hbm/items/tool/ItemPipette.java +++ b/src/main/java/com/hbm/items/tool/ItemPipette.java @@ -16,6 +16,7 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.IIcon; import net.minecraft.world.World; @@ -92,7 +93,7 @@ public class ItemPipette extends Item implements IFillableItem { stack.stackTagCompound.setShort("capacity", (short) a); player.addChatMessage(new ChatComponentText(a + "/" + this.getMaxFill() + "mB")); } else { - player.addChatMessage(new ChatComponentText(I18nUtil.resolveKey("desc.item.pipette.noEmpty"))); + player.addChatMessage(new ChatComponentTranslation("desc.item.pipette.noEmpty")); } } return stack; diff --git a/src/main/java/com/hbm/items/tool/ItemWandD.java b/src/main/java/com/hbm/items/tool/ItemWandD.java index 8d642887d..482b03486 100644 --- a/src/main/java/com/hbm/items/tool/ItemWandD.java +++ b/src/main/java/com/hbm/items/tool/ItemWandD.java @@ -4,10 +4,6 @@ import java.util.List; import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.lib.Library; -import com.hbm.util.BobMathUtil; -import com.hbm.util.TrackerUtil; -import com.hbm.world.WorldUtil; -import com.hbm.world.biome.BiomeGenCraterBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -71,11 +67,7 @@ public class ItemWandD extends Item { if(!del.isEmpty()) { for(EntityNukeTorex torex : del) torex.setDead(); } else { - EntityNukeTorex torex = new EntityNukeTorex(world); - torex.setPositionAndRotation(pos.blockX, pos.blockY + 1, pos.blockZ, 0, 0); - torex.setScale((float) BobMathUtil.squirt( 1.5 ) * 1.5F); - world.spawnEntityInWorld(torex); - TrackerUtil.setTrackingRange(world, torex, 1000); + EntityNukeTorex.statFac(world, pos.blockX, pos.blockY + 1, pos.blockZ, 150); } /*EntityTracker entitytracker = ((WorldServer) world).getEntityTracker(); diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 49b97021c..713dc1565 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 (4851)"; + public static final String VERSION = "1.0.27 BETA (4858)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java index 1d589bf3a..7e2dc368a 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java +++ b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java @@ -16,6 +16,7 @@ import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.TickEvent.WorldTickEvent; import net.minecraft.block.Block; +import net.minecraft.block.material.Material; import net.minecraft.client.Minecraft; import net.minecraft.client.model.ModelRenderer; import net.minecraft.client.renderer.RenderBlocks; @@ -377,10 +378,14 @@ public class ModEventHandlerRenderer { public void tintFog(FogColors event) { EntityPlayer player = MainRegistry.proxy.me(); - Vec3 color = getFogBlendColor(player.worldObj, (int) Math.floor(player.posX), (int) Math.floor(player.posZ), event.renderPartialTicks); - event.red = (float) color.xCoord; - event.green = (float) color.yCoord; - event.blue = (float) color.zCoord; + if(player.worldObj.getBlock((int) Math.floor(player.posX), (int) Math.floor(player.posY), (int) Math.floor(player.posZ)).getMaterial() != Material.water) { + Vec3 color = getFogBlendColor(player.worldObj, (int) Math.floor(player.posX), (int) Math.floor(player.posZ), event.red, event.green, event.blue, event.renderPartialTicks); + if(color != null) { + event.red = (float) color.xCoord; + event.green = (float) color.yCoord; + event.blue = (float) color.zCoord; + } + } float soot = (float) (renderSoot - RadiationConfig.sootFogThreshold); float sootColor = 0.15F; @@ -408,9 +413,10 @@ public class ModEventHandlerRenderer { private static int fogX; private static int fogZ; private static Vec3 fogRGBMultiplier; + private static boolean doesBiomeApply = false; /** Same procedure as getting the blended sky color but for fog */ - public static Vec3 getFogBlendColor(World world, int playerX, int playerZ, double partialTicks) { + public static Vec3 getFogBlendColor(World world, int playerX, int playerZ, float red, float green, float blue, double partialTicks) { if(playerX == fogX && playerZ == fogZ && fogInit) return fogRGBMultiplier; @@ -428,11 +434,12 @@ public class ModEventHandlerRenderer { float b = 0F; int divider = 0; + doesBiomeApply = false; for(int x = -distance; x <= distance; x++) { for(int z = -distance; z <= distance; z++) { BiomeGenBase biome = world.getBiomeGenForCoords(playerX + x, playerZ + z); - Vec3 color = getBiomeFogColors(world, biome, partialTicks); + Vec3 color = getBiomeFogColors(world, biome, red, green, blue, partialTicks); r += color.xCoord; g += color.yCoord; b += color.zCoord; @@ -443,17 +450,12 @@ public class ModEventHandlerRenderer { fogX = playerX; fogZ = playerZ; - fogRGBMultiplier = Vec3.createVectorHelper(r / divider, g / divider, b / divider); + if(doesBiomeApply) fogRGBMultiplier = Vec3.createVectorHelper(r / divider, g / divider, b / divider); return fogRGBMultiplier; } /** Returns the current biome's fog color adjusted for brightness if in a crater, or the world's cached fog color if not */ - public static Vec3 getBiomeFogColors(World world, BiomeGenBase biome, double partialTicks) { - - Vec3 worldFog = world.getFogColor((float) partialTicks); - double r = worldFog.xCoord; - double g = worldFog.yCoord; - double b = worldFog.zCoord; + public static Vec3 getBiomeFogColors(World world, BiomeGenBase biome, float r, float g, float b, double partialTicks) { if(biome instanceof BiomeGenCraterBase) { int color = biome.getSkyColorByTemp(biome.temperature); @@ -466,6 +468,8 @@ public class ModEventHandlerRenderer { r *= skyBrightness; g *= skyBrightness; b *= skyBrightness; + + doesBiomeApply = true; } return Vec3.createVectorHelper(r, g, b); diff --git a/src/main/java/com/hbm/render/entity/item/RenderFallingBlockNT.java b/src/main/java/com/hbm/render/entity/item/RenderFallingBlockNT.java index e42ebd0f2..ad73dcc96 100644 --- a/src/main/java/com/hbm/render/entity/item/RenderFallingBlockNT.java +++ b/src/main/java/com/hbm/render/entity/item/RenderFallingBlockNT.java @@ -32,27 +32,29 @@ public class RenderFallingBlockNT extends Render { int iY = MathHelper.floor_double(entity.posY); int iZ = MathHelper.floor_double(entity.posZ); - if(block != null && block != world.getBlock(iX, iY, iZ)) { - GL11.glPushMatrix(); - GL11.glTranslated(x, y, z); - this.bindEntityTexture(entity); - GL11.glDisable(GL11.GL_LIGHTING); - - this.renderBlocks.blockAccess = world; - - if(block instanceof BlockFallingNT && ((BlockFallingNT) block).shouldOverrideRenderer()) { - Tessellator tessellator = Tessellator.instance; - tessellator.startDrawingQuads(); - ((BlockFallingNT) block).overrideRenderer(entity, renderBlocks, tessellator); - tessellator.draw(); - } else { - this.renderBlocks.setRenderBoundsFromBlock(block); - this.renderBlocks.renderBlockSandFalling(block, world, iX, iY, iZ, entity.getDataWatcher().getWatchableObjectInt(11)); + GL11.glPushMatrix(); + try { + if(block != null && block != world.getBlock(iX, iY, iZ)) { + GL11.glTranslated(x, y, z); + this.bindEntityTexture(entity); + GL11.glDisable(GL11.GL_LIGHTING); + + this.renderBlocks.blockAccess = world; + + if(block instanceof BlockFallingNT && ((BlockFallingNT) block).shouldOverrideRenderer()) { + Tessellator tessellator = Tessellator.instance; + tessellator.startDrawingQuads(); + ((BlockFallingNT) block).overrideRenderer(entity, renderBlocks, tessellator); + tessellator.draw(); + } else { + this.renderBlocks.setRenderBoundsFromBlock(block); + this.renderBlocks.renderBlockSandFalling(block, world, iX, iY, iZ, entity.getDataWatcher().getWatchableObjectInt(11)); + } + + GL11.glEnable(GL11.GL_LIGHTING); } - - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glPopMatrix(); - } + } catch(Exception ex) { } + GL11.glPopMatrix(); } protected ResourceLocation getEntityTexture(EntityFallingBlockNT entity) { diff --git a/src/main/java/com/hbm/render/tileentity/RenderConnector.java b/src/main/java/com/hbm/render/tileentity/RenderConnector.java index bbd6b0c5e..0c829b8ea 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderConnector.java +++ b/src/main/java/com/hbm/render/tileentity/RenderConnector.java @@ -12,6 +12,7 @@ public class RenderConnector extends RenderPylonBase { @Override public void renderTileEntityAt(TileEntity te, double x, double y, double z, float interp) { TileEntityConnector con = (TileEntityConnector) te; + GL11.glEnable(GL11.GL_LIGHTING); GL11.glPushMatrix(); diff --git a/src/main/java/com/hbm/render/tileentity/RenderPylon.java b/src/main/java/com/hbm/render/tileentity/RenderPylon.java index f36a62bbf..1256b9d6a 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderPylon.java +++ b/src/main/java/com/hbm/render/tileentity/RenderPylon.java @@ -23,6 +23,8 @@ public class RenderPylon extends RenderPylonBase { public void renderTileEntityAt(TileEntity te, double x, double y, double z, float f) { TileEntityPylon pyl = (TileEntityPylon)te; + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPushMatrix(); GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F - ((1F / 16F) * 14F), (float) z + 0.5F); GL11.glRotatef(180, 0F, 0F, 1F); diff --git a/src/main/java/com/hbm/render/tileentity/RenderPylonLarge.java b/src/main/java/com/hbm/render/tileentity/RenderPylonLarge.java index a5fca8bb9..8df4d64fb 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderPylonLarge.java +++ b/src/main/java/com/hbm/render/tileentity/RenderPylonLarge.java @@ -14,6 +14,7 @@ public class RenderPylonLarge extends RenderPylonBase { public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { GL11.glPushMatrix(); GL11.glTranslated(x + 0.5, y, z + 0.5); + GL11.glEnable(GL11.GL_LIGHTING); switch(tile.getBlockMetadata() - BlockDummyable.offset) { case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java index ebb5b49e1..5e34651e2 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java @@ -128,6 +128,8 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements tank.loadTank(2, 3, slots); tank.setType(0, 1, slots); + } else { + for(DirPos pos : getConPos()) this.tryUnsubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ()); } byte comp = this.getComparatorPower(); //comparator shit diff --git a/src/main/java/com/hbm/util/TrackerUtil.java b/src/main/java/com/hbm/util/TrackerUtil.java index 62140046e..5990c8b21 100644 --- a/src/main/java/com/hbm/util/TrackerUtil.java +++ b/src/main/java/com/hbm/util/TrackerUtil.java @@ -47,7 +47,7 @@ public class TrackerUtil { if(world instanceof WorldServer) { WorldServer server = (WorldServer) world; EntityTrackerEntry entry = getTrackerEntry(server, e.getEntityId()); - entry.blocksDistanceThreshold = range; + if(entry != null) entry.blocksDistanceThreshold = range; } } } diff --git a/src/main/resources/assets/hbm/models/machines/hydrotreater.obj b/src/main/resources/assets/hbm/models/machines/hydrotreater.obj new file mode 100644 index 000000000..ff351449e --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/hydrotreater.obj @@ -0,0 +1,2311 @@ +# Blender v2.79 (sub 0) OBJ File: 'hydrotreater.blend' +# www.blender.org +o Plane +v -1.500000 0.000000 1.500000 +v 1.500000 0.000000 1.500000 +v -1.500000 0.000000 -1.500000 +v 1.500000 0.000000 -1.500000 +v -1.500000 1.000000 1.500000 +v 1.500000 1.000000 1.500000 +v -1.500000 1.000000 -1.500000 +v 1.500000 1.000000 -1.500000 +v 1.500000 0.125000 1.375000 +v 1.500000 0.125000 -1.375000 +v 1.500000 0.875000 1.375000 +v 1.500000 0.875000 -1.375000 +v 1.375000 0.125000 1.375000 +v 1.375000 0.125000 -1.375000 +v 1.375000 0.875000 1.375000 +v 1.375000 0.875000 -1.375000 +v -1.500000 0.125000 -1.375000 +v -1.500000 0.125000 1.375000 +v -1.500000 0.875000 -1.375000 +v -1.500000 0.875000 1.375000 +v -1.375000 0.125000 -1.375000 +v -1.375000 0.125000 1.375000 +v -1.375000 0.875000 -1.375000 +v -1.375000 0.875000 1.375000 +v 1.375000 0.125000 -1.500000 +v -1.375000 0.125000 -1.500000 +v 1.375000 0.875000 -1.500000 +v -1.375000 0.875000 -1.500000 +v 1.375000 0.125000 -1.375000 +v -1.375000 0.125000 -1.375000 +v 1.375000 0.875000 -1.375000 +v -1.375000 0.875000 -1.375000 +v -1.375000 0.125000 1.500000 +v 1.375000 0.125000 1.500000 +v -1.375000 0.875000 1.500000 +v 1.375000 0.875000 1.500000 +v -1.375000 0.125000 1.375000 +v 1.375000 0.125000 1.375000 +v -1.375000 0.875000 1.375000 +v 1.375000 0.875000 1.375000 +v 0.000000 6.000000 -1.500000 +v -0.574025 6.000000 -1.385819 +v -1.060660 6.000000 -1.060660 +v -1.385819 6.000000 -0.574025 +v -1.500000 6.000000 0.000000 +v -1.385819 6.000000 0.574025 +v -1.060660 6.000000 1.060660 +v -0.574025 6.000000 1.385819 +v -0.000000 6.000000 1.500000 +v 0.574025 6.000000 1.385819 +v 1.060660 6.000000 1.060660 +v 1.385819 6.000000 0.574025 +v 1.500000 6.000000 0.000000 +v 1.385819 6.000000 -0.574025 +v 1.060660 6.000000 -1.060660 +v 0.574024 6.000000 -1.385820 +v 0.000000 5.500000 -1.500000 +v -0.574025 5.500000 -1.385819 +v -1.060660 5.500000 -1.060660 +v -1.385819 5.500000 -0.574025 +v -1.500000 5.500000 0.000000 +v -1.385819 5.500000 0.574025 +v -1.060660 5.500000 1.060660 +v -0.574025 5.500000 1.385819 +v -0.000000 5.500000 1.500000 +v 0.574025 5.500000 1.385819 +v 1.060660 5.500000 1.060660 +v 1.385819 5.500000 0.574025 +v 1.500000 5.500000 0.000000 +v 1.385819 5.500000 -0.574025 +v 1.060660 5.500000 -1.060660 +v 0.574024 5.500000 -1.385820 +v -0.000000 6.000000 -1.125000 +v -0.430519 6.000000 -1.039364 +v -0.795495 6.000000 -0.795495 +v -1.039364 6.000000 -0.430519 +v -1.125000 6.000000 0.000000 +v -1.039364 6.000000 0.430519 +v -0.795495 6.000000 0.795495 +v -0.430519 6.000000 1.039364 +v -0.000000 6.000000 1.125000 +v 0.430519 6.000000 1.039365 +v 0.795495 6.000000 0.795496 +v 1.039364 6.000000 0.430519 +v 1.125000 6.000000 0.000000 +v 1.039364 6.000000 -0.430519 +v 0.795495 6.000000 -0.795496 +v 0.430518 6.000000 -1.039365 +v -0.000000 7.000000 -0.750000 +v -0.287013 7.000000 -0.692910 +v -0.530330 7.000000 -0.530330 +v -0.692910 7.000000 -0.287013 +v -0.750000 7.000000 0.000000 +v -0.692910 7.000000 0.287013 +v -0.530330 7.000000 0.530330 +v -0.287013 7.000000 0.692910 +v -0.000000 7.000000 0.750000 +v 0.287012 7.000000 0.692910 +v 0.530330 7.000000 0.530330 +v 0.692909 7.000000 0.287013 +v 0.750000 7.000000 0.000000 +v 0.692909 7.000000 -0.287013 +v 0.530330 7.000000 -0.530330 +v 0.287012 7.000000 -0.692910 +v 0.000000 2.000000 -1.500000 +v -0.574025 2.000000 -1.385819 +v -1.060660 2.000000 -1.060660 +v -1.385819 2.000000 -0.574025 +v -1.500000 2.000000 0.000000 +v -1.385819 2.000000 0.574025 +v -1.060660 2.000000 1.060660 +v -0.574025 2.000000 1.385819 +v -0.000000 2.000000 1.500000 +v 0.574025 2.000000 1.385819 +v 1.060660 2.000000 1.060660 +v 1.385819 2.000000 0.574025 +v 1.500000 2.000000 0.000000 +v 1.385819 2.000000 -0.574025 +v 1.060660 2.000000 -1.060660 +v 0.574024 2.000000 -1.385820 +v 0.000000 2.500000 -1.500000 +v -0.574025 2.500000 -1.385819 +v -1.060660 2.500000 -1.060660 +v -1.385819 2.500000 -0.574025 +v -1.500000 2.500000 0.000000 +v -1.385819 2.500000 0.574025 +v -1.060660 2.500000 1.060660 +v -0.574025 2.500000 1.385819 +v -0.000000 2.500000 1.500000 +v 0.574025 2.500000 1.385819 +v 1.060660 2.500000 1.060660 +v 1.385819 2.500000 0.574025 +v 1.500000 2.500000 0.000000 +v 1.385819 2.500000 -0.574025 +v 1.060660 2.500000 -1.060660 +v 0.574024 2.500000 -1.385820 +v -0.000000 2.500000 -1.375000 +v -0.526190 2.500000 -1.270334 +v -0.972272 2.500000 -0.972272 +v -1.270334 2.500000 -0.526190 +v -1.375000 2.500000 0.000000 +v -1.270334 2.500000 0.526190 +v -0.972272 2.500000 0.972272 +v -0.526190 2.500000 1.270334 +v -0.000000 2.500000 1.375000 +v 0.526189 2.500000 1.270334 +v 0.972272 2.500000 0.972272 +v 1.270334 2.500000 0.526190 +v 1.375000 2.500000 0.000000 +v 1.270334 2.500000 -0.526190 +v 0.972271 2.500000 -0.972272 +v 0.526189 2.500000 -1.270335 +v -0.000000 5.500000 -1.375000 +v -0.526190 5.500000 -1.270334 +v -0.972272 5.500000 -0.972272 +v -1.270334 5.500000 -0.526190 +v -1.375000 5.500000 0.000000 +v -1.270334 5.500000 0.526190 +v -0.972272 5.500000 0.972272 +v -0.526190 5.500000 1.270334 +v -0.000000 5.500000 1.375000 +v 0.526189 5.500000 1.270334 +v 0.972272 5.500000 0.972272 +v 1.270334 5.500000 0.526190 +v 1.375000 5.500000 0.000000 +v 1.270334 5.500000 -0.526190 +v 0.972271 5.500000 -0.972272 +v 0.526189 5.500000 -1.270335 +v -0.000000 2.000000 -1.125000 +v -0.430519 2.000000 -1.039364 +v -0.795495 2.000000 -0.795495 +v -1.039364 2.000000 -0.430519 +v -1.125000 2.000000 0.000000 +v -1.039364 2.000000 0.430519 +v -0.795495 2.000000 0.795495 +v -0.430519 2.000000 1.039364 +v -0.000000 2.000000 1.125000 +v 0.430519 2.000000 1.039365 +v 0.795495 2.000000 0.795496 +v 1.039364 2.000000 0.430519 +v 1.125000 2.000000 0.000000 +v 1.039364 2.000000 -0.430519 +v 0.795495 2.000000 -0.795496 +v 0.430518 2.000000 -1.039365 +v -0.000000 1.000000 -1.125000 +v -0.430519 1.000000 -1.039364 +v -0.795495 1.000000 -0.795495 +v -1.039364 1.000000 -0.430519 +v -1.125000 1.000000 0.000000 +v -1.039364 1.000000 0.430519 +v -0.795495 1.000000 0.795495 +v -0.430519 1.000000 1.039364 +v -0.000000 1.000000 1.125000 +v 0.430519 1.000000 1.039365 +v 0.795495 1.000000 0.795496 +v 1.039364 1.000000 0.430519 +v 1.125000 1.000000 0.000000 +v 1.039364 1.000000 -0.430519 +v 0.795495 1.000000 -0.795496 +v 0.430518 1.000000 -1.039365 +v 1.250368 1.000000 0.121265 +v 1.156535 1.000000 0.139929 +v 1.103383 1.000000 0.219477 +v 1.122048 1.000000 0.313309 +v 1.201595 1.000000 0.366461 +v 1.295428 1.000000 0.347796 +v 1.348580 1.000000 0.268249 +v 1.329915 1.000000 0.174417 +v 1.250368 2.000000 0.121265 +v 1.156535 2.000000 0.139929 +v 1.103383 2.000000 0.219477 +v 1.122048 2.000000 0.313309 +v 1.201595 2.000000 0.366461 +v 1.295428 2.000000 0.347796 +v 1.348580 2.000000 0.268249 +v 1.329915 2.000000 0.174417 +v 1.201595 1.000000 -0.366461 +v 1.122048 1.000000 -0.313309 +v 1.103383 1.000000 -0.219477 +v 1.156535 1.000000 -0.139929 +v 1.250368 1.000000 -0.121265 +v 1.329915 1.000000 -0.174417 +v 1.348580 1.000000 -0.268250 +v 1.295428 1.000000 -0.347796 +v 1.201595 2.000000 -0.366461 +v 1.122048 2.000000 -0.313309 +v 1.103383 2.000000 -0.219477 +v 1.156535 2.000000 -0.139929 +v 1.250368 2.000000 -0.121265 +v 1.329915 2.000000 -0.174417 +v 1.348580 2.000000 -0.268250 +v 1.295428 2.000000 -0.347796 +v -1.250368 1.000000 -0.121264 +v -1.156535 1.000000 -0.139929 +v -1.103383 1.000000 -0.219477 +v -1.122048 1.000000 -0.313309 +v -1.201595 1.000000 -0.366461 +v -1.295428 1.000000 -0.347796 +v -1.348580 1.000000 -0.268249 +v -1.329915 1.000000 -0.174417 +v -1.250368 2.000000 -0.121264 +v -1.156535 2.000000 -0.139929 +v -1.103383 2.000000 -0.219477 +v -1.122048 2.000000 -0.313309 +v -1.201595 2.000000 -0.366461 +v -1.295428 2.000000 -0.347796 +v -1.348580 2.000000 -0.268249 +v -1.329915 2.000000 -0.174417 +v -1.201595 1.000000 0.366461 +v -1.122048 1.000000 0.313309 +v -1.103383 1.000000 0.219477 +v -1.156535 1.000000 0.139929 +v -1.250368 1.000000 0.121265 +v -1.329915 1.000000 0.174417 +v -1.348580 1.000000 0.268250 +v -1.295428 1.000000 0.347797 +v -1.201595 2.000000 0.366461 +v -1.122048 2.000000 0.313309 +v -1.103383 2.000000 0.219477 +v -1.156535 2.000000 0.139929 +v -1.250368 2.000000 0.121265 +v -1.329915 2.000000 0.174417 +v -1.348580 2.000000 0.268250 +v -1.295428 2.000000 0.347797 +v 0.121265 1.000000 -1.250368 +v 0.139929 1.000000 -1.156535 +v 0.219477 1.000000 -1.103384 +v 0.313309 1.000000 -1.122048 +v 0.366461 1.000000 -1.201595 +v 0.347796 1.000000 -1.295428 +v 0.268249 1.000000 -1.348580 +v 0.174417 1.000000 -1.329915 +v 0.121265 2.000000 -1.250368 +v 0.139929 2.000000 -1.156535 +v 0.219477 2.000000 -1.103384 +v 0.313309 2.000000 -1.122048 +v 0.366461 2.000000 -1.201595 +v 0.347796 2.000000 -1.295428 +v 0.268249 2.000000 -1.348580 +v 0.174417 2.000000 -1.329915 +v -0.366461 1.000000 -1.201595 +v -0.313309 1.000000 -1.122048 +v -0.219477 1.000000 -1.103384 +v -0.139929 1.000000 -1.156535 +v -0.121265 1.000000 -1.250368 +v -0.174417 1.000000 -1.329915 +v -0.268249 1.000000 -1.348580 +v -0.347797 1.000000 -1.295428 +v -0.366461 2.000000 -1.201595 +v -0.313309 2.000000 -1.122048 +v -0.219477 2.000000 -1.103384 +v -0.139929 2.000000 -1.156535 +v -0.121265 2.000000 -1.250368 +v -0.174417 2.000000 -1.329915 +v -0.268249 2.000000 -1.348580 +v -0.347797 2.000000 -1.295428 +v -0.121265 1.000000 1.250368 +v -0.139929 1.000000 1.156535 +v -0.219476 1.000000 1.103384 +v -0.313309 1.000000 1.122048 +v -0.366461 1.000000 1.201595 +v -0.347796 1.000000 1.295428 +v -0.268249 1.000000 1.348580 +v -0.174416 1.000000 1.329915 +v -0.121265 2.000000 1.250368 +v -0.139929 2.000000 1.156535 +v -0.219476 2.000000 1.103384 +v -0.313309 2.000000 1.122048 +v -0.366461 2.000000 1.201595 +v -0.347796 2.000000 1.295428 +v -0.268249 2.000000 1.348580 +v -0.174416 2.000000 1.329915 +v 0.366461 1.000000 1.201595 +v 0.313309 1.000000 1.122048 +v 0.219477 1.000000 1.103384 +v 0.139929 1.000000 1.156535 +v 0.121265 1.000000 1.250368 +v 0.174417 1.000000 1.329915 +v 0.268250 1.000000 1.348579 +v 0.347797 1.000000 1.295428 +v 0.366461 2.000000 1.201595 +v 0.313309 2.000000 1.122048 +v 0.219477 2.000000 1.103384 +v 0.139929 2.000000 1.156535 +v 0.121265 2.000000 1.250368 +v 0.174417 2.000000 1.329915 +v 0.268250 2.000000 1.348579 +v 0.347797 2.000000 1.295428 +v 1.325825 1.000000 0.972272 +v 1.149049 1.000000 0.899048 +v 0.972272 1.000000 0.972272 +v 0.899049 1.000000 1.149049 +v 0.972272 1.000000 1.325825 +v 1.149049 1.000000 1.399049 +v 1.325825 1.000000 1.325825 +v 1.399049 1.000000 1.149049 +v 1.325825 3.000000 0.972272 +v 1.149049 3.000000 0.899048 +v 0.972272 3.000000 0.972272 +v 0.899049 3.000000 1.149049 +v 0.972272 3.000000 1.325825 +v 1.149049 3.000000 1.399049 +v 1.325825 3.000000 1.325825 +v 1.399049 3.000000 1.149049 +v 1.274048 3.176777 0.920495 +v 1.133883 3.051777 0.883883 +v 0.883883 3.051777 1.133883 +v 0.920495 3.176777 1.274048 +v 1.060660 3.301777 1.310660 +v 1.222272 3.353553 1.222272 +v 1.310660 3.301777 1.060660 +v 1.149048 3.250000 0.795495 +v 1.097272 3.073223 0.847272 +v 0.847272 3.073223 1.097272 +v 0.795495 3.250000 1.149048 +v 0.847272 3.426777 1.097272 +v 0.972272 3.500000 0.972272 +v 1.097272 3.426777 0.847272 +v 1.008884 3.073223 0.758883 +v 1.060660 3.250000 0.707107 +v 0.707107 3.250000 1.060660 +v 0.758884 3.073223 1.008883 +v 0.758884 3.426777 1.008883 +v 0.883884 3.500000 0.883883 +v 1.008884 3.426777 0.758883 +v 0.883883 3.000000 0.883883 +v -1.325825 1.000000 -0.972271 +v -1.149049 1.000000 -0.899048 +v -0.972272 1.000000 -0.972272 +v -0.899049 1.000000 -1.149049 +v -0.972272 1.000000 -1.325825 +v -1.149049 1.000000 -1.399049 +v -1.325825 1.000000 -1.325825 +v -1.399049 1.000000 -1.149049 +v -1.325825 3.000000 -0.972271 +v -1.149049 3.000000 -0.899048 +v -0.972272 3.000000 -0.972272 +v -0.899049 3.000000 -1.149049 +v -0.972272 3.000000 -1.325825 +v -1.149049 3.000000 -1.399049 +v -1.325825 3.000000 -1.325825 +v -1.399049 3.000000 -1.149049 +v -1.274049 3.176777 -0.920495 +v -1.133883 3.051777 -0.883883 +v -0.883884 3.051777 -1.133883 +v -0.920495 3.176777 -1.274048 +v -1.060660 3.301777 -1.310660 +v -1.222272 3.353553 -1.222271 +v -1.310660 3.301777 -1.060660 +v -1.149049 3.250000 -0.795495 +v -1.097272 3.073223 -0.847272 +v -0.847272 3.073223 -1.097272 +v -0.795495 3.250000 -1.149048 +v -0.847272 3.426777 -1.097272 +v -0.972272 3.500000 -0.972272 +v -1.097272 3.426777 -0.847272 +v -1.008884 3.073223 -0.758883 +v -1.060660 3.250000 -0.707107 +v -0.707107 3.250000 -1.060660 +v -0.758884 3.073223 -1.008883 +v -0.758884 3.426777 -1.008883 +v -0.883884 3.500000 -0.883883 +v -1.008884 3.426777 -0.758883 +v -0.883883 3.000000 -0.883883 +v 0.972272 1.000000 -1.325825 +v 0.899048 1.000000 -1.149049 +v 0.972272 1.000000 -0.972272 +v 1.149049 1.000000 -0.899049 +v 1.325825 1.000000 -0.972272 +v 1.399049 1.000000 -1.149049 +v 1.325825 1.000000 -1.325825 +v 1.149048 1.000000 -1.399049 +v 0.972272 3.000000 -1.325825 +v 0.899048 3.000000 -1.149049 +v 0.972272 3.000000 -0.972272 +v 1.149049 3.000000 -0.899049 +v 1.325825 3.000000 -0.972272 +v 1.399049 3.000000 -1.149049 +v 1.325825 3.000000 -1.325825 +v 1.149048 3.000000 -1.399049 +v 0.920495 3.176776 -1.274048 +v 0.883883 3.051776 -1.133883 +v 1.133883 3.051776 -0.883883 +v 1.274048 3.176776 -0.920495 +v 1.310660 3.301776 -1.060660 +v 1.222272 3.353553 -1.222272 +v 1.060660 3.301776 -1.310660 +v 0.795495 3.250000 -1.149048 +v 0.847272 3.073223 -1.097272 +v 1.097272 3.073223 -0.847272 +v 1.149048 3.250000 -0.795495 +v 1.097272 3.426776 -0.847272 +v 0.972272 3.500000 -0.972272 +v 0.847272 3.426776 -1.097272 +v 0.758883 3.073223 -1.008884 +v 0.707107 3.250000 -1.060660 +v 1.060660 3.250000 -0.707107 +v 1.008884 3.073223 -0.758883 +v 1.008884 3.426776 -0.758883 +v 0.883884 3.500000 -0.883883 +v 0.758884 3.426776 -1.008883 +v 0.883883 3.000000 -0.883883 +v -0.972272 1.000000 1.325825 +v -0.899048 1.000000 1.149049 +v -0.972272 1.000000 0.972272 +v -1.149049 1.000000 0.899049 +v -1.325825 1.000000 0.972272 +v -1.399049 1.000000 1.149049 +v -1.325825 1.000000 1.325825 +v -1.149048 1.000000 1.399049 +v -0.972272 3.000000 1.325825 +v -0.899048 3.000000 1.149049 +v -0.972272 3.000000 0.972272 +v -1.149049 3.000000 0.899049 +v -1.325825 3.000000 0.972272 +v -1.399049 3.000000 1.149049 +v -1.325825 3.000000 1.325825 +v -1.149048 3.000000 1.399049 +v -0.920495 3.176776 1.274049 +v -0.883883 3.051776 1.133883 +v -1.133883 3.051776 0.883883 +v -1.274048 3.176776 0.920495 +v -1.310660 3.301776 1.060660 +v -1.222272 3.353553 1.222272 +v -1.060660 3.301776 1.310660 +v -0.795495 3.250000 1.149049 +v -0.847272 3.073223 1.097272 +v -1.097272 3.073223 0.847272 +v -1.149048 3.250000 0.795495 +v -1.097272 3.426776 0.847272 +v -0.972272 3.500000 0.972272 +v -0.847272 3.426776 1.097272 +v -0.758883 3.073223 1.008883 +v -0.707107 3.250000 1.060660 +v -1.060660 3.250000 0.707107 +v -1.008883 3.073223 0.758883 +v -1.008883 3.426776 0.758883 +v -0.883884 3.500000 0.883883 +v -0.758884 3.426776 1.008884 +v -0.883883 3.000000 0.883883 +v 1.500000 0.312500 -0.812500 +v 1.500000 0.687500 -0.812500 +v 1.500000 0.312500 -1.187500 +v 1.500000 0.687500 -1.187500 +v 1.375000 0.312500 -1.187500 +v 1.375000 0.312500 -0.812500 +v 1.375000 0.687500 -0.812500 +v 1.375000 0.687500 -1.187500 +v 1.500000 0.312500 1.187500 +v 1.500000 0.687500 1.187500 +v 1.500000 0.312500 0.812500 +v 1.500000 0.687500 0.812500 +v 1.375000 0.312500 0.812500 +v 1.375000 0.312500 1.187500 +v 1.375000 0.687500 1.187500 +v 1.375000 0.687500 0.812500 +v -1.500000 0.312500 0.812500 +v -1.500000 0.687500 0.812500 +v -1.500000 0.312500 1.187500 +v -1.500000 0.687500 1.187500 +v -1.375000 0.312500 1.187500 +v -1.375000 0.312500 0.812500 +v -1.375000 0.687500 0.812500 +v -1.375000 0.687500 1.187500 +v -1.500000 0.312500 -1.187500 +v -1.500000 0.687500 -1.187500 +v -1.500000 0.312500 -0.812500 +v -1.500000 0.687500 -0.812500 +v -1.375000 0.312500 -0.812500 +v -1.375000 0.312500 -1.187500 +v -1.375000 0.687500 -1.187500 +v -1.375000 0.687500 -0.812500 +v -0.812500 0.312500 -1.500000 +v -0.812500 0.687500 -1.500000 +v -1.187500 0.312500 -1.500000 +v -1.187500 0.687500 -1.500000 +v -1.187500 0.312500 -1.375000 +v -0.812500 0.312500 -1.375000 +v -0.812500 0.687500 -1.375000 +v -1.187500 0.687500 -1.375000 +v 1.187500 0.312500 -1.500000 +v 1.187500 0.687500 -1.500000 +v 0.812500 0.312500 -1.500000 +v 0.812500 0.687500 -1.500000 +v 0.812500 0.312500 -1.375000 +v 1.187500 0.312500 -1.375000 +v 1.187500 0.687500 -1.375000 +v 0.812500 0.687500 -1.375000 +v 0.812500 0.312500 1.500000 +v 0.812500 0.687500 1.500000 +v 1.187500 0.312500 1.500000 +v 1.187500 0.687500 1.500000 +v 1.187500 0.312500 1.375000 +v 0.812500 0.312500 1.375000 +v 0.812500 0.687500 1.375000 +v 1.187500 0.687500 1.375000 +v -1.187500 0.312500 1.500000 +v -1.187500 0.687500 1.500000 +v -0.812500 0.312500 1.500000 +v -0.812500 0.687500 1.500000 +v -0.812500 0.312500 1.375000 +v -1.187500 0.312500 1.375000 +v -1.187500 0.687500 1.375000 +v -0.812500 0.687500 1.375000 +vt 0.240000 -0.000000 +vt -0.000000 0.375000 +vt -0.000000 -0.000000 +vt -0.000000 0.500000 +vt 0.240000 0.875000 +vt -0.000000 0.875000 +vt 0.000000 0.890625 +vt 0.010000 0.984375 +vt 0.000000 0.984375 +vt 0.230000 0.875000 +vt 0.010000 0.890625 +vt 0.010000 0.875000 +vt 0.240000 0.984375 +vt 0.230000 0.890625 +vt 0.240000 0.890625 +vt 0.000000 0.890625 +vt 0.010000 0.984375 +vt 0.000000 0.984375 +vt 0.010000 1.000000 +vt 0.230000 0.984375 +vt 0.230000 1.000000 +vt 0.230000 0.875000 +vt 0.010000 0.890625 +vt 0.010000 0.875000 +vt 0.240000 0.984375 +vt 0.230000 0.890625 +vt 0.240000 0.890625 +vt 0.010000 1.000000 +vt 0.230000 0.984375 +vt 0.230000 1.000000 +vt 0.000000 0.890625 +vt 0.010000 0.984375 +vt 0.000000 0.984375 +vt 0.230000 0.875000 +vt 0.010000 0.890625 +vt 0.010000 0.875000 +vt 0.240000 0.984375 +vt 0.230000 0.890625 +vt 0.240000 0.890625 +vt 0.000000 0.890625 +vt 0.010000 0.984375 +vt 0.000000 0.984375 +vt 0.010000 1.000000 +vt 0.230000 0.984375 +vt 0.230000 1.000000 +vt 0.230000 0.875000 +vt 0.010000 0.890625 +vt 0.010000 0.875000 +vt 0.240000 0.984375 +vt 0.230000 0.890625 +vt 0.240000 0.890625 +vt 0.010000 1.000000 +vt 0.230000 0.984375 +vt 0.230000 1.000000 +vt 0.230000 0.390625 +vt 0.240000 0.375000 +vt 0.230000 0.390625 +vt -0.000000 0.375000 +vt 0.240000 0.375000 +vt 0.230000 0.484375 +vt 0.240000 0.500000 +vt -0.000000 0.500000 +vt 0.230000 0.484375 +vt 0.240000 0.500000 +vt 0.010000 0.390625 +vt 0.010000 0.484375 +vt -0.000000 0.500000 +vt 0.230000 0.484375 +vt 0.240000 0.500000 +vt 0.230000 0.390625 +vt -0.000000 0.375000 +vt 0.240000 0.375000 +vt 0.230000 0.390625 +vt 0.000000 0.375000 +vt 0.240000 0.375000 +vt 0.000000 0.500000 +vt 0.230000 0.484375 +vt 0.240000 0.500000 +vt 0.010000 0.390625 +vt 0.010000 0.484375 +vt 0.010000 0.390625 +vt 0.010000 0.484375 +vt 0.010000 0.484375 +vt 0.010000 0.390625 +vt 0.600000 0.703125 +vt 0.560000 0.750000 +vt 0.560000 0.703125 +vt 0.280000 0.703125 +vt 0.315000 0.750000 +vt 0.280000 0.750000 +vt 0.640000 0.703125 +vt 0.600000 0.750000 +vt 0.320000 0.703125 +vt 0.355000 0.750000 +vt 0.320000 0.750000 +vt 0.680000 0.703125 +vt 0.640000 0.750000 +vt 0.360000 0.703125 +vt 0.395000 0.750000 +vt 0.360000 0.750000 +vt 0.760000 0.703125 +vt 0.720000 0.750000 +vt 0.720000 0.703125 +vt 0.680000 0.750000 +vt 0.400000 0.703125 +vt 0.435000 0.750000 +vt 0.400000 0.750000 +vt 0.800000 0.703125 +vt 0.760000 0.750000 +vt 0.440000 0.703125 +vt 0.475000 0.750000 +vt 0.445000 0.750000 +vt 0.835000 0.750000 +vt 0.800000 0.750000 +vt 0.480000 0.703125 +vt 0.515000 0.750000 +vt 0.480000 0.750000 +vt 0.840000 0.703125 +vt 0.875000 0.750000 +vt 0.840000 0.750000 +vt 0.520000 0.703125 +vt 0.555000 0.750000 +vt 0.520000 0.750000 +vt 0.240000 0.750000 +vt 0.240000 0.703125 +vt 0.999923 0.451491 +vt 0.941046 0.546755 +vt 0.880076 0.454759 +vt 0.640000 0.234375 +vt 0.680000 0.250000 +vt 0.640000 0.250000 +vt 0.600000 0.250000 +vt 0.600000 0.234375 +vt 0.560000 0.250000 +vt 0.560000 0.234375 +vt 0.520000 0.234375 +vt 0.520000 0.250000 +vt 0.480000 0.234375 +vt 0.480000 0.250000 +vt 0.440000 0.250000 +vt 0.440000 0.234375 +vt 0.400000 0.250000 +vt 0.400000 0.234375 +vt 0.360000 0.234375 +vt 0.360000 0.250000 +vt 0.320000 0.234375 +vt 0.320000 0.250000 +vt 0.280000 0.234375 +vt 0.280000 0.250000 +vt 0.240000 0.250000 +vt 0.240000 0.234375 +vt 0.880000 0.234375 +vt 0.840000 0.250000 +vt 0.840000 0.234375 +vt 0.800000 0.234375 +vt 0.800000 0.250000 +vt 0.760000 0.250000 +vt 0.760000 0.234375 +vt 0.720000 0.250000 +vt 0.720000 0.234375 +vt 0.680000 0.234375 +vt 0.560000 0.640625 +vt 0.600000 0.625000 +vt 0.600000 0.640625 +vt 0.640000 0.640625 +vt 0.680000 0.625000 +vt 0.680000 0.640625 +vt 0.720000 0.640625 +vt 0.720000 0.625000 +vt 0.760000 0.640625 +vt 0.760000 0.625000 +vt 0.800000 0.640625 +vt 0.840000 0.625000 +vt 0.840000 0.640625 +vt 0.880000 0.640625 +vt 0.240000 0.625000 +vt 0.280000 0.640625 +vt 0.240000 0.640625 +vt 0.320000 0.625000 +vt 0.320000 0.640625 +vt 0.360000 0.625000 +vt 0.360000 0.640625 +vt 0.400000 0.625000 +vt 0.400000 0.640625 +vt 0.440000 0.640625 +vt 0.440000 0.625000 +vt 0.480000 0.640625 +vt 0.480000 0.625000 +vt 0.520000 0.640625 +vt 0.520000 0.625000 +vt 0.280000 0.171875 +vt 0.240000 0.125000 +vt 0.275000 0.125000 +vt 0.600000 0.171875 +vt 0.560000 0.125000 +vt 0.595000 0.125000 +vt 0.315000 0.125000 +vt 0.320000 0.171875 +vt 0.640000 0.171875 +vt 0.600000 0.125000 +vt 0.635000 0.125000 +vt 0.355000 0.125000 +vt 0.360000 0.171875 +vt 0.675000 0.125000 +vt 0.680000 0.171875 +vt 0.395000 0.125000 +vt 0.400000 0.171875 +vt 0.760000 0.171875 +vt 0.715000 0.125000 +vt 0.755000 0.125000 +vt 0.720000 0.171875 +vt 0.680000 0.125000 +vt 0.435000 0.125000 +vt 0.440000 0.171875 +vt 0.800000 0.171875 +vt 0.760000 0.125000 +vt 0.795000 0.125000 +vt 0.475000 0.125000 +vt 0.480000 0.171875 +vt 0.835000 0.125000 +vt 0.840000 0.171875 +vt 0.515000 0.125000 +vt 0.520000 0.171875 +vt 0.875000 0.125000 +vt 0.880000 0.171875 +vt 0.555000 0.125000 +vt 0.560000 0.171875 +vt 0.360000 0.890625 +vt 0.330000 0.937500 +vt 0.330000 0.890625 +vt 0.360000 0.890625 +vt 0.330000 0.937500 +vt 0.330000 0.890625 +vt 0.370000 0.937500 +vt 0.360000 0.937500 +vt 0.320000 0.890625 +vt 0.330000 0.953125 +vt 0.360000 0.875000 +vt 0.370000 0.937500 +vt 0.360000 0.937500 +vt 0.320000 0.890625 +vt 0.330000 0.953125 +vt 0.360000 0.875000 +vt 0.360000 0.890625 +vt 0.330000 0.937500 +vt 0.330000 0.890625 +vt 0.360000 0.890625 +vt 0.330000 0.937500 +vt 0.330000 0.890625 +vt 0.370000 0.937500 +vt 0.360000 0.937500 +vt 0.320000 0.890625 +vt 0.330000 0.953125 +vt 0.360000 0.875000 +vt 0.370000 0.937500 +vt 0.360000 0.937500 +vt 0.320000 0.890625 +vt 0.330000 0.953125 +vt 0.360000 0.875000 +vt 0.360000 0.890625 +vt 0.330000 0.937500 +vt 0.330000 0.890625 +vt 0.360000 0.890625 +vt 0.330000 0.937500 +vt 0.330000 0.890625 +vt 0.370000 0.937500 +vt 0.360000 0.937500 +vt 0.320000 0.890625 +vt 0.330000 0.953125 +vt 0.360000 0.875000 +vt 0.370000 0.937500 +vt 0.360000 0.937500 +vt 0.320000 0.890625 +vt 0.330000 0.953125 +vt 0.360000 0.875000 +vt 0.360000 0.890625 +vt 0.330000 0.937500 +vt 0.330000 0.890625 +vt 0.360000 0.890625 +vt 0.330000 0.937500 +vt 0.330000 0.890625 +vt 0.370000 0.937500 +vt 0.360000 0.937500 +vt 0.320000 0.890625 +vt 0.330000 0.953125 +vt 0.360000 0.875000 +vt 0.370000 0.937500 +vt 0.360000 0.937500 +vt 0.320000 0.890625 +vt 0.330000 0.953125 +vt 0.360000 0.875000 +vt 0.595000 0.750000 +vt 0.635000 0.750000 +vt 0.675000 0.750000 +vt 0.755000 0.750000 +vt 0.715000 0.750000 +vt 0.795000 0.750000 +vt 0.880000 0.703125 +vt 0.275000 0.750000 +vt 0.995762 0.487446 +vt 0.983112 0.518176 +vt 0.963898 0.539003 +vt 0.918034 0.540254 +vt 0.898367 0.520487 +vt 0.885038 0.490466 +vt 0.884238 0.418804 +vt 0.896888 0.388074 +vt 0.916102 0.367247 +vt 0.938954 0.359495 +vt 0.961965 0.365996 +vt 0.981633 0.385763 +vt 0.994962 0.415784 +vt 0.880000 0.250000 +vt 0.560000 0.625000 +vt 0.640000 0.625000 +vt 0.800000 0.625000 +vt 0.880000 0.625000 +vt 0.280000 0.625000 +vt 0.240000 0.171875 +vt 0.280000 0.125000 +vt 0.320000 0.125000 +vt 0.640000 0.125000 +vt 0.360000 0.125000 +vt 0.400000 0.125000 +vt 0.440000 0.125000 +vt 0.800000 0.125000 +vt 0.480000 0.125000 +vt 0.840000 0.125000 +vt 0.520000 0.125000 +vt 0.370000 0.890625 +vt 0.320000 0.937500 +vt 0.360000 0.953125 +vt 0.330000 0.875000 +vt 0.370000 0.890625 +vt 0.320000 0.937500 +vt 0.360000 0.953125 +vt 0.330000 0.875000 +vt 0.370000 0.890625 +vt 0.320000 0.937500 +vt 0.360000 0.953125 +vt 0.330000 0.875000 +vt 0.370000 0.890625 +vt 0.320000 0.937500 +vt 0.360000 0.953125 +vt 0.330000 0.875000 +vt 0.370000 0.890625 +vt 0.320000 0.937500 +vt 0.360000 0.953125 +vt 0.330000 0.875000 +vt 0.370000 0.890625 +vt 0.320000 0.937500 +vt 0.360000 0.953125 +vt 0.330000 0.875000 +vt 0.370000 0.890625 +vt 0.320000 0.937500 +vt 0.360000 0.953125 +vt 0.330000 0.875000 +vt 0.370000 0.890625 +vt 0.320000 0.937500 +vt 0.360000 0.953125 +vt 0.330000 0.875000 +vt 0.485000 0.875000 +vt 0.525000 0.875000 +vt 0.565000 0.875000 +vt 0.605000 0.875000 +vt 0.645000 0.875000 +vt 0.685000 0.875000 +vt 0.745000 0.875000 +vt 0.725000 0.875000 +vt 0.765000 0.875000 +vt 0.805000 0.875000 +vt 0.845000 0.875000 +vt 0.245000 0.875000 +vt 0.285000 0.875000 +vt 0.325000 0.875000 +vt 0.385000 0.875000 +vt 0.365000 0.875000 +vt 0.425000 0.875000 +vt 0.405000 0.875000 +vt 0.445000 0.875000 +vt 0.475000 0.000000 +vt 0.835000 0.000000 +vt 0.515000 0.000000 +vt 0.875000 0.000000 +vt 0.555000 0.000000 +vt 0.275000 0.000000 +vt 0.595000 0.000000 +vt 0.315000 -0.000000 +vt 0.635000 0.000000 +vt 0.355000 -0.000000 +vt 0.675000 -0.000000 +vt 0.395000 -0.000000 +vt 0.720000 0.125000 +vt 0.755000 -0.000000 +vt 0.715000 -0.000000 +vt 0.435000 0.000000 +vt 0.795000 -0.000000 +vt 0.290000 0.875000 +vt 0.280000 1.000000 +vt 0.280000 0.875000 +vt 0.270000 0.875000 +vt 0.260000 1.000000 +vt 0.260000 0.875000 +vt 0.250000 0.875000 +vt 0.240000 1.000000 +vt 0.240000 0.875000 +vt 0.310000 0.875000 +vt 0.300000 1.000000 +vt 0.300000 0.875000 +vt 0.290000 1.000000 +vt 0.270000 1.000000 +vt 0.250000 1.000000 +vt 0.320000 0.875000 +vt 0.310000 1.000000 +vt 0.290000 0.875000 +vt 0.280000 1.000000 +vt 0.280000 0.875000 +vt 0.270000 0.875000 +vt 0.260000 1.000000 +vt 0.260000 0.875000 +vt 0.250000 0.875000 +vt 0.240000 1.000000 +vt 0.240000 0.875000 +vt 0.310000 0.875000 +vt 0.300000 1.000000 +vt 0.300000 0.875000 +vt 0.290000 1.000000 +vt 0.270000 1.000000 +vt 0.250000 1.000000 +vt 0.320000 0.875000 +vt 0.310000 1.000000 +vt 0.290000 0.875000 +vt 0.280000 1.000000 +vt 0.280000 0.875000 +vt 0.270000 0.875000 +vt 0.260000 1.000000 +vt 0.260000 0.875000 +vt 0.250000 0.875000 +vt 0.240000 1.000000 +vt 0.240000 0.875000 +vt 0.310000 0.875000 +vt 0.300000 1.000000 +vt 0.300000 0.875000 +vt 0.290000 1.000000 +vt 0.270000 1.000000 +vt 0.250000 1.000000 +vt 0.320000 0.875000 +vt 0.310000 1.000000 +vt 0.290000 0.875000 +vt 0.280000 1.000000 +vt 0.280000 0.875000 +vt 0.270000 0.875000 +vt 0.260000 1.000000 +vt 0.260000 0.875000 +vt 0.250000 0.875000 +vt 0.240000 1.000000 +vt 0.240000 0.875000 +vt 0.310000 0.875000 +vt 0.300000 1.000000 +vt 0.300000 0.875000 +vt 0.290000 1.000000 +vt 0.270000 1.000000 +vt 0.250000 1.000000 +vt 0.320000 0.875000 +vt 0.310000 1.000000 +vt 0.290000 0.875000 +vt 0.280000 1.000000 +vt 0.280000 0.875000 +vt 0.270000 0.875000 +vt 0.260000 1.000000 +vt 0.260000 0.875000 +vt 0.250000 0.875000 +vt 0.240000 1.000000 +vt 0.240000 0.875000 +vt 0.310000 0.875000 +vt 0.300000 1.000000 +vt 0.300000 0.875000 +vt 0.290000 1.000000 +vt 0.270000 1.000000 +vt 0.250000 1.000000 +vt 0.320000 0.875000 +vt 0.310000 1.000000 +vt 0.290000 0.875000 +vt 0.280000 1.000000 +vt 0.280000 0.875000 +vt 0.270000 0.875000 +vt 0.260000 1.000000 +vt 0.260000 0.875000 +vt 0.250000 0.875000 +vt 0.240000 1.000000 +vt 0.240000 0.875000 +vt 0.310000 0.875000 +vt 0.300000 1.000000 +vt 0.300000 0.875000 +vt 0.290000 1.000000 +vt 0.270000 1.000000 +vt 0.250000 1.000000 +vt 0.320000 0.875000 +vt 0.310000 1.000000 +vt 0.290000 0.875000 +vt 0.280000 1.000000 +vt 0.280000 0.875000 +vt 0.270000 0.875000 +vt 0.260000 1.000000 +vt 0.260000 0.875000 +vt 0.250000 0.875000 +vt 0.240000 1.000000 +vt 0.240000 0.875000 +vt 0.310000 0.875000 +vt 0.300000 1.000000 +vt 0.300000 0.875000 +vt 0.290000 1.000000 +vt 0.270000 1.000000 +vt 0.250000 1.000000 +vt 0.320000 0.875000 +vt 0.310000 1.000000 +vt 0.290000 0.875000 +vt 0.280000 1.000000 +vt 0.280000 0.875000 +vt 0.270000 0.875000 +vt 0.260000 1.000000 +vt 0.260000 0.875000 +vt 0.250000 0.875000 +vt 0.240000 1.000000 +vt 0.240000 0.875000 +vt 0.310000 0.875000 +vt 0.300000 1.000000 +vt 0.300000 0.875000 +vt 0.290000 1.000000 +vt 0.270000 1.000000 +vt 0.250000 1.000000 +vt 0.320000 0.875000 +vt 0.310000 1.000000 +vt 1.000000 -0.000000 +vt 0.985000 0.250000 +vt 0.985000 0.000000 +vt 0.955000 0.000000 +vt 0.940000 0.250000 +vt 0.940000 0.000000 +vt 0.925000 0.000000 +vt 0.910000 0.250000 +vt 0.910000 -0.000000 +vt 0.895000 0.000000 +vt 0.880000 0.250000 +vt 0.880000 -0.000000 +vt 0.970000 0.250000 +vt 0.970000 0.000000 +vt 0.955000 0.250000 +vt 0.925000 0.250000 +vt 0.895000 0.250000 +vt 0.910000 0.273438 +vt 0.925000 0.296875 +vt 0.910000 0.296875 +vt 0.985000 0.289062 +vt 0.970000 0.296875 +vt 0.970000 0.273438 +vt 0.955000 0.296875 +vt 0.955000 0.257812 +vt 0.925000 0.257812 +vt 0.895000 0.289062 +vt 0.895000 0.296875 +vt 0.940000 0.296875 +vt 0.940000 0.343750 +vt 0.925000 0.335938 +vt 0.910000 0.320312 +vt 0.985000 0.304688 +vt 0.970000 0.320312 +vt 0.955000 0.335938 +vt 0.895000 0.304688 +vt 0.880000 0.296875 +vt 1.000000 0.296875 +vt 0.985000 0.296875 +vt 0.955000 0.343750 +vt 0.940000 0.359375 +vt 1.000000 -0.000000 +vt 0.985000 0.250000 +vt 0.985000 0.000000 +vt 0.910000 0.343750 +vt 0.925000 0.359375 +vt 0.910000 0.359375 +vt 0.970000 0.343750 +vt 0.985000 0.359375 +vt 0.970000 0.359375 +vt 1.000000 0.343750 +vt 0.985000 0.343750 +vt 0.955000 0.359375 +vt 0.880000 0.343750 +vt 0.895000 0.359375 +vt 0.880000 0.359375 +vt 0.925000 0.343750 +vt 0.895000 0.343750 +vt 0.955000 0.000000 +vt 0.940000 0.250000 +vt 0.940000 0.000000 +vt 0.925000 0.000000 +vt 0.910000 0.250000 +vt 0.910000 -0.000000 +vt 0.895000 0.000000 +vt 0.880000 0.250000 +vt 0.880000 -0.000000 +vt 0.970000 0.250000 +vt 0.970000 0.000000 +vt 0.955000 0.250000 +vt 0.925000 0.250000 +vt 0.895000 0.250000 +vt 0.925000 0.257812 +vt 0.910000 0.296875 +vt 0.910000 0.273438 +vt 0.970000 0.273438 +vt 0.985000 0.296875 +vt 0.970000 0.296875 +vt 0.955000 0.257812 +vt 0.955000 0.296875 +vt 0.925000 0.296875 +vt 0.895000 0.296875 +vt 0.895000 0.289062 +vt 0.940000 0.296875 +vt 0.955000 0.335938 +vt 0.940000 0.343750 +vt 0.925000 0.335938 +vt 0.910000 0.320312 +vt 0.985000 0.304688 +vt 0.970000 0.320312 +vt 0.895000 0.304688 +vt 0.880000 0.296875 +vt 0.985000 0.289062 +vt 1.000000 0.296875 +vt 0.955000 0.343750 +vt 0.940000 0.359375 +vt 0.910000 0.343750 +vt 0.925000 0.359375 +vt 0.910000 0.359375 +vt 0.970000 0.343750 +vt 0.985000 0.359375 +vt 0.970000 0.359375 +vt 1.000000 0.343750 +vt 0.985000 0.343750 +vt 0.955000 0.359375 +vt 0.880000 0.343750 +vt 0.895000 0.359375 +vt 0.880000 0.359375 +vt 0.925000 0.343750 +vt 0.895000 0.343750 +vt 1.000000 -0.000000 +vt 0.985000 0.250000 +vt 0.985000 0.000000 +vt 0.955000 0.000000 +vt 0.940000 0.250000 +vt 0.940000 0.000000 +vt 0.925000 0.000000 +vt 0.910000 0.250000 +vt 0.910000 -0.000000 +vt 0.895000 0.000000 +vt 0.880000 0.250000 +vt 0.880000 -0.000000 +vt 0.970000 0.250000 +vt 0.970000 0.000000 +vt 0.955000 0.250000 +vt 0.925000 0.250000 +vt 0.895000 0.250000 +vt 0.910000 0.273438 +vt 0.925000 0.296875 +vt 0.910000 0.296875 +vt 0.985000 0.289062 +vt 0.970000 0.296875 +vt 0.970000 0.273438 +vt 0.955000 0.296875 +vt 0.955000 0.257812 +vt 0.925000 0.257812 +vt 0.895000 0.289062 +vt 0.895000 0.296875 +vt 0.940000 0.296875 +vt 0.955000 0.335938 +vt 0.940000 0.343750 +vt 0.925000 0.335938 +vt 0.910000 0.320312 +vt 0.985000 0.304688 +vt 0.970000 0.320312 +vt 0.895000 0.304688 +vt 0.880000 0.296875 +vt 1.000000 0.296875 +vt 0.985000 0.296875 +vt 0.955000 0.359375 +vt 0.940000 0.359375 +vt 1.000000 -0.000000 +vt 0.985000 0.250000 +vt 0.985000 0.000000 +vt 0.910000 0.343750 +vt 0.925000 0.359375 +vt 0.910000 0.359375 +vt 0.970000 0.343750 +vt 0.985000 0.359375 +vt 0.970000 0.359375 +vt 0.985000 0.343750 +vt 1.000000 0.359375 +vt 0.955000 0.343750 +vt 0.895000 0.343750 +vt 0.880000 0.359375 +vt 0.880000 0.343750 +vt 0.925000 0.343750 +vt 0.895000 0.359375 +vt 0.955000 0.000000 +vt 0.940000 0.250000 +vt 0.940000 0.000000 +vt 0.925000 0.000000 +vt 0.910000 0.250000 +vt 0.910000 -0.000000 +vt 0.895000 0.000000 +vt 0.880000 0.250000 +vt 0.880000 -0.000000 +vt 0.970000 0.250000 +vt 0.970000 0.000000 +vt 0.955000 0.250000 +vt 0.925000 0.250000 +vt 0.895000 0.250000 +vt 0.910000 0.273438 +vt 0.925000 0.296875 +vt 0.910000 0.296875 +vt 0.985000 0.289062 +vt 0.970000 0.296875 +vt 0.970000 0.273438 +vt 0.955000 0.296875 +vt 0.955000 0.257812 +vt 0.925000 0.257812 +vt 0.895000 0.289062 +vt 0.895000 0.296875 +vt 0.940000 0.296875 +vt 0.955000 0.335938 +vt 0.940000 0.343750 +vt 0.925000 0.335938 +vt 0.910000 0.320312 +vt 0.985000 0.304688 +vt 0.970000 0.320312 +vt 0.895000 0.304688 +vt 0.880000 0.296875 +vt 1.000000 0.296875 +vt 0.985000 0.296875 +vt 0.955000 0.359375 +vt 0.940000 0.359375 +vt 0.910000 0.343750 +vt 0.925000 0.359375 +vt 0.910000 0.359375 +vt 0.985000 0.343750 +vt 0.970000 0.359375 +vt 0.970000 0.343750 +vt 1.000000 0.343750 +vt 0.985000 0.359375 +vt 0.955000 0.343750 +vt 0.895000 0.343750 +vt 0.880000 0.359375 +vt 0.880000 0.343750 +vt 0.925000 0.343750 +vt 0.895000 0.359375 +vt 0.505000 0.875000 +vt 0.545000 0.875000 +vt 0.585000 0.875000 +vt 0.625000 0.875000 +vt 0.665000 0.875000 +vt 0.705000 0.875000 +vt 0.785000 0.875000 +vt 0.825000 0.875000 +vt 0.865000 0.875000 +vt 0.265000 0.875000 +vt 0.305000 0.875000 +vt 0.345000 0.875000 +vt 0.465000 0.875000 +vt 0.440000 -0.000000 +vt 0.800000 -0.000000 +vt 0.480000 -0.000000 +vt 0.840000 -0.000000 +vt 0.520000 -0.000000 +vt 0.240000 0.000000 +vt 0.560000 -0.000000 +vt 0.280000 -0.000000 +vt 0.600000 0.000000 +vt 0.320000 0.000000 +vt 0.640000 -0.000000 +vt 0.360000 0.000000 +vt 0.720000 -0.000000 +vt 0.680000 0.000000 +vt 0.400000 -0.000000 +vt 0.760000 -0.000000 +vt 0.320000 1.000000 +vt 0.320000 1.000000 +vt 0.320000 1.000000 +vt 0.320000 1.000000 +vt 0.320000 1.000000 +vt 0.320000 1.000000 +vt 0.320000 1.000000 +vt 0.320000 1.000000 +vt 1.000000 0.250000 +vt 1.000000 0.250000 +vt 1.000000 0.359375 +vt 1.000000 0.359375 +vt 1.000000 0.250000 +vt 1.000000 0.250000 +vt 1.000000 0.343750 +vt 1.000000 0.359375 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.9239 0.0000 -0.3827 +vn -0.9239 0.0000 0.3827 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn -0.3827 0.0000 0.9239 +vn 0.3827 0.0000 -0.9239 +vn -0.3827 0.0000 -0.9239 +vn 0.3827 0.0000 0.9239 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.9239 0.0000 -0.3827 +vn 0.9239 0.0000 0.3827 +vn 0.8651 0.3511 0.3583 +vn 0.6621 0.3511 0.6621 +vn 0.9363 0.3511 0.0000 +vn 0.8651 0.3511 -0.3583 +vn 0.6621 0.3511 -0.6621 +vn 0.3583 0.3511 -0.8651 +vn -0.0000 0.3511 -0.9363 +vn -0.3583 0.3511 -0.8651 +vn -0.6621 0.3511 -0.6621 +vn -0.8651 0.3511 -0.3583 +vn -0.9363 0.3511 -0.0000 +vn -0.8651 0.3511 0.3583 +vn -0.6621 0.3511 0.6621 +vn -0.3583 0.3511 0.8651 +vn -0.0000 0.3511 0.9363 +vn 0.3583 0.3511 0.8651 +vn 0.8315 0.0000 -0.5556 +vn 0.9808 0.0000 0.1951 +vn 0.5556 0.0000 0.8315 +vn -0.1951 0.0000 0.9808 +vn -0.8315 0.0000 0.5556 +vn -0.9808 0.0000 -0.1951 +vn -0.5556 0.0000 -0.8315 +vn 0.1951 0.0000 -0.9808 +vn 0.5556 0.0000 -0.8315 +vn 0.9808 0.0000 -0.1951 +vn 0.8315 0.0000 0.5556 +vn 0.1951 0.0000 0.9808 +vn -0.5556 0.0000 0.8315 +vn -0.9808 0.0000 0.1951 +vn -0.8315 0.0000 -0.5556 +vn -0.1951 0.0000 -0.9808 +vn 0.0372 -0.1363 -0.9900 +vn 0.6947 0.1866 0.6947 +vn -0.6727 0.0196 0.7396 +vn -0.5000 -0.7071 -0.5000 +vn 0.7396 0.0196 -0.6727 +vn 0.9891 0.1448 0.0283 +vn 0.0283 0.1448 0.9891 +vn -0.9900 -0.1363 0.0372 +vn -0.0945 0.5294 0.8431 +vn -0.6565 0.0671 0.7513 +vn 0.7513 0.0671 -0.6565 +vn 0.8431 0.5294 -0.0945 +vn -0.8620 -0.4617 0.2090 +vn 0.5000 0.7071 0.5000 +vn 0.1319 0.9824 0.1319 +vn -0.3780 0.7194 0.5828 +vn -0.6923 0.0473 0.7200 +vn 0.4172 -0.6737 -0.6099 +vn 0.7200 0.0473 -0.6923 +vn 0.5828 0.7194 -0.3780 +vn -0.6099 -0.6737 0.4172 +vn 0.2090 -0.4617 -0.8620 +vn -0.0372 -0.1363 0.9900 +vn -0.5000 0.7071 0.5000 +vn 0.5000 -0.7071 -0.5000 +vn 0.5000 0.7071 -0.5000 +vn -0.5000 -0.7071 0.5000 +vn -0.6947 0.1866 -0.6947 +vn 0.6727 0.0196 -0.7396 +vn 0.5000 -0.7071 0.5000 +vn -0.7396 0.0196 0.6727 +vn -0.9891 0.1448 -0.0283 +vn -0.0283 0.1448 -0.9891 +vn 0.9900 -0.1363 -0.0372 +vn 0.6565 0.0671 -0.7513 +vn -0.2090 -0.4617 0.8620 +vn -0.7513 0.0671 0.6565 +vn -0.8431 0.5294 0.0945 +vn 0.0945 0.5294 -0.8431 +vn 0.8620 -0.4617 -0.2090 +vn -0.5000 0.7071 -0.5000 +vn -0.5828 0.7194 0.3780 +vn -0.1319 0.9824 -0.1319 +vn 0.3780 0.7194 -0.5828 +vn 0.6923 0.0473 -0.7200 +vn -0.4172 -0.6737 0.6099 +vn -0.7200 0.0473 0.6923 +vn 0.6099 -0.6737 -0.4172 +vn -0.9900 -0.1363 -0.0372 +vn 0.6947 0.1866 -0.6947 +vn 0.7396 0.0196 0.6727 +vn -0.6727 0.0196 -0.7396 +vn 0.0283 0.1448 -0.9891 +vn 0.9891 0.1448 -0.0283 +vn 0.0372 -0.1363 0.9900 +vn 0.8431 0.5294 0.0945 +vn 0.7513 0.0671 0.6565 +vn -0.6565 0.0671 -0.7513 +vn -0.0945 0.5294 -0.8431 +vn 0.2090 -0.4617 0.8620 +vn -0.3780 0.7194 -0.5828 +vn 0.1319 0.9824 -0.1319 +vn 0.5828 0.7194 0.3780 +vn 0.7200 0.0473 0.6923 +vn -0.6099 -0.6737 -0.4172 +vn -0.6923 0.0473 -0.7200 +vn 0.4172 -0.6737 0.6099 +vn -0.8620 -0.4617 -0.2090 +vn 0.9900 -0.1363 0.0372 +vn -0.6947 0.1866 0.6947 +vn -0.7396 0.0196 -0.6727 +vn 0.6727 0.0196 0.7396 +vn -0.0283 0.1448 0.9891 +vn -0.9891 0.1448 0.0283 +vn -0.0372 -0.1363 -0.9900 +vn -0.8431 0.5294 -0.0945 +vn -0.7513 0.0671 -0.6565 +vn 0.6565 0.0671 0.7513 +vn 0.0945 0.5294 0.8431 +vn -0.2090 -0.4617 -0.8620 +vn 0.3780 0.7194 0.5828 +vn -0.1319 0.9824 0.1319 +vn -0.5828 0.7194 -0.3780 +vn -0.7200 0.0473 -0.6923 +vn 0.6099 -0.6737 0.4172 +vn 0.6923 0.0473 0.7200 +vn -0.4172 -0.6737 -0.6099 +vn 0.8620 -0.4617 0.2090 +s off +f 3/1/1 2/2/1 1/3/1 +f 6/4/2 7/5/2 5/6/2 +f 9/7/3 15/8/3 11/9/3 +f 10/10/2 13/11/2 9/12/2 +f 12/13/4 14/14/4 10/15/4 +f 14/14/5 15/8/5 13/11/5 +f 17/16/4 23/17/4 19/18/4 +f 11/19/1 16/20/1 12/21/1 +f 18/22/2 21/23/2 17/24/2 +f 20/25/3 22/26/3 18/27/3 +f 22/26/6 23/17/6 21/23/6 +f 19/28/1 24/29/1 20/30/1 +f 25/31/6 31/32/6 27/33/6 +f 26/34/2 29/35/2 25/36/2 +f 28/37/5 30/38/5 26/39/5 +f 30/38/3 31/32/3 29/35/3 +f 33/40/5 39/41/5 35/42/5 +f 27/43/1 32/44/1 28/45/1 +f 34/46/2 37/47/2 33/48/2 +f 36/49/6 38/50/6 34/51/6 +f 38/50/4 39/41/4 37/47/4 +f 35/52/1 40/53/1 36/54/1 +f 10/55/5 2/2/5 4/56/5 +f 26/57/3 4/58/3 3/59/3 +f 6/4/5 12/60/5 8/61/5 +f 8/62/3 28/63/3 7/64/3 +f 8/62/3 25/65/3 27/66/3 +f 10/55/5 8/61/5 12/60/5 +f 7/67/6 20/68/6 5/69/6 +f 18/70/6 3/71/6 1/72/6 +f 34/73/4 1/74/4 2/75/4 +f 5/76/4 36/77/4 6/78/4 +f 5/76/4 33/79/4 35/80/4 +f 18/70/6 5/69/6 20/68/6 +f 34/73/4 6/78/4 36/77/4 +f 6/4/5 9/81/5 11/82/5 +f 19/83/6 3/71/6 17/84/6 +f 3/59/3 28/63/3 26/57/3 +f 54/85/2 85/86/2 53/87/2 +f 46/88/2 79/89/2 78/90/2 +f 55/91/2 86/92/2 54/85/2 +f 47/93/2 80/94/2 79/95/2 +f 56/96/2 87/97/2 55/91/2 +f 48/98/2 81/99/2 80/100/2 +f 42/101/2 73/102/2 41/103/2 +f 41/103/2 88/104/2 56/96/2 +f 49/105/2 82/106/2 81/107/2 +f 43/108/2 74/109/2 42/101/2 +f 50/110/2 83/111/2 82/112/2 +f 43/108/2 76/113/2 75/114/2 +f 51/115/2 84/116/2 83/117/2 +f 44/118/2 77/119/2 76/120/2 +f 52/121/2 85/122/2 84/123/2 +f 46/88/2 77/124/2 45/125/2 +f 89/126/2 93/127/2 97/128/2 +f 135/129/2 152/130/2 151/131/2 +f 135/129/2 150/132/2 134/133/2 +f 134/133/2 149/134/2 133/135/2 +f 132/136/2 149/134/2 148/137/2 +f 131/138/2 148/137/2 147/139/2 +f 131/138/2 146/140/2 130/141/2 +f 130/141/2 145/142/2 129/143/2 +f 128/144/2 145/142/2 144/145/2 +f 127/146/2 144/145/2 143/147/2 +f 126/148/2 143/147/2 142/149/2 +f 126/148/2 141/150/2 125/151/2 +f 125/152/2 140/153/2 124/154/2 +f 123/155/2 140/153/2 139/156/2 +f 123/155/2 138/157/2 122/158/2 +f 122/158/2 137/159/2 121/160/2 +f 121/160/2 152/130/2 136/161/2 +f 69/162/1 166/163/1 70/164/1 +f 166/163/1 71/165/1 70/164/1 +f 71/165/1 168/166/1 72/167/1 +f 168/166/1 57/168/1 72/167/1 +f 153/169/1 58/170/1 57/168/1 +f 154/171/1 59/172/1 58/170/1 +f 59/172/1 156/173/1 60/174/1 +f 156/173/1 61/175/1 60/174/1 +f 157/176/1 62/177/1 61/178/1 +f 62/177/1 159/179/1 63/180/1 +f 63/180/1 160/181/1 64/182/1 +f 64/182/1 161/183/1 65/184/1 +f 161/183/1 66/185/1 65/184/1 +f 162/186/1 67/187/1 66/185/1 +f 163/188/1 68/189/1 67/187/1 +f 164/190/1 69/162/1 68/189/1 +f 110/191/1 173/192/1 174/193/1 +f 118/194/1 181/195/1 182/196/1 +f 110/191/1 175/197/1 111/198/1 +f 119/199/1 182/200/1 183/201/1 +f 111/198/1 176/202/1 112/203/1 +f 119/199/1 184/204/1 120/205/1 +f 112/203/1 177/206/1 113/207/1 +f 106/208/1 169/209/1 170/210/1 +f 105/211/1 184/212/1 169/209/1 +f 113/207/1 178/213/1 114/214/1 +f 107/215/1 170/216/1 171/217/1 +f 114/214/1 179/218/1 115/219/1 +f 107/215/1 172/220/1 108/221/1 +f 115/219/1 180/222/1 116/223/1 +f 108/221/1 173/224/1 109/225/1 +f 116/223/1 181/226/1 117/227/1 +f 483/228/5 482/229/5 481/230/5 +f 491/231/5 490/232/5 489/233/5 +f 483/228/3 488/234/3 484/235/3 +f 482/229/4 486/236/4 481/230/4 +f 484/235/2 487/237/2 482/229/2 +f 481/230/1 485/238/1 483/228/1 +f 491/231/3 496/239/3 492/240/3 +f 490/232/4 494/241/4 489/233/4 +f 492/240/2 495/242/2 490/232/2 +f 489/233/1 493/243/1 491/231/1 +f 499/244/6 498/245/6 497/246/6 +f 507/247/6 506/248/6 505/249/6 +f 499/244/4 504/250/4 500/251/4 +f 498/245/3 502/252/3 497/246/3 +f 500/251/2 503/253/2 498/245/2 +f 497/246/1 501/254/1 499/244/1 +f 507/247/4 512/255/4 508/256/4 +f 506/248/3 510/257/3 505/249/3 +f 508/256/2 511/258/2 506/248/2 +f 505/249/1 509/259/1 507/247/1 +f 515/260/3 514/261/3 513/262/3 +f 523/263/3 522/264/3 521/265/3 +f 515/260/6 520/266/6 516/267/6 +f 514/261/5 518/268/5 513/262/5 +f 516/267/2 519/269/2 514/261/2 +f 513/262/1 517/270/1 515/260/1 +f 523/263/6 528/271/6 524/272/6 +f 522/264/5 526/273/5 521/265/5 +f 524/272/2 527/274/2 522/264/2 +f 521/265/1 525/275/1 523/263/1 +f 531/276/4 530/277/4 529/278/4 +f 539/279/4 538/280/4 537/281/4 +f 531/276/5 536/282/5 532/283/5 +f 530/277/6 534/284/6 529/278/6 +f 532/283/2 535/285/2 530/277/2 +f 529/278/1 533/286/1 531/276/1 +f 539/279/5 544/287/5 540/288/5 +f 538/280/6 542/289/6 537/281/6 +f 540/288/2 543/290/2 538/280/2 +f 537/281/1 541/291/1 539/279/1 +f 3/1/1 4/56/1 2/2/1 +f 6/4/2 8/61/2 7/5/2 +f 9/7/3 13/11/3 15/8/3 +f 10/10/2 14/14/2 13/11/2 +f 12/13/4 16/20/4 14/14/4 +f 14/14/5 16/20/5 15/8/5 +f 17/16/4 21/23/4 23/17/4 +f 11/19/1 15/8/1 16/20/1 +f 18/22/2 22/26/2 21/23/2 +f 20/25/3 24/29/3 22/26/3 +f 22/26/6 24/29/6 23/17/6 +f 19/28/1 23/17/1 24/29/1 +f 25/31/6 29/35/6 31/32/6 +f 26/34/2 30/38/2 29/35/2 +f 28/37/5 32/44/5 30/38/5 +f 30/38/3 32/44/3 31/32/3 +f 33/40/5 37/47/5 39/41/5 +f 27/43/1 31/32/1 32/44/1 +f 34/46/2 38/50/2 37/47/2 +f 36/49/6 40/53/6 38/50/6 +f 38/50/4 40/53/4 39/41/4 +f 35/52/1 39/41/1 40/53/1 +f 10/55/5 9/81/5 2/2/5 +f 26/57/3 25/65/3 4/58/3 +f 6/4/5 11/82/5 12/60/5 +f 8/62/3 27/66/3 28/63/3 +f 8/62/3 4/58/3 25/65/3 +f 10/55/5 4/56/5 8/61/5 +f 7/67/6 19/83/6 20/68/6 +f 18/70/6 17/84/6 3/71/6 +f 34/73/4 33/79/4 1/74/4 +f 5/76/4 35/80/4 36/77/4 +f 5/76/4 1/74/4 33/79/4 +f 18/70/6 1/72/6 5/69/6 +f 34/73/4 2/75/4 6/78/4 +f 6/4/5 2/2/5 9/81/5 +f 19/83/6 7/67/6 3/71/6 +f 3/59/3 7/64/3 28/63/3 +f 54/85/2 86/292/2 85/86/2 +f 46/88/2 47/93/2 79/89/2 +f 55/91/2 87/293/2 86/92/2 +f 47/93/2 48/98/2 80/94/2 +f 56/96/2 88/294/2 87/97/2 +f 48/98/2 49/105/2 81/99/2 +f 42/101/2 74/295/2 73/102/2 +f 41/103/2 73/296/2 88/104/2 +f 49/105/2 50/110/2 82/106/2 +f 43/108/2 75/297/2 74/109/2 +f 50/110/2 51/115/2 83/111/2 +f 43/108/2 44/118/2 76/113/2 +f 51/115/2 52/121/2 84/116/2 +f 44/118/2 45/298/2 77/119/2 +f 52/121/2 53/87/2 85/122/2 +f 46/88/2 78/299/2 77/124/2 +f 89/126/2 90/300/2 91/301/2 +f 91/301/2 92/302/2 89/126/2 +f 92/302/2 93/127/2 89/126/2 +f 93/127/2 94/303/2 97/128/2 +f 94/303/2 95/304/2 97/128/2 +f 95/304/2 96/305/2 97/128/2 +f 97/128/2 98/306/2 99/307/2 +f 99/307/2 100/308/2 101/309/2 +f 101/309/2 102/310/2 103/311/2 +f 103/311/2 104/312/2 89/126/2 +f 97/128/2 99/307/2 89/126/2 +f 99/307/2 101/309/2 89/126/2 +f 101/309/2 103/311/2 89/126/2 +f 135/129/2 136/161/2 152/130/2 +f 135/129/2 151/131/2 150/132/2 +f 134/133/2 150/132/2 149/134/2 +f 132/136/2 133/135/2 149/134/2 +f 131/138/2 132/136/2 148/137/2 +f 131/138/2 147/139/2 146/140/2 +f 130/141/2 146/140/2 145/142/2 +f 128/144/2 129/143/2 145/142/2 +f 127/146/2 128/144/2 144/145/2 +f 126/148/2 127/146/2 143/147/2 +f 126/148/2 142/149/2 141/150/2 +f 125/152/2 141/313/2 140/153/2 +f 123/155/2 124/154/2 140/153/2 +f 123/155/2 139/156/2 138/157/2 +f 122/158/2 138/157/2 137/159/2 +f 121/160/2 137/159/2 152/130/2 +f 69/162/1 165/314/1 166/163/1 +f 166/163/1 167/315/1 71/165/1 +f 71/165/1 167/315/1 168/166/1 +f 168/166/1 153/169/1 57/168/1 +f 153/169/1 154/171/1 58/170/1 +f 154/171/1 155/316/1 59/172/1 +f 59/172/1 155/316/1 156/173/1 +f 156/173/1 157/317/1 61/175/1 +f 157/176/1 158/318/1 62/177/1 +f 62/177/1 158/318/1 159/179/1 +f 63/180/1 159/179/1 160/181/1 +f 64/182/1 160/181/1 161/183/1 +f 161/183/1 162/186/1 66/185/1 +f 162/186/1 163/188/1 67/187/1 +f 163/188/1 164/190/1 68/189/1 +f 164/190/1 165/314/1 69/162/1 +f 110/191/1 109/319/1 173/192/1 +f 118/194/1 117/227/1 181/195/1 +f 110/191/1 174/320/1 175/197/1 +f 119/199/1 118/194/1 182/200/1 +f 111/198/1 175/321/1 176/202/1 +f 119/199/1 183/322/1 184/204/1 +f 112/203/1 176/323/1 177/206/1 +f 106/208/1 105/211/1 169/209/1 +f 105/211/1 120/205/1 184/212/1 +f 113/207/1 177/324/1 178/213/1 +f 107/215/1 106/208/1 170/216/1 +f 114/214/1 178/325/1 179/218/1 +f 107/215/1 171/326/1 172/220/1 +f 115/219/1 179/327/1 180/222/1 +f 108/221/1 172/328/1 173/224/1 +f 116/223/1 180/329/1 181/226/1 +f 483/228/5 484/235/5 482/229/5 +f 491/231/5 492/240/5 490/232/5 +f 483/228/3 485/330/3 488/234/3 +f 482/229/4 487/331/4 486/236/4 +f 484/235/2 488/332/2 487/237/2 +f 481/230/1 486/333/1 485/238/1 +f 491/231/3 493/334/3 496/239/3 +f 490/232/4 495/335/4 494/241/4 +f 492/240/2 496/336/2 495/242/2 +f 489/233/1 494/337/1 493/243/1 +f 499/244/6 500/251/6 498/245/6 +f 507/247/6 508/256/6 506/248/6 +f 499/244/4 501/338/4 504/250/4 +f 498/245/3 503/339/3 502/252/3 +f 500/251/2 504/340/2 503/253/2 +f 497/246/1 502/341/1 501/254/1 +f 507/247/4 509/342/4 512/255/4 +f 506/248/3 511/343/3 510/257/3 +f 508/256/2 512/344/2 511/258/2 +f 505/249/1 510/345/1 509/259/1 +f 515/260/3 516/267/3 514/261/3 +f 523/263/3 524/272/3 522/264/3 +f 515/260/6 517/346/6 520/266/6 +f 514/261/5 519/347/5 518/268/5 +f 516/267/2 520/348/2 519/269/2 +f 513/262/1 518/349/1 517/270/1 +f 523/263/6 525/350/6 528/271/6 +f 522/264/5 527/351/5 526/273/5 +f 524/272/2 528/352/2 527/274/2 +f 521/265/1 526/353/1 525/275/1 +f 531/276/4 532/283/4 530/277/4 +f 539/279/4 540/288/4 538/280/4 +f 531/276/5 533/354/5 536/282/5 +f 530/277/6 535/355/6 534/284/6 +f 532/283/2 536/356/2 535/285/2 +f 529/278/1 534/357/1 533/286/1 +f 539/279/5 541/358/5 544/287/5 +f 538/280/6 543/359/6 542/289/6 +f 540/288/2 544/360/2 543/290/2 +f 537/281/1 542/361/1 541/291/1 +s 1 +f 69/162/5 54/85/7 53/87/5 +f 62/177/8 47/93/9 46/88/8 +f 70/164/7 55/91/10 54/85/7 +f 63/180/9 48/98/11 47/93/9 +f 71/165/10 56/96/12 55/91/10 +f 64/182/11 49/105/4 48/98/11 +f 57/168/3 42/101/13 41/103/3 +f 72/167/12 41/103/3 56/96/12 +f 65/184/4 50/110/14 49/105/4 +f 58/170/13 43/108/15 42/101/13 +f 66/185/14 51/115/16 50/110/14 +f 59/172/15 44/118/17 43/108/15 +f 67/187/16 52/121/18 51/115/16 +f 60/174/17 45/298/6 44/118/17 +f 68/189/18 53/87/5 52/121/18 +f 61/178/6 46/88/8 45/125/6 +f 84/116/19 99/362/20 83/117/20 +f 85/122/21 100/363/19 84/123/19 +f 86/292/22 101/364/21 85/86/21 +f 87/293/23 102/365/22 86/92/22 +f 88/294/24 103/366/23 87/97/23 +f 73/296/25 104/367/24 88/104/24 +f 73/102/25 90/368/26 89/369/25 +f 75/297/27 90/370/26 74/109/26 +f 76/113/28 91/371/27 75/114/27 +f 77/119/29 92/372/28 76/120/28 +f 78/299/30 93/373/29 77/124/29 +f 79/89/31 94/374/30 78/90/30 +f 80/94/32 95/375/31 79/95/31 +f 80/100/32 97/376/33 96/377/32 +f 81/107/33 98/378/34 97/379/33 +f 83/111/20 98/380/34 82/112/34 +f 117/227/5 132/136/18 116/223/18 +f 110/191/8 125/151/6 109/319/6 +f 118/194/7 133/135/5 117/227/5 +f 111/198/9 126/148/8 110/191/8 +f 119/199/10 134/133/7 118/194/7 +f 112/203/11 127/146/9 111/198/9 +f 120/205/12 135/129/10 119/199/10 +f 113/207/4 128/144/11 112/203/11 +f 106/208/13 121/160/3 105/211/3 +f 105/211/3 136/161/12 120/205/12 +f 114/214/14 129/143/4 113/207/4 +f 107/215/15 122/158/13 106/208/13 +f 115/219/16 130/141/14 114/214/14 +f 108/221/17 123/155/15 107/215/15 +f 116/223/18 131/138/16 115/219/16 +f 109/225/6 124/154/17 108/221/17 +f 137/159/3 168/166/12 152/130/12 +f 146/140/14 161/183/4 145/142/4 +f 139/156/15 154/171/13 138/157/13 +f 147/139/16 162/186/14 146/140/14 +f 140/153/17 155/316/15 139/156/15 +f 148/137/18 163/188/16 147/139/16 +f 141/313/6 156/173/17 140/153/17 +f 149/134/5 164/190/18 148/137/18 +f 142/149/8 157/176/6 141/150/6 +f 150/132/7 165/314/5 149/134/5 +f 143/147/9 158/318/8 142/149/8 +f 151/131/10 166/163/7 150/132/7 +f 144/145/11 159/179/9 143/147/9 +f 152/130/12 167/315/10 151/131/10 +f 145/142/4 160/181/11 144/145/11 +f 138/157/13 153/169/3 137/159/3 +f 178/325/14 195/381/16 179/218/16 +f 171/326/15 188/382/17 172/220/17 +f 179/327/16 196/383/18 180/222/18 +f 172/328/17 189/384/6 173/224/6 +f 180/329/18 197/385/5 181/226/5 +f 173/192/6 190/386/8 174/193/8 +f 181/195/5 198/387/7 182/196/7 +f 174/320/8 191/388/9 175/197/9 +f 182/200/7 199/389/10 183/201/10 +f 175/321/9 192/390/11 176/202/11 +f 183/322/10 200/391/12 184/204/12 +f 176/323/11 193/392/4 177/206/4 +f 169/393/3 186/394/13 170/210/13 +f 184/212/12 185/395/3 169/209/3 +f 177/324/4 194/396/14 178/213/14 +f 170/216/13 187/397/15 171/217/15 +f 208/398/35 215/399/36 207/400/36 +f 206/401/37 213/402/38 205/403/38 +f 204/404/39 211/405/40 203/406/40 +f 202/407/41 209/408/42 201/409/42 +f 201/409/42 216/410/35 208/398/35 +f 207/400/36 214/411/37 206/401/37 +f 205/403/38 212/412/39 204/404/39 +f 203/413/40 210/414/41 202/407/41 +f 224/415/43 231/416/44 223/417/44 +f 222/418/45 229/419/46 221/420/46 +f 220/421/47 227/422/48 219/423/48 +f 218/424/49 225/425/50 217/426/50 +f 217/426/50 232/427/43 224/415/43 +f 223/417/44 230/428/45 222/418/45 +f 221/420/46 228/429/47 220/421/47 +f 219/430/48 226/431/49 218/424/49 +f 240/432/39 247/433/40 239/434/40 +f 238/435/41 245/436/42 237/437/42 +f 236/438/35 243/439/36 235/440/36 +f 234/441/37 241/442/38 233/443/38 +f 233/443/38 248/444/39 240/432/39 +f 239/434/40 246/445/41 238/435/41 +f 237/437/42 244/446/35 236/438/35 +f 235/447/36 242/448/37 234/441/37 +f 256/449/47 263/450/48 255/451/48 +f 254/452/49 261/453/50 253/454/50 +f 252/455/43 259/456/44 251/457/44 +f 250/458/45 257/459/46 249/460/46 +f 249/460/46 264/461/47 256/449/47 +f 255/451/48 262/462/49 254/452/49 +f 253/454/50 260/463/43 252/455/43 +f 251/464/44 258/465/45 250/458/45 +f 272/466/41 279/467/42 271/468/42 +f 270/469/35 277/470/36 269/471/36 +f 268/472/37 275/473/38 267/474/38 +f 266/475/39 273/476/40 265/477/40 +f 265/477/40 280/478/41 272/466/41 +f 271/468/42 278/479/35 270/469/35 +f 269/471/36 276/480/37 268/472/37 +f 267/481/38 274/482/39 266/475/39 +f 288/483/49 295/484/50 287/485/50 +f 286/486/43 293/487/44 285/488/44 +f 284/489/45 291/490/46 283/491/46 +f 282/492/47 289/493/48 281/494/48 +f 281/494/48 296/495/49 288/483/49 +f 287/485/50 294/496/43 286/486/43 +f 285/488/44 292/497/45 284/489/45 +f 283/498/46 290/499/47 282/492/47 +f 304/500/37 311/501/38 303/502/38 +f 302/503/39 309/504/40 301/505/40 +f 300/506/41 307/507/42 299/508/42 +f 298/509/35 305/510/36 297/511/36 +f 297/511/36 312/512/37 304/500/37 +f 303/502/38 310/513/39 302/503/39 +f 301/505/40 308/514/41 300/506/41 +f 299/515/42 306/516/35 298/509/35 +f 320/517/45 327/518/46 319/519/46 +f 318/520/47 325/521/48 317/522/48 +f 316/523/49 323/524/50 315/525/50 +f 314/526/43 321/527/44 313/528/44 +f 313/528/44 328/529/45 320/517/45 +f 319/519/46 326/530/47 318/520/47 +f 317/522/48 324/531/49 316/523/49 +f 315/532/50 322/533/43 314/526/43 +f 331/534/15 338/535/51 330/536/3 +f 336/537/5 343/538/52 335/539/16 +f 334/540/4 341/541/53 333/542/9 +f 332/543/6 339/544/54 331/545/15 +f 330/536/3 337/546/55 329/547/10 +f 329/547/10 344/548/56 336/537/5 +f 335/539/16 342/549/57 334/540/4 +f 333/542/9 340/550/58 332/543/6 +f 341/551/53 349/552/59 348/553/60 +f 338/554/51 345/555/61 337/556/55 +f 337/556/55 351/557/62 344/558/56 +f 343/538/52 349/552/59 342/559/57 +f 340/560/58 348/553/60 347/561/63 +f 343/538/52 351/557/62 350/562/64 +f 351/557/62 357/563/65 350/562/64 +f 348/553/60 356/564/66 355/565/67 +f 345/555/61 353/566/68 352/567/69 +f 345/555/61 358/568/70 351/557/62 +f 350/562/64 356/564/66 349/552/59 +f 348/553/60 354/569/71 347/561/63 +f 340/560/58 347/561/63 339/570/54 +f 347/561/63 354/569/71 339/570/54 +f 338/554/51 339/571/54 346/572/72 +f 346/572/72 339/571/54 353/566/68 +f 358/573/70 364/574/2 357/563/65 +f 369/575/16 376/576/73 368/577/4 +f 355/578/67 363/579/74 361/580/9 +f 352/581/69 359/582/75 360/583/10 +f 339/584/54 359/582/75 353/585/68 +f 352/581/69 365/586/76 358/573/70 +f 339/587/54 362/588/77 366/589/1 +f 357/563/65 363/579/74 356/590/66 +f 355/578/67 362/588/77 354/591/71 +f 374/592/6 381/593/78 373/594/15 +f 372/595/3 379/596/79 371/597/10 +f 370/598/5 377/599/80 369/600/16 +f 368/577/4 375/601/81 367/602/9 +f 367/602/9 382/603/82 374/592/6 +f 373/594/15 380/604/83 372/595/3 +f 371/597/10 378/605/84 370/598/5 +f 380/606/83 386/607/85 379/608/79 +f 375/609/81 384/610/86 383/611/87 +f 382/612/82 383/611/87 389/613/88 +f 381/593/78 387/614/89 380/606/83 +f 379/608/79 385/615/90 378/616/84 +f 382/612/82 388/617/91 381/593/78 +f 388/617/91 396/618/92 395/619/93 +f 386/607/85 394/620/94 393/621/95 +f 383/611/87 391/622/96 390/623/97 +f 389/613/88 390/623/97 396/618/92 +f 388/617/91 394/620/94 387/614/89 +f 386/607/85 392/624/98 385/615/90 +f 378/616/84 385/615/90 377/625/80 +f 385/615/90 392/624/98 377/625/80 +f 376/626/73 377/627/80 384/610/86 +f 384/610/86 377/627/80 391/622/96 +f 396/628/92 402/629/2 395/619/93 +f 393/630/95 401/631/76 399/632/10 +f 390/633/97 397/634/77 398/635/9 +f 377/636/80 397/634/77 391/637/96 +f 390/633/97 403/638/74 396/628/92 +f 377/639/80 400/640/75 404/641/1 +f 395/619/93 401/631/76 394/642/94 +f 393/630/95 400/640/75 392/643/98 +f 407/644/9 414/645/99 406/646/6 +f 412/647/3 419/648/100 411/649/10 +f 410/650/5 417/651/101 409/652/16 +f 408/653/4 415/654/77 407/655/9 +f 406/646/6 413/656/102 405/657/15 +f 405/657/15 420/658/103 412/647/3 +f 411/649/10 418/659/104 410/650/5 +f 409/652/16 416/660/105 408/653/4 +f 417/661/101 425/662/106 424/663/107 +f 414/664/99 421/665/108 413/666/102 +f 413/666/102 427/667/109 420/668/103 +f 419/648/100 425/662/106 418/669/104 +f 416/670/105 424/663/107 423/671/110 +f 420/668/103 426/672/76 419/648/100 +f 426/672/76 434/673/111 433/674/112 +f 424/663/107 432/675/113 431/676/114 +f 421/665/108 429/677/115 428/678/116 +f 421/665/108 434/673/111 427/667/109 +f 426/672/76 432/675/113 425/662/106 +f 424/663/107 430/679/117 423/671/110 +f 416/670/105 423/671/110 415/680/77 +f 423/671/110 430/679/117 415/680/77 +f 414/664/99 415/681/77 422/682/118 +f 422/682/118 415/681/77 429/677/115 +f 433/674/112 441/683/91 440/684/2 +f 445/685/10 452/686/119 444/687/5 +f 431/688/114 439/689/64 437/690/16 +f 428/691/116 435/692/54 436/693/15 +f 429/694/115 442/695/1 435/692/54 +f 434/696/111 436/693/15 441/683/91 +f 430/697/117 442/698/1 415/699/77 +f 433/674/112 439/689/64 432/700/113 +f 431/688/114 438/701/80 430/697/117 +f 450/702/4 457/703/120 449/704/9 +f 448/705/6 455/706/121 447/707/15 +f 446/708/3 453/709/75 445/710/10 +f 444/687/5 451/711/122 443/712/16 +f 443/712/16 458/713/123 450/702/4 +f 449/704/9 456/714/124 448/705/6 +f 447/707/15 454/715/125 446/708/3 +f 455/716/121 463/717/126 462/718/127 +f 452/719/119 459/720/128 451/721/122 +f 451/721/122 465/722/129 458/723/123 +f 457/703/120 463/717/126 456/724/124 +f 454/725/125 462/718/127 461/726/130 +f 458/723/123 464/727/74 457/703/120 +f 464/727/74 472/728/131 471/729/132 +f 462/718/127 470/730/133 469/731/134 +f 459/720/128 467/732/135 466/733/136 +f 465/722/129 466/733/136 472/728/131 +f 464/727/74 470/730/133 463/717/126 +f 462/718/127 468/734/137 461/726/130 +f 454/725/125 461/726/130 453/735/75 +f 461/726/130 468/734/137 453/735/75 +f 452/719/119 453/736/75 460/737/138 +f 460/737/138 453/736/75 467/732/135 +f 471/729/132 479/738/64 478/739/2 +f 469/740/134 477/741/91 475/742/15 +f 467/743/135 474/744/16 466/745/136 +f 453/746/75 473/747/80 467/743/135 +f 466/745/136 479/738/64 472/748/131 +f 468/749/137 480/750/1 453/751/75 +f 471/729/132 477/741/91 470/752/133 +f 469/740/134 476/753/54 468/749/137 +f 69/162/5 70/164/7 54/85/7 +f 62/177/8 63/180/9 47/93/9 +f 70/164/7 71/165/10 55/91/10 +f 63/180/9 64/182/11 48/98/11 +f 71/165/10 72/167/12 56/96/12 +f 64/182/11 65/184/4 49/105/4 +f 57/168/3 58/170/13 42/101/13 +f 72/167/12 57/168/3 41/103/3 +f 65/184/4 66/185/14 50/110/14 +f 58/170/13 59/172/15 43/108/15 +f 66/185/14 67/187/16 51/115/16 +f 59/172/15 60/174/17 44/118/17 +f 67/187/16 68/189/18 52/121/18 +f 60/174/17 61/175/6 45/298/6 +f 68/189/18 69/162/5 53/87/5 +f 61/178/6 62/177/8 46/88/8 +f 84/116/19 100/754/19 99/362/20 +f 85/122/21 101/755/21 100/363/19 +f 86/292/22 102/756/22 101/364/21 +f 87/293/23 103/757/23 102/365/22 +f 88/294/24 104/758/24 103/366/23 +f 73/296/25 89/759/25 104/367/24 +f 73/102/25 74/295/26 90/368/26 +f 75/297/27 91/760/27 90/370/26 +f 76/113/28 92/761/28 91/371/27 +f 77/119/29 93/762/29 92/372/28 +f 78/299/30 94/763/30 93/373/29 +f 79/89/31 95/764/31 94/374/30 +f 80/94/32 96/765/32 95/375/31 +f 80/100/32 81/99/33 97/376/33 +f 81/107/33 82/106/34 98/378/34 +f 83/111/20 99/766/20 98/380/34 +f 117/227/5 133/135/5 132/136/18 +f 110/191/8 126/148/8 125/151/6 +f 118/194/7 134/133/7 133/135/5 +f 111/198/9 127/146/9 126/148/8 +f 119/199/10 135/129/10 134/133/7 +f 112/203/11 128/144/11 127/146/9 +f 120/205/12 136/161/12 135/129/10 +f 113/207/4 129/143/4 128/144/11 +f 106/208/13 122/158/13 121/160/3 +f 105/211/3 121/160/3 136/161/12 +f 114/214/14 130/141/14 129/143/4 +f 107/215/15 123/155/15 122/158/13 +f 115/219/16 131/138/16 130/141/14 +f 108/221/17 124/154/17 123/155/15 +f 116/223/18 132/136/18 131/138/16 +f 109/225/6 125/152/6 124/154/17 +f 137/159/3 153/169/3 168/166/12 +f 146/140/14 162/186/14 161/183/4 +f 139/156/15 155/316/15 154/171/13 +f 147/139/16 163/188/16 162/186/14 +f 140/153/17 156/173/17 155/316/15 +f 148/137/18 164/190/18 163/188/16 +f 141/313/6 157/317/6 156/173/17 +f 149/134/5 165/314/5 164/190/18 +f 142/149/8 158/318/8 157/176/6 +f 150/132/7 166/163/7 165/314/5 +f 143/147/9 159/179/9 158/318/8 +f 151/131/10 167/315/10 166/163/7 +f 144/145/11 160/181/11 159/179/9 +f 152/130/12 168/166/12 167/315/10 +f 145/142/4 161/183/4 160/181/11 +f 138/157/13 154/171/13 153/169/3 +f 178/325/14 194/767/14 195/381/16 +f 171/326/15 187/768/15 188/382/17 +f 179/327/16 195/769/16 196/383/18 +f 172/328/17 188/770/17 189/384/6 +f 180/329/18 196/771/18 197/385/5 +f 173/192/6 189/772/6 190/386/8 +f 181/195/5 197/773/5 198/387/7 +f 174/320/8 190/774/8 191/388/9 +f 182/200/7 198/775/7 199/389/10 +f 175/321/9 191/776/9 192/390/11 +f 183/322/10 199/777/10 200/391/12 +f 176/323/11 192/778/11 193/392/4 +f 169/393/3 185/779/3 186/394/13 +f 184/212/12 200/780/12 185/395/3 +f 177/324/4 193/781/4 194/396/14 +f 170/216/13 186/782/13 187/397/15 +f 208/398/35 216/410/35 215/399/36 +f 206/401/37 214/411/37 213/402/38 +f 204/404/39 212/412/39 211/405/40 +f 202/407/41 210/414/41 209/408/42 +f 201/409/42 209/408/42 216/410/35 +f 207/400/36 215/399/36 214/411/37 +f 205/403/38 213/402/38 212/412/39 +f 203/413/40 211/783/40 210/414/41 +f 224/415/43 232/427/43 231/416/44 +f 222/418/45 230/428/45 229/419/46 +f 220/421/47 228/429/47 227/422/48 +f 218/424/49 226/431/49 225/425/50 +f 217/426/50 225/425/50 232/427/43 +f 223/417/44 231/416/44 230/428/45 +f 221/420/46 229/419/46 228/429/47 +f 219/430/48 227/784/48 226/431/49 +f 240/432/39 248/444/39 247/433/40 +f 238/435/41 246/445/41 245/436/42 +f 236/438/35 244/446/35 243/439/36 +f 234/441/37 242/448/37 241/442/38 +f 233/443/38 241/442/38 248/444/39 +f 239/434/40 247/433/40 246/445/41 +f 237/437/42 245/436/42 244/446/35 +f 235/447/36 243/785/36 242/448/37 +f 256/449/47 264/461/47 263/450/48 +f 254/452/49 262/462/49 261/453/50 +f 252/455/43 260/463/43 259/456/44 +f 250/458/45 258/465/45 257/459/46 +f 249/460/46 257/459/46 264/461/47 +f 255/451/48 263/450/48 262/462/49 +f 253/454/50 261/453/50 260/463/43 +f 251/464/44 259/786/44 258/465/45 +f 272/466/41 280/478/41 279/467/42 +f 270/469/35 278/479/35 277/470/36 +f 268/472/37 276/480/37 275/473/38 +f 266/475/39 274/482/39 273/476/40 +f 265/477/40 273/476/40 280/478/41 +f 271/468/42 279/467/42 278/479/35 +f 269/471/36 277/470/36 276/480/37 +f 267/481/38 275/787/38 274/482/39 +f 288/483/49 296/495/49 295/484/50 +f 286/486/43 294/496/43 293/487/44 +f 284/489/45 292/497/45 291/490/46 +f 282/492/47 290/499/47 289/493/48 +f 281/494/48 289/493/48 296/495/49 +f 287/485/50 295/484/50 294/496/43 +f 285/488/44 293/487/44 292/497/45 +f 283/498/46 291/788/46 290/499/47 +f 304/500/37 312/512/37 311/501/38 +f 302/503/39 310/513/39 309/504/40 +f 300/506/41 308/514/41 307/507/42 +f 298/509/35 306/516/35 305/510/36 +f 297/511/36 305/510/36 312/512/37 +f 303/502/38 311/501/38 310/513/39 +f 301/505/40 309/504/40 308/514/41 +f 299/515/42 307/789/42 306/516/35 +f 320/517/45 328/529/45 327/518/46 +f 318/520/47 326/530/47 325/521/48 +f 316/523/49 324/531/49 323/524/50 +f 314/526/43 322/533/43 321/527/44 +f 313/528/44 321/527/44 328/529/45 +f 319/519/46 327/518/46 326/530/47 +f 317/522/48 325/521/48 324/531/49 +f 315/532/50 323/790/50 322/533/43 +f 331/534/15 339/791/54 338/535/51 +f 336/537/5 344/548/56 343/538/52 +f 334/540/4 342/549/57 341/541/53 +f 332/543/6 340/550/58 339/544/54 +f 330/536/3 338/535/51 337/546/55 +f 329/547/10 337/546/55 344/548/56 +f 335/539/16 343/538/52 342/549/57 +f 333/542/9 341/541/53 340/550/58 +f 341/551/53 342/559/57 349/552/59 +f 338/554/51 346/572/72 345/555/61 +f 337/556/55 345/555/61 351/557/62 +f 343/538/52 350/562/64 349/552/59 +f 340/560/58 341/551/53 348/553/60 +f 343/538/52 344/558/56 351/557/62 +f 351/557/62 358/568/70 357/563/65 +f 348/553/60 349/552/59 356/564/66 +f 345/555/61 346/572/72 353/566/68 +f 345/555/61 352/567/69 358/568/70 +f 350/562/64 357/563/65 356/564/66 +f 348/553/60 355/565/67 354/569/71 +f 358/573/70 365/586/76 364/574/2 +f 369/575/16 377/792/80 376/576/73 +f 355/578/67 356/590/66 363/579/74 +f 352/581/69 353/585/68 359/582/75 +f 339/584/54 366/793/1 359/582/75 +f 352/581/69 360/583/10 365/586/76 +f 339/587/54 354/591/71 362/588/77 +f 357/563/65 364/574/2 363/579/74 +f 355/578/67 361/580/9 362/588/77 +f 374/592/6 382/603/82 381/593/78 +f 372/595/3 380/604/83 379/596/79 +f 370/598/5 378/605/84 377/599/80 +f 368/577/4 376/576/73 375/601/81 +f 367/602/9 375/601/81 382/603/82 +f 373/594/15 381/593/78 380/604/83 +f 371/597/10 379/596/79 378/605/84 +f 380/606/83 387/614/89 386/607/85 +f 375/609/81 376/626/73 384/610/86 +f 382/612/82 375/609/81 383/611/87 +f 381/593/78 388/617/91 387/614/89 +f 379/608/79 386/607/85 385/615/90 +f 382/612/82 389/613/88 388/617/91 +f 388/617/91 389/613/88 396/618/92 +f 386/607/85 387/614/89 394/620/94 +f 383/611/87 384/610/86 391/622/96 +f 389/613/88 383/611/87 390/623/97 +f 388/617/91 395/619/93 394/620/94 +f 386/607/85 393/621/95 392/624/98 +f 396/628/92 403/638/74 402/629/2 +f 393/630/95 394/642/94 401/631/76 +f 390/633/97 391/637/96 397/634/77 +f 377/636/80 404/794/1 397/634/77 +f 390/633/97 398/635/9 403/638/74 +f 377/639/80 392/643/98 400/640/75 +f 395/619/93 402/629/2 401/631/76 +f 393/630/95 399/632/10 400/640/75 +f 407/644/9 415/795/77 414/645/99 +f 412/647/3 420/658/103 419/648/100 +f 410/650/5 418/659/104 417/651/101 +f 408/653/4 416/660/105 415/654/77 +f 406/646/6 414/645/99 413/656/102 +f 405/657/15 413/656/102 420/658/103 +f 411/649/10 419/648/100 418/659/104 +f 409/652/16 417/651/101 416/660/105 +f 417/661/101 418/669/104 425/662/106 +f 414/664/99 422/682/118 421/665/108 +f 413/666/102 421/665/108 427/667/109 +f 419/648/100 426/672/76 425/662/106 +f 416/670/105 417/661/101 424/663/107 +f 420/668/103 427/667/109 426/672/76 +f 426/672/76 427/667/109 434/673/111 +f 424/663/107 425/662/106 432/675/113 +f 421/665/108 422/682/118 429/677/115 +f 421/665/108 428/678/116 434/673/111 +f 426/672/76 433/674/112 432/675/113 +f 424/663/107 431/676/114 430/679/117 +f 433/674/112 434/696/111 441/683/91 +f 445/685/10 453/796/75 452/686/119 +f 431/688/114 432/700/113 439/689/64 +f 428/691/116 429/694/115 435/692/54 +f 429/694/115 415/797/77 442/695/1 +f 434/696/111 428/691/116 436/693/15 +f 430/697/117 438/701/80 442/698/1 +f 433/674/112 440/684/2 439/689/64 +f 431/688/114 437/690/16 438/701/80 +f 450/702/4 458/713/123 457/703/120 +f 448/705/6 456/714/124 455/706/121 +f 446/708/3 454/715/125 453/709/75 +f 444/687/5 452/686/119 451/711/122 +f 443/712/16 451/711/122 458/713/123 +f 449/704/9 457/703/120 456/714/124 +f 447/707/15 455/706/121 454/715/125 +f 455/716/121 456/724/124 463/717/126 +f 452/719/119 460/737/138 459/720/128 +f 451/721/122 459/720/128 465/722/129 +f 457/703/120 464/727/74 463/717/126 +f 454/725/125 455/716/121 462/718/127 +f 458/723/123 465/722/129 464/727/74 +f 464/727/74 465/722/129 472/728/131 +f 462/718/127 463/717/126 470/730/133 +f 459/720/128 460/737/138 467/732/135 +f 465/722/129 459/720/128 466/733/136 +f 464/727/74 471/729/132 470/730/133 +f 462/718/127 469/731/134 468/734/137 +f 471/729/132 472/748/131 479/738/64 +f 469/740/134 470/752/133 477/741/91 +f 467/743/135 473/747/80 474/744/16 +f 453/746/75 480/798/1 473/747/80 +f 466/745/136 474/744/16 479/738/64 +f 468/749/137 476/753/54 480/750/1 +f 471/729/132 478/739/2 477/741/91 +f 469/740/134 475/742/15 476/753/54 diff --git a/src/main/resources/assets/hbm/textures/models/machines/hydrotreater.png b/src/main/resources/assets/hbm/textures/models/machines/hydrotreater.png new file mode 100644 index 0000000000000000000000000000000000000000..51df73ed4d725f086f4c8e8c644d45c76e9b0c72 GIT binary patch literal 941 zcmeAS@N?(olHy`uVBq!ia0vp^CxEztgAGXf1*^>mQY^(zo*^7SP{WbZ!N9h8GYd#zO` zNieg1l92cv#r^9i9=Ry&#!$cS?#$Rt)8_yBeQA2zmG4WZ1)bXc^zokirTzW&|9_TV zpZ|Yle?5ELr_&qN8H%@6ypp*)J=s6i-v9Hzx9gM7w*)V1c2H0d;NW2CPWDgGn>Jm4 z{iC)2ww@|IS0cc1ZeO!aY2Ul=7vo=gU-UdTm5-^h0jipb>ENT6t8QFd|EzZH!BYcCCByCC|0<32t@7_cafIXN_wVe!hl+i@d~N+{t-k%JPK20f zvY+4RdubI=iN7y<ox?|1K+UjJHocG2(8XNxUYy}q4%zQMBU<;j0id>a*R$Ru6;o_fjumF1Ry z``-E=Tf__XZ-Lph)UDrNO=~DH`?XJh>$~z*x(ai8U*DR#defcNZYY)m-C=e;Y3DZ1 zd6yj(B1+=>Y*}aM%d#+SzjJAe{kyumHUB?+*zoh;qeqVv`d=#uyihQC`|MfT>!&-* z%gbkr-byTgu`4foZ9~DNUF&Y|$~ELU7jZ!*$#Fq*fzdI(rDcY1EDk$^jFW9y_O@u< z#`THnLIShOR{ZVTc$~Fm8E^P}zN@}-nh*4q2>2cQFtxryZX@?^g%4a-9O{|VizmnG znXUvz@_o;W%Gt~RZ!IbOb9q|f*U#(z8&vf9Z(Q_LfV=4#|HfzkxR%%5`t|=5!5FF6 z_+9(#!9HMGLyCr3@khN@%e>yS>b{qK)!`GzgR(Ure?Popetm5?-~Vm)&P1o756oE) Wk~0jtq_ctfkHOQ`&t;ucLK6UiO_Q4d literal 0 HcmV?d00001 From 041b768eda0dfa9500cc31b6dc92f890cac14dac Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 29 Jan 2024 09:24:25 +0100 Subject: [PATCH 9/9] brick by brick, suck my --- changelog | 63 ++----------------- gradle.properties | 2 +- .../com/hbm/blocks/generic/BlockDecoCT.java | 17 +++++ .../java/com/hbm/blocks/generic/BlockOre.java | 22 +------ src/main/java/com/hbm/lib/RefStrings.java | 2 +- .../machine/TileEntityElectrolyser.java | 8 +-- .../machine/TileEntityMachineRadarNT.java | 2 +- 7 files changed, 31 insertions(+), 85 deletions(-) diff --git a/changelog b/changelog index 265da8cbc..c44e3345d 100644 --- a/changelog +++ b/changelog @@ -1,61 +1,8 @@ -## Added -* Muffler - * An upgrade-like item that replaces the old muffler block - * Creates 16 when crafted, however it is not returned when the muffled machine is broken - * Should work with pretty much all machines that use looped sounds, as well as a few other noisy ones (compressors, diesel generators, presses) - * Simply right-click to install, doesn't need to be inserted into an upgrade slot, in fact it works on a few machines that have no GUI at all -* Lemegeton - * A book that can do material upgrading, like turning steel into HSS, HSS into Tc-steel, lead into gold, gold into bismuth, bismuth into osmiridium, etc. - * Basically allows a material to be upgraded to the next gating material in progression - * Obviously unobtainable in survival mode - * I don't know how this would ever be useful but I was stuck in a phonecall at work for two consecutive hours and didn't have anything else to do - * They should invent handsets that don't hurt when you hold them onto your head for too long - * Has no NEI handler because the call ended before I got to that -* Bricked furnace - * An earlygame machine made from smooth stone and bricks - * Largely identical to vanilla furnaces - * Like the wood burner, it will collect ashes from burnt fuel - * Certain recipes are sped up, sand and cobblestone are smelted at twice the speed while (fire) clay is smelted at quadruple speed - * This means that making a clay brick block now takes as much time using a bricked furnace as one single furnace operation in a vanilla furnace - * I *really* like bricks and I don't feel like waiting until I can get an arc furnace to mass produce them at a sensible pace -* Dwarven pickaxe - * Earlygame tool made from iron and copper - * Has the harvest level of iron, a durability of just 250 but the AoE ability - * Great for getting cobblestone quickly or making tunnels when you don't have desh or electric tools yet -* Cracked key - * A single-use item that can open red rooms like the red key, but does not work as a skeleton key for locks - * Spawns in dungeon chests or as a rare drop from hostile mobs - * Allows red rooms to be accessed without crafting the red key - ## Changed -* Large turbines, levis and geothermal heat exchangers now have their own sounds when operating -* Anvils will now list ingredients in red if those aren't present in the player's inventory -* Derricks now only need one set of steel pipes instead of 3. They can also be recycled by shredding, returning 32 steel -* Pumpjacks now need a single desh motor instead of two regular ones -* Rare earth ore, instead of detonating into a million fragments that are annoying to process, clog inventories and just cause everyone to not mine that ore in earlygame, will now drop a chunk of rare earth ore - * Rare earth chunks can be shredded directly into one unit of desh blend - * For efficiencymaxxers, silk-touching rare earth still works as expected, yielding two units when shredded - * The fortune enchantment should work as expected, dropping multiple chunks. Yay! - * To get things that can be useful in small amounts in earlygame like boron and cobalt (boron for Atlas and cobalt for tools), the rare earth chunk can be hammered down into fragments on a steel anvil - * Cerium and lanthanium, due to being useless, only have a 10% chance of producing a fragment - * Boron and cobalt each produce a guaranteed fragment, as well as an additional one with a 50% chance - * Neodymium and niobium both yield a shard 50% of the time -* Rebalanced all the food items so their saturation values aren't ridiculously high (turns out - the number represents a *multiplier* for the hunger value and not a flat number) -* Dirt MREs are now just regular low-quality MREs made from latex packaging and some easily obtainable earlygame ingredients - wheat, rotten flesh and saplings (makes 4) -* The recipe for the chemical plant has been slightly simplified (again) -* Iron furnaces now have a 20% faster base smelting speed, making them complete operations in 8 seconds instead of 10 without upgrades -* Due to rising chlorine prices and a failing halogen market, the recipe of combination smelting chlorocalcite into chlorine and calcium has been added back - * For legacy reasons, the chlorocalcite processing chain involving chemical plants and electrolyzers will continue to work -* Outer crater biomes can no longer override inner crater biomes, allowing craters to be "cleaned" by nuking them again with lower yield weapons +* Sped up the electrolyzer, fluid electrolysis now takes 3 seconds instead of 5 and crystal processing now only takes 20 seconds instead of 50 +* Increased electrolyzer pouring speed to 3 nuggets per tick instead of 1 +* Deco blocks now only drop ingots 25% of the time + * The incredibly common structures now only yield a few dozen free ingots instead of several stacks. How horrible! ## Fixed -* Fixed basalt ores dropping their items with invalid metadata -* Fixed creative infinite fluid tanks not being able to fill fluid gauges at >0PU -* Fixed an issue where repeatedly opening and closing certain doors would cause their sound loop to get stuck running forever -* Fixed radar screens behaving weirdly when out of then intended range. The max interaction range for radars is now infinite, and radars will send a second information packet to players near connected radars -* Fixed very rare bug where waiting for wood ash to build up in the wood burner and then clearing the slot will remove twice as much ash on the internal counter for the initial ash item created -* Fixed crater biome fog tinting applying even if there is no nearby crater biome, causing oddities like underground fog being all white instead of being dark as it should be -* Crater biome fog no longer applies underwater, fixing an issue where being in water would cause the fog to be white instead of water-colored -* Fixed "pipette not empty" message crashing servers -* Fixed crash caused by certain modded blocks like Thermal's lumium lights being turned into falling blocks by impulse grenades or nuke aftereffects -* Fixed receiver subscription persisting when 256k tanks explode, causing them to infinitely receive and the void fluids +* Fixed radar screens not working at all and potentially freezing the game diff --git a/gradle.properties b/gradle.properties index d6e5796c3..2bc727da5 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=4858 +mod_build_number=4859 credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\ diff --git a/src/main/java/com/hbm/blocks/generic/BlockDecoCT.java b/src/main/java/com/hbm/blocks/generic/BlockDecoCT.java index c6197d163..d16524637 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockDecoCT.java +++ b/src/main/java/com/hbm/blocks/generic/BlockDecoCT.java @@ -1,5 +1,9 @@ package com.hbm.blocks.generic; +import java.util.Random; + +import com.hbm.blocks.ModBlocks; +import com.hbm.items.ModItems; import com.hbm.render.block.ct.CT; import com.hbm.render.block.ct.CTStitchReceiver; import com.hbm.render.block.ct.IBlockCT; @@ -8,6 +12,7 @@ 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.Item; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; @@ -35,4 +40,16 @@ public class BlockDecoCT extends BlockOre implements IBlockCT{ public IIcon[] getFragments(IBlockAccess world, int x, int y, int z) { return rec.fragCache; } + + @Override + public Item getItemDropped(int i, Random rand, int j) { + if(rand.nextInt(4) != 0) return null; + if(this == ModBlocks.deco_aluminium) return ModItems.ingot_aluminium; + if(this == ModBlocks.deco_beryllium) return ModItems.ingot_beryllium; + if(this == ModBlocks.deco_lead) return ModItems.ingot_lead; + if(this == ModBlocks.deco_red_copper) return ModItems.ingot_red_copper; + if(this == ModBlocks.deco_steel) return ModItems.ingot_steel; + if(this == ModBlocks.deco_tungsten) return ModItems.ingot_tungsten; + return null; + } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockOre.java b/src/main/java/com/hbm/blocks/generic/BlockOre.java index f54c9eff6..be87197a0 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockOre.java +++ b/src/main/java/com/hbm/blocks/generic/BlockOre.java @@ -154,29 +154,11 @@ public class BlockOre extends Block { if(this == ModBlocks.ore_rare || this == ModBlocks.ore_gneiss_rare) { return ModItems.chunk_ore; } - if(this == ModBlocks.deco_aluminium) { - return ModItems.ingot_aluminium; - } - if(this == ModBlocks.deco_beryllium) { - return ModItems.ingot_beryllium; - } - if(this == ModBlocks.deco_lead) { - return ModItems.ingot_lead; - } - if(this == ModBlocks.deco_red_copper) { - return ModItems.ingot_red_copper; - } - if(this == ModBlocks.deco_steel) { - return ModItems.ingot_steel; - } if(this == ModBlocks.deco_titanium) { - return ModItems.ingot_titanium; - } - if(this == ModBlocks.deco_tungsten) { - return ModItems.ingot_tungsten; + return rand.nextInt(4) == 0 ? ModItems.ingot_titanium : null; } if(this == ModBlocks.deco_asbestos) { - return ModItems.ingot_asbestos; + return rand.nextInt(4) == 0 ? ModItems.ingot_asbestos : null; } if(this == ModBlocks.ore_asbestos || this == ModBlocks.ore_gneiss_asbestos) { return ModItems.ingot_asbestos; diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 713dc1565..1315d08e9 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 (4858)"; + public static final String VERSION = "1.0.27 BETA (4859)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java index c999c9a5a..749487b2b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java @@ -57,10 +57,10 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn public int usage; public int progressFluid; - public static final int processFluidTimeBase = 100; + public static final int processFluidTimeBase = 60; public int processFluidTime; public int progressOre; - public static final int processOreTimeBase = 1000; + public static final int processOreTimeBase = 600; public int processOreTime; public MaterialStack leftStack; @@ -167,7 +167,7 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn toCast.add(this.leftStack); Vec3 impact = Vec3.createVectorHelper(0, 0, 0); - MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 5.875D, yCoord + 2D, zCoord + 0.5D + dir.offsetZ * 5.875D, 6, true, toCast, MaterialShapes.NUGGET.q(1), impact); + MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 5.875D, yCoord + 2D, zCoord + 0.5D + dir.offsetZ * 5.875D, 6, true, toCast, MaterialShapes.NUGGET.q(3), impact); if(didPour != null) { NBTTagCompound data = new NBTTagCompound(); @@ -190,7 +190,7 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn toCast.add(this.rightStack); Vec3 impact = Vec3.createVectorHelper(0, 0, 0); - MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 5.875D, yCoord + 2D, zCoord + 0.5D + dir.offsetZ * 5.875D, 6, true, toCast, MaterialShapes.NUGGET.q(1), impact); + MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 5.875D, yCoord + 2D, zCoord + 0.5D + dir.offsetZ * 5.875D, 6, true, toCast, MaterialShapes.NUGGET.q(3), impact); if(didPour != null) { NBTTagCompound data = new NBTTagCompound(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index adf805493..b53f86839 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -208,7 +208,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I screen.refZ = zCoord; screen.range = this.getRange(); screen.linked = true; - PacketDispatcher.wrapper.sendToAllAround(new BufPacket(pos.getX(), pos.getY(), pos.getZ(), this), new TargetPoint(this.worldObj.provider.dimensionId, pos.getX(), pos.getY(), pos.getZ(), 25)); + PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, pos.getX(), pos.getY(), pos.getZ(), 25)); } } }