From d29d58e14f11e4c30b1850bcdb04c36ea0d3d704 Mon Sep 17 00:00:00 2001 From: Bob Date: Wed, 8 Jun 2022 23:47:47 +0200 Subject: [PATCH] conveyorception --- .../java/com/hbm/blocks/IBlockMultiPass.java | 2 - .../com/hbm/blocks/IBlockSideRotation.java | 14 ++ src/main/java/com/hbm/blocks/ModBlocks.java | 6 +- .../com/hbm/blocks/network/BlockConveyor.java | 26 +- .../blocks/network/BlockConveyorChute.java | 30 ++- .../blocks/network/BlockConveyorTriple.java | 32 +++ .../hbm/blocks/network/BlockCraneBase.java | 13 +- .../hbm/blocks/network/CraneExtractor.java | 15 ++ .../com/hbm/blocks/network/CraneInserter.java | 15 ++ .../com/hbm/entity/item/EntityMovingItem.java | 6 +- src/main/java/com/hbm/items/ModItems.java | 6 + .../hbm/items/machine/ItemMetaUpgrade.java | 37 +++ src/main/java/com/hbm/main/ClientProxy.java | 2 + src/main/java/com/hbm/main/MainRegistry.java | 36 ++- .../com/hbm/main/ModEventHandlerClient.java | 2 - .../render/block/RenderBlockSideRotation.java | 84 +++++++ .../hbm/render/block/RenderConveyorChute.java | 231 ++++++++++++++++++ .../network/TileEntityCraneExtractor.java | 2 +- .../blocks/conveyor_double.png.mcmeta | 3 + .../hbm/textures/blocks/conveyor_triple.png | Bin 0 -> 286 bytes .../blocks/conveyor_triple.png.mcmeta | 3 + 21 files changed, 515 insertions(+), 50 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/IBlockSideRotation.java create mode 100644 src/main/java/com/hbm/blocks/network/BlockConveyorTriple.java create mode 100644 src/main/java/com/hbm/items/machine/ItemMetaUpgrade.java create mode 100644 src/main/java/com/hbm/render/block/RenderBlockSideRotation.java create mode 100644 src/main/java/com/hbm/render/block/RenderConveyorChute.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/conveyor_double.png.mcmeta create mode 100644 src/main/resources/assets/hbm/textures/blocks/conveyor_triple.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/conveyor_triple.png.mcmeta diff --git a/src/main/java/com/hbm/blocks/IBlockMultiPass.java b/src/main/java/com/hbm/blocks/IBlockMultiPass.java index 91d91a14b..da8739558 100644 --- a/src/main/java/com/hbm/blocks/IBlockMultiPass.java +++ b/src/main/java/com/hbm/blocks/IBlockMultiPass.java @@ -1,8 +1,6 @@ package com.hbm.blocks; import cpw.mods.fml.client.registry.RenderingRegistry; -import net.minecraft.util.IIcon; -import net.minecraft.world.IBlockAccess; public interface IBlockMultiPass { diff --git a/src/main/java/com/hbm/blocks/IBlockSideRotation.java b/src/main/java/com/hbm/blocks/IBlockSideRotation.java new file mode 100644 index 000000000..d24282cce --- /dev/null +++ b/src/main/java/com/hbm/blocks/IBlockSideRotation.java @@ -0,0 +1,14 @@ +package com.hbm.blocks; + +import cpw.mods.fml.client.registry.RenderingRegistry; +import net.minecraft.world.IBlockAccess; + +public interface IBlockSideRotation { + + public int getRotationFromSide(IBlockAccess world, int x, int y, int z, int side); + + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + public static int getRenderType() { + return renderID; + } +} diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 8931df5ad..61a9e4e08 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -747,6 +747,7 @@ public class ModBlocks { public static Block conveyor; public static Block conveyor_double; + public static Block conveyor_triple; public static Block conveyor_chute; public static Block crane_extractor; public static Block crane_inserter; @@ -1901,7 +1902,8 @@ public class ModBlocks { conveyor = new BlockConveyor().setBlockName("conveyor").setHardness(0.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor"); conveyor_double = new BlockConveyorDouble().setBlockName("conveyor_double").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor_double"); - conveyor_chute = new BlockConveyorChute().setBlockName("conveyor_chute").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor_chute"); + conveyor_triple = new BlockConveyorTriple().setBlockName("conveyor_triple").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor_triple"); + conveyor_chute = new BlockConveyorChute().setBlockName("conveyor_chute").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor"); crane_extractor = new CraneExtractor().setBlockName("crane_extractor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); crane_inserter = new CraneInserter().setBlockName("crane_inserter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); @@ -3062,6 +3064,8 @@ public class ModBlocks { GameRegistry.registerBlock(crane_inserter, crane_inserter.getUnlocalizedName()); GameRegistry.registerBlock(conveyor, conveyor.getUnlocalizedName()); GameRegistry.registerBlock(conveyor_double, conveyor_double.getUnlocalizedName()); + GameRegistry.registerBlock(conveyor_triple, conveyor_triple.getUnlocalizedName()); + GameRegistry.registerBlock(conveyor_chute, conveyor_chute.getUnlocalizedName()); GameRegistry.registerBlock(chain, chain.getUnlocalizedName()); GameRegistry.registerBlock(ladder_sturdy, ladder_sturdy.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/network/BlockConveyor.java b/src/main/java/com/hbm/blocks/network/BlockConveyor.java index 2b945aad6..b4e6afad0 100644 --- a/src/main/java/com/hbm/blocks/network/BlockConveyor.java +++ b/src/main/java/com/hbm/blocks/network/BlockConveyor.java @@ -53,35 +53,11 @@ public class BlockConveyor extends Block implements IConveyorBelt { @Override public Vec3 getTravelLocation(World world, int x, int y, int z, Vec3 itemPos, double speed) { - /*Vec3 snap = this.getClosestSnappingPosition(world, x, y, z, itemPos); - ForgeDirection dir = ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z)); - return Vec3.createVectorHelper(snap.xCoord + dir.offsetX * speed, snap.yCoord, snap.zCoord + dir.offsetZ * speed);*/ - - /*double dist = snap.distanceTo(itemPos); - - if(dist > speed) { - - return Vec3.createVectorHelper( - itemPos.xCoord + (snap.xCoord - itemPos.xCoord) / dist * speed, - snap.yCoord, - itemPos.zCoord + (snap.zCoord - itemPos.zCoord) / dist * speed - ); - } else { - ForgeDirection dir = ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z)); - return Vec3.createVectorHelper(snap.xCoord + dir.offsetX * speed, snap.yCoord, snap.zCoord + dir.offsetZ * speed); - }*/ - - /// ATTEMT 2 /// - /*Vec3 snap = this.getClosestSnappingPosition(world, x, y, z, itemPos); - ForgeDirection dir = ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z)); - return Vec3.createVectorHelper(snap.xCoord - dir.offsetX * speed, snap.yCoord, snap.zCoord - dir.offsetZ * speed);*/ - /// /// - ForgeDirection dir = getTravelDirection(world, x, y, z, itemPos, speed); //snapping point Vec3 snap = this.getClosestSnappingPosition(world, x, y, z, itemPos); //snapping point + speed - Vec3 dest = Vec3.createVectorHelper(snap.xCoord - dir.offsetX * speed, snap.yCoord, snap.zCoord - dir.offsetZ * speed); + Vec3 dest = Vec3.createVectorHelper(snap.xCoord - dir.offsetX * speed, snap.yCoord - dir.offsetY * speed, snap.zCoord - dir.offsetZ * speed); //delta to get to that point Vec3 motion = Vec3.createVectorHelper((dest.xCoord - itemPos.xCoord), (dest.yCoord - itemPos.yCoord), (dest.zCoord - itemPos.zCoord)); double len = motion.lengthVector(); diff --git a/src/main/java/com/hbm/blocks/network/BlockConveyorChute.java b/src/main/java/com/hbm/blocks/network/BlockConveyorChute.java index 8e84098e1..3de9ba9f5 100644 --- a/src/main/java/com/hbm/blocks/network/BlockConveyorChute.java +++ b/src/main/java/com/hbm/blocks/network/BlockConveyorChute.java @@ -1,17 +1,30 @@ package com.hbm.blocks.network; import api.hbm.conveyor.IConveyorBelt; +import cpw.mods.fml.client.registry.RenderingRegistry; import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; public class BlockConveyorChute extends BlockConveyor { + + @Override + public Vec3 getTravelLocation(World world, int x, int y, int z, Vec3 itemPos, double speed) { + + if(world.getBlock(x, y - 1, z) instanceof IConveyorBelt) { + speed *= 5; + } else if(itemPos.yCoord > y + 0.25) { + speed *= 3; + } + + return super.getTravelLocation(world, x, y, z, itemPos, speed); + } @Override public ForgeDirection getTravelDirection(World world, int x, int y, int z, Vec3 itemPos, double speed) { - if(world.getBlock(x, y - 1, z) instanceof IConveyorBelt && itemPos.yCoord - speed < y) { - return ForgeDirection.DOWN; + if(world.getBlock(x, y - 1, z) instanceof IConveyorBelt || itemPos.yCoord > y + 0.25) { + return ForgeDirection.UP; } return ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z)); @@ -20,10 +33,17 @@ public class BlockConveyorChute extends BlockConveyor { @Override public Vec3 getClosestSnappingPosition(World world, int x, int y, int z, Vec3 itemPos) { - if(world.getBlock(x, y - 1, z) instanceof IConveyorBelt && itemPos.yCoord <= y + 0.25) { - return super.getClosestSnappingPosition(world, x, y, z, itemPos); + if(world.getBlock(x, y - 1, z) instanceof IConveyorBelt || itemPos.yCoord > y + 0.25) { + return Vec3.createVectorHelper(x + 0.5, itemPos.yCoord, z + 0.5); } else { - return Vec3.createVectorHelper(x + 0.5, y, z + 0.5); + return super.getClosestSnappingPosition(world, x, y, z, itemPos); } } + + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + + @Override + public int getRenderType() { + return renderID; + } } diff --git a/src/main/java/com/hbm/blocks/network/BlockConveyorTriple.java b/src/main/java/com/hbm/blocks/network/BlockConveyorTriple.java new file mode 100644 index 000000000..06327a90d --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/BlockConveyorTriple.java @@ -0,0 +1,32 @@ +package com.hbm.blocks.network; + +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class BlockConveyorTriple extends BlockConveyor { + + @Override + public Vec3 getClosestSnappingPosition(World world, int x, int y, int z, Vec3 itemPos) { + + ForgeDirection dir = ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z)); + + itemPos.xCoord = MathHelper.clamp_double(itemPos.xCoord, x, x + 1); + itemPos.zCoord = MathHelper.clamp_double(itemPos.zCoord, z, z + 1); + + double posX = x + 0.5; + double posZ = z + 0.5; + + if(dir.offsetX != 0) { + posX = itemPos.xCoord; + posZ += (itemPos.zCoord > posZ + 0.15 ? 0.3125 : itemPos.zCoord < posZ - 0.15 ? -0.3125 : 0); + } + if(dir.offsetZ != 0) { + posZ = itemPos.zCoord; + posX += (itemPos.xCoord > posX + 0.15 ? 0.3125 : itemPos.xCoord < posX - 0.15 ? -0.3125 : 0); + } + + return Vec3.createVectorHelper(posX, y + 0.25, posZ); + } +} diff --git a/src/main/java/com/hbm/blocks/network/BlockCraneBase.java b/src/main/java/com/hbm/blocks/network/BlockCraneBase.java index d2840e41c..d94f0b1ba 100644 --- a/src/main/java/com/hbm/blocks/network/BlockCraneBase.java +++ b/src/main/java/com/hbm/blocks/network/BlockCraneBase.java @@ -1,8 +1,12 @@ package com.hbm.blocks.network; +import com.hbm.blocks.IBlockSideRotation; +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.test.TestConductor; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; +import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -17,7 +21,7 @@ import net.minecraft.util.IIcon; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public abstract class BlockCraneBase extends BlockContainer { +public abstract class BlockCraneBase extends BlockContainer implements IBlockSideRotation { @SideOnly(Side.CLIENT) protected IIcon iconSide; @SideOnly(Side.CLIENT) protected IIcon iconIn; @@ -91,4 +95,11 @@ public abstract class BlockCraneBase extends BlockContainer { return this.iconSide; } + + public static int renderIDClassic = RenderingRegistry.getNextAvailableRenderId(); + + @Override + public int getRenderType() { + return IBlockSideRotation.getRenderType(); + } } diff --git a/src/main/java/com/hbm/blocks/network/CraneExtractor.java b/src/main/java/com/hbm/blocks/network/CraneExtractor.java index c7bf7dce7..228d204ba 100644 --- a/src/main/java/com/hbm/blocks/network/CraneExtractor.java +++ b/src/main/java/com/hbm/blocks/network/CraneExtractor.java @@ -8,6 +8,7 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public class CraneExtractor extends BlockCraneBase { @@ -29,4 +30,18 @@ public class CraneExtractor extends BlockCraneBase { this.iconDirectionalUp = iconRegister.registerIcon(RefStrings.MODID + ":crane_out_side_down"); this.iconDirectionalDown = iconRegister.registerIcon(RefStrings.MODID + ":crane_out_side_up"); } + + @Override + public int getRotationFromSide(IBlockAccess world, int x, int y, int z, int side) { + int meta = world.getBlockMetadata(x, y, z); + + if(meta > 1 && side == 1) { + if(meta == 2) return 0; + if(meta == 3) return 3; + if(meta == 4) return 2; + if(meta == 5) return 1; + } + + return 0; + } } diff --git a/src/main/java/com/hbm/blocks/network/CraneInserter.java b/src/main/java/com/hbm/blocks/network/CraneInserter.java index 69b3b6a5c..87badfa35 100644 --- a/src/main/java/com/hbm/blocks/network/CraneInserter.java +++ b/src/main/java/com/hbm/blocks/network/CraneInserter.java @@ -14,6 +14,7 @@ import net.minecraft.inventory.IInventory; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -162,4 +163,18 @@ public class CraneInserter extends BlockCraneBase implements IEnterableBlock { return toAdd; } + + @Override + public int getRotationFromSide(IBlockAccess world, int x, int y, int z, int side) { + int meta = world.getBlockMetadata(x, y, z); + + if(meta > 1 && side == 1) { + if(meta == 2) return 3; + if(meta == 3) return 0; + if(meta == 4) return 1; + if(meta == 5) return 2; + } + + return 0; + } } diff --git a/src/main/java/com/hbm/entity/item/EntityMovingItem.java b/src/main/java/com/hbm/entity/item/EntityMovingItem.java index 38cbb86c7..406a9c483 100644 --- a/src/main/java/com/hbm/entity/item/EntityMovingItem.java +++ b/src/main/java/com/hbm/entity/item/EntityMovingItem.java @@ -116,10 +116,10 @@ public class EntityMovingItem extends Entity implements IConveyorItem { if(!(b instanceof IConveyorBelt)) { this.setDead(); - EntityItem item = new EntityItem(worldObj, posX, posY, posZ, this.getItemStack()); - item.motionX = this.motionX * 3; + EntityItem item = new EntityItem(worldObj, posX + motionX * 2, posY + motionY * 2, posZ + motionZ * 2, this.getItemStack()); + item.motionX = this.motionX * 2; item.motionY = 0.1; - item.motionZ = this.motionZ * 3; + item.motionZ = this.motionZ * 2; item.velocityChanged = true; worldObj.spawnEntityInWorld(item); return; diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 479020721..60e9685f5 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1951,6 +1951,8 @@ public class ModItems { public static Item upgrade_screm; public static Item upgrade_gc_speed; public static Item upgrade_5g; + public static Item upgrade_stack; + public static Item upgrade_ejector; public static Item ingot_euphemium; public static Item nugget_euphemium; @@ -4697,6 +4699,8 @@ public class ModItems { upgrade_screm = new ItemMachineUpgrade().setUnlocalizedName("upgrade_screm").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":upgrade_screm"); upgrade_gc_speed = new ItemMachineUpgrade().setUnlocalizedName("upgrade_gc_speed").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":upgrade_gc_speed"); upgrade_5g = new ItemMachineUpgrade().setUnlocalizedName("upgrade_5g").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":upgrade_5g"); + upgrade_stack = new ItemMetaUpgrade(3).setUnlocalizedName("upgrade_stack").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":upgrade_stack"); + upgrade_ejector = new ItemMetaUpgrade(3).setUnlocalizedName("upgrade_ejector").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":upgrade_ejector"); wand = new ItemWand().setUnlocalizedName("wand_k").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setFull3D().setTextureName(RefStrings.MODID + ":wand"); wand_s = new ItemWandS().setUnlocalizedName("wand_s").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setFull3D().setTextureName(RefStrings.MODID + ":wand_s"); @@ -6631,6 +6635,8 @@ public class ModItems { GameRegistry.registerItem(upgrade_screm, upgrade_screm.getUnlocalizedName()); GameRegistry.registerItem(upgrade_gc_speed, upgrade_gc_speed.getUnlocalizedName()); GameRegistry.registerItem(upgrade_5g, upgrade_5g.getUnlocalizedName()); + GameRegistry.registerItem(upgrade_stack, upgrade_stack.getUnlocalizedName()); + GameRegistry.registerItem(upgrade_ejector, upgrade_ejector.getUnlocalizedName()); //Machine Templates GameRegistry.registerItem(siren_track, siren_track.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/machine/ItemMetaUpgrade.java b/src/main/java/com/hbm/items/machine/ItemMetaUpgrade.java new file mode 100644 index 000000000..9cbc33aac --- /dev/null +++ b/src/main/java/com/hbm/items/machine/ItemMetaUpgrade.java @@ -0,0 +1,37 @@ +package com.hbm.items.machine; + +import java.util.List; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +public class ItemMetaUpgrade extends ItemMachineUpgrade { + + protected int levels; + + public ItemMetaUpgrade(int levels) { + super(); + this.setMaxDamage(0); + this.setHasSubtypes(true); + this.levels = levels; + } + + public ItemMetaUpgrade(UpgradeType type, int levels) { + super(type); + this.setMaxDamage(0); + this.setHasSubtypes(true); + this.levels = levels; + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(Item item, CreativeTabs tabs, List list) { + + for(int i = 0; i < this.levels; i++) { + list.add(new ItemStack(item, 1, i)); + } + } +} diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 008ff582d..4b2b727d2 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -685,6 +685,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerBlockHandler(new RenderAntennaTop()); RenderingRegistry.registerBlockHandler(new RenderConserve()); RenderingRegistry.registerBlockHandler(new RenderConveyor()); + RenderingRegistry.registerBlockHandler(new RenderConveyorChute()); RenderingRegistry.registerBlockHandler(new RenderRTGBlock()); RenderingRegistry.registerBlockHandler(new RenderSpikeBlock()); RenderingRegistry.registerBlockHandler(new RenderChain()); @@ -700,6 +701,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerBlockHandler(new RenderBlockCT()); RenderingRegistry.registerBlockHandler(new RenderDetCord()); RenderingRegistry.registerBlockHandler(new RenderBlockMultipass()); + RenderingRegistry.registerBlockHandler(new RenderBlockSideRotation()); RenderingRegistry.registerBlockHandler(new RenderDiode()); RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_dynamite.getRenderType(), ResourceManager.charge_dynamite)); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 72ffe6905..57c322fc7 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1072,13 +1072,19 @@ public class MainRegistry { private static HashSet ignoreMappings = new HashSet(); private static HashMap remapItems = new HashMap(); - static { + + @EventHandler + public void handleMissingMappings(FMLMissingMappingsEvent event) { + + ignoreMappings.clear(); + remapItems.clear(); + /// IGNORE /// for(int i = 1; i <= 8; i++) ignoreMappings.add("hbm:item.gasflame" + i); ignoreMappings.add("hbm:item.cyclotron_tower"); ignoreMappings.add("hbm:item.magnet_dee"); /// REMAP /// - remapItems.put("hbm:item.centrifuge_tower", Item.getItemFromBlock(ModBlocks.machine_centrifuge)); + /*remapItems.put("hbm:item.centrifuge_tower", Item.getItemFromBlock(ModBlocks.machine_centrifuge)); remapItems.put("hbm:item.gun_revolver_nopip_ammo", ModItems.ammo_44); remapItems.put("hbm:item.gun_revolver_pip_ammo", ModItems.ammo_44_pip); remapItems.put("hbm:item.gun_calamity_ammo", ModItems.ammo_50bmg); @@ -1091,15 +1097,25 @@ public class MainRegistry { remapItems.put("hbm:item.gun_bolt_action_ammo", ModItems.ammo_20gauge_slug); remapItems.put("hbm:item.gun_fatman_ammo", ModItems.ammo_nuke_high); remapItems.put("hbm:item.gun_mirv_ammo", ModItems.ammo_mirv_high); - remapItems.put("hbm:item.gun_stinger_ammo", ModItems.ammo_stinger_rocket); - } - - - @EventHandler - public void handleMissingMappings(FMLMissingMappingsEvent event) { + remapItems.put("hbm:item.gun_stinger_ammo", ModItems.ammo_stinger_rocket);*/ + + ignoreMappings.add("hbm:item.centrifuge_tower"); + ignoreMappings.add("hbm:item.gun_revolver_nopip_ammo"); + ignoreMappings.add("hbm:item.gun_revolver_pip_ammo"); + ignoreMappings.add("hbm:item.gun_calamity_ammo"); + ignoreMappings.add("hbm:item.gun_lacunae_ammo"); + ignoreMappings.add("hbm:item.gun_rpg_ammo"); + ignoreMappings.add("hbm:item.gun_mp40_ammo"); + ignoreMappings.add("hbm:item.gun_uzi_ammo"); + ignoreMappings.add("hbm:item.gun_uboinik_ammo"); + ignoreMappings.add("hbm:item.gun_lever_action_ammo"); + ignoreMappings.add("hbm:item.gun_bolt_action_ammo"); + ignoreMappings.add("hbm:item.gun_fatman_ammo"); + ignoreMappings.add("hbm:item.gun_mirv_ammo"); + ignoreMappings.add("hbm:item.gun_stinger_ammo"); for(MissingMapping mapping : event.get()) { - + if(ignoreMappings.contains(mapping.name)) { mapping.ignore(); continue; @@ -1107,7 +1123,7 @@ public class MainRegistry { if(mapping.type == GameRegistry.Type.ITEM) { - if(remapItems.containsKey(mapping.name)) { + if(remapItems.get(mapping.name) != null) { mapping.remap(remapItems.get(mapping.name)); continue; } diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 4d24efe10..b9326c13f 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -60,7 +60,6 @@ import com.hbm.util.ArmorUtil; import com.hbm.util.ArmorRegistry.HazardClass; import com.mojang.authlib.minecraft.MinecraftProfileTexture.Type; -import api.hbm.energy.IEnergyConductor; import api.hbm.item.IButtonReceiver; import api.hbm.item.IClickReceiver; @@ -111,7 +110,6 @@ import net.minecraftforge.client.event.RenderWorldLastEvent; import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.client.event.sound.PlaySoundEvent17; import net.minecraftforge.event.entity.player.ItemTooltipEvent; -import net.minecraftforge.oredict.OreDictionary; public class ModEventHandlerClient { diff --git a/src/main/java/com/hbm/render/block/RenderBlockSideRotation.java b/src/main/java/com/hbm/render/block/RenderBlockSideRotation.java new file mode 100644 index 000000000..785cac0ea --- /dev/null +++ b/src/main/java/com/hbm/render/block/RenderBlockSideRotation.java @@ -0,0 +1,84 @@ +package com.hbm.render.block; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.IBlockSideRotation; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.world.IBlockAccess; + +public class RenderBlockSideRotation implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + Tessellator tessellator = Tessellator.instance; + block.setBlockBoundsForItemRender(); + renderer.setRenderBoundsFromBlock(block); + GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F); + GL11.glTranslatef(-0.5F, -0.5F, -0.5F); + + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, -1.0F, 0.0F); + renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 0, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 1.0F, 0.0F); + renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 1, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, -1.0F); + renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 2, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, 1.0F); + renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 3, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(-1.0F, 0.0F, 0.0F); + renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 4, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(1.0F, 0.0F, 0.0F); + renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 5, metadata)); + tessellator.draw(); + + GL11.glTranslatef(0.5F, 0.5F, 0.5F); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + + Tessellator tessellator = Tessellator.instance; + + tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); + + if(!(block instanceof IBlockSideRotation)) { + renderer.renderStandardBlock(block, x, y, z); + return true; + } + + IBlockSideRotation rot = (IBlockSideRotation) block; + + renderer.uvRotateTop = rot.getRotationFromSide(world, x, y, z, 1); + + renderer.setRenderBounds(0.0, 0.0, 0.0, 1.0, 1.0, 1.0); + renderer.renderStandardBlock(block, x, y, z); + + renderer.uvRotateTop = 0; + return true; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return IBlockSideRotation.getRenderType(); + } +} diff --git a/src/main/java/com/hbm/render/block/RenderConveyorChute.java b/src/main/java/com/hbm/render/block/RenderConveyorChute.java new file mode 100644 index 000000000..56c8ded27 --- /dev/null +++ b/src/main/java/com/hbm/render/block/RenderConveyorChute.java @@ -0,0 +1,231 @@ +package com.hbm.render.block; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.network.BlockConveyorChute; + +import api.hbm.conveyor.IConveyorBelt; +import api.hbm.conveyor.IEnterableBlock; +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; + +public class RenderConveyorChute implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int meta, int modelId, RenderBlocks renderer) { + + GL11.glPushMatrix(); + Tessellator tessellator = Tessellator.instance; + tessellator.setColorOpaque_F(1, 1, 1); + + GL11.glTranslatef(-0.5F, -0.5F, -0.5F); + + meta = 2; + + if(meta == 2) { + renderer.uvRotateTop = 3; + renderer.uvRotateBottom = 0; + renderer.uvRotateWest = 3; + } + if(meta == 3) { + renderer.uvRotateTop = 0; + renderer.uvRotateBottom = 3; + renderer.uvRotateEast = 3; + } + if(meta == 4) { + renderer.uvRotateTop = 1; + renderer.uvRotateBottom = 1; + renderer.uvRotateSouth = 3; + } + if(meta == 5) { + renderer.uvRotateTop = 2; + renderer.uvRotateBottom = 2; + renderer.uvRotateNorth = 3; + } + + tessellator.startDrawingQuads(); + renderer.setRenderBounds(0.25D, 0.0D, 0D, 0.75D, 0.25D, 1D); standardBundle(tessellator, block, meta, renderer); + renderer.setRenderBounds(0.0D, 0.0D, 0.25D, 0.25D, 0.25D, 0.75D); standardBundle(tessellator, block, meta, renderer); + renderer.setRenderBounds(0.75D, 0.0D, 0.25D, 1.0D, 0.25D, 0.75D); standardBundle(tessellator, block, meta, renderer); + + renderer.uvRotateTop = 0; + renderer.uvRotateBottom = 0; + renderer.uvRotateNorth = 0; + renderer.uvRotateSouth = 0; + renderer.uvRotateEast = 0; + renderer.uvRotateWest = 0; + + double minOuter = 0.0; + double maxOuter = 1.0; + double minInner = 0.25; + double maxInner = 0.75; + double glassMin = 0.1875; + double glassMax = 0.8175; + + renderer.setRenderBounds(minOuter, 0.0, minOuter, minInner, 1.0, minInner); standardBundle(tessellator, ModBlocks.concrete_smooth, 0, renderer); + renderer.setRenderBounds(maxInner, 0.0, minOuter, maxOuter, 1.0, minInner); standardBundle(tessellator, ModBlocks.concrete_smooth, 0, renderer); + renderer.setRenderBounds(minOuter, 0.0, maxInner, minInner, 1.0, maxOuter); standardBundle(tessellator, ModBlocks.concrete_smooth, 0, renderer); + renderer.setRenderBounds(maxInner, 0.0, maxInner, maxOuter, 1.0, maxOuter); standardBundle(tessellator, ModBlocks.concrete_smooth, 0, renderer); + + IIcon iconGlass = ModBlocks.steel_grate.getIcon(0, 0); + renderer.setOverrideBlockTexture(iconGlass); + + renderer.setRenderBounds(glassMin, 0.25, minInner, glassMin, 1.0, maxInner); standardBundle(tessellator, ModBlocks.steel_grate, 2, renderer); + renderer.setRenderBounds(glassMax, 0.25, minInner, glassMax, 1.0, maxInner); standardBundle(tessellator, ModBlocks.steel_grate, 2, renderer); + renderer.setRenderBounds(minInner, 0.25, glassMin, maxInner, 1.0, glassMin); standardBundle(tessellator, ModBlocks.steel_grate, 2, renderer); + renderer.setRenderBounds(minInner, 0.25, glassMax, maxInner, 1.0, glassMax); standardBundle(tessellator, ModBlocks.steel_grate, 2, renderer); + + tessellator.draw(); + + renderer.clearOverrideBlockTexture(); + + GL11.glPopMatrix(); + } + + private void standardBundle(Tessellator tessellator, Block block, int meta, RenderBlocks renderer) { + tessellator.setNormal(0.0F, -1.0F, 0.0F); + renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 0, meta)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 1.0F, 0.0F); + renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 1, meta)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, -1.0F); + renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 2, meta)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, 1.0F); + renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 3, meta)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(-1.0F, 0.0F, 0.0F); + renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 4, meta)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(1.0F, 0.0F, 0.0F); + renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 5, meta)); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + + Tessellator tessellator = Tessellator.instance; + int meta = world.getBlockMetadata(x, y, z); + + tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); + tessellator.setColorOpaque_F(1, 1, 1); + + boolean belt = false; + + boolean nX = world.getBlock(x - 1, y, z) instanceof IConveyorBelt; + boolean pX = world.getBlock(x + 1, y, z) instanceof IConveyorBelt; + boolean nZ = world.getBlock(x, y, z - 1) instanceof IConveyorBelt; + boolean pZ = world.getBlock(x, y, z + 1) instanceof IConveyorBelt; + + + if(y > 0) { + Block below = world.getBlock(x, y - 1, z); + if(!(below instanceof IConveyorBelt || below instanceof IEnterableBlock)) { + + if(meta == 2) { + renderer.uvRotateTop = 3; + renderer.uvRotateBottom = 0; + renderer.uvRotateWest = 3; + } + if(meta == 3) { + renderer.uvRotateTop = 0; + renderer.uvRotateBottom = 3; + renderer.uvRotateEast = 3; + } + if(meta == 4) { + renderer.uvRotateTop = 1; + renderer.uvRotateBottom = 1; + renderer.uvRotateSouth = 3; + } + if(meta == 5) { + renderer.uvRotateTop = 2; + renderer.uvRotateBottom = 2; + renderer.uvRotateNorth = 3; + } + + renderer.setRenderBounds(0.25D, 0.0D, 0D, 0.75D, 0.25D, 1D); renderer.renderStandardBlock(block, x, y, z); + renderer.setRenderBounds(0.0D, 0.0D, 0.25D, 0.25D, 0.25D, 0.75D); renderer.renderStandardBlock(block, x, y, z); + renderer.setRenderBounds(0.75D, 0.0D, 0.25D, 1.0D, 0.25D, 0.75D); renderer.renderStandardBlock(block, x, y, z); + renderer.uvRotateTop = 0; + renderer.uvRotateBottom = 0; + renderer.uvRotateNorth = 0; + renderer.uvRotateSouth = 0; + renderer.uvRotateEast = 0; + renderer.uvRotateWest = 0; + + belt = true; + } else { + + if(nX) { + renderer.uvRotateTop = 1; + renderer.setRenderBounds(0.0D, 0.0D, 0.25D, 0.125D, 0.25D, 0.75D); renderer.renderStandardBlock(block, x, y, z); + } + + if(pX) { + renderer.uvRotateTop = 2; + renderer.setRenderBounds(0.875D, 0.0D, 0.25D, 1.0D, 0.25D, 0.75D); renderer.renderStandardBlock(block, x, y, z); + } + + if(nZ) { + renderer.uvRotateTop = 3; + renderer.setRenderBounds(0.25D, 0.0D, 0.0D, 0.75D, 0.25D, 0.125D); renderer.renderStandardBlock(block, x, y, z); + } + + if(pZ) { + renderer.uvRotateTop = 0; + renderer.setRenderBounds(0.25D, 0.0D, 0.875D, 0.75D, 0.25D, 1.0D); renderer.renderStandardBlock(block, x, y, z); + } + + renderer.uvRotateTop = 0; + } + } + + IIcon iconSteel = ModBlocks.concrete_smooth.getIcon(0, 0); + IIcon iconGlass = ModBlocks.steel_grate.getIcon(0, 0); + renderer.setOverrideBlockTexture(iconSteel); + + double minOuter = 0.0; + double maxOuter = 1.0; + double minInner = 0.25; + double maxInner = 0.75; + + renderer.setRenderBounds(minOuter, 0.0, minOuter, minInner, 1.0, minInner); renderer.renderStandardBlock(block, x, y, z); + renderer.setRenderBounds(maxInner, 0.0, minOuter, maxOuter, 1.0, minInner); renderer.renderStandardBlock(block, x, y, z); + renderer.setRenderBounds(minOuter, 0.0, maxInner, minInner, 1.0, maxOuter); renderer.renderStandardBlock(block, x, y, z); + renderer.setRenderBounds(maxInner, 0.0, maxInner, maxOuter, 1.0, maxOuter); renderer.renderStandardBlock(block, x, y, z); + + double glassMin = 0.1875; + double glassMax = 0.8175; + + renderer.setOverrideBlockTexture(iconGlass); + if(!nX && (!belt || meta != 5)) { renderer.setRenderBounds(glassMin, belt ? 0.25 : 0.0, minInner, glassMin, 1.0, maxInner); renderer.renderStandardBlock(block, x, y, z); } + if(!pX && (!belt || meta != 4)) { renderer.setRenderBounds(glassMax, belt ? 0.25 : 0.0, minInner, glassMax, 1.0, maxInner); renderer.renderStandardBlock(block, x, y, z); } + if(!nZ && (!belt || meta != 3)) { renderer.setRenderBounds(minInner, belt ? 0.25 : 0.0, glassMin, maxInner, 1.0, glassMin); renderer.renderStandardBlock(block, x, y, z); } + if(!pZ && (!belt || meta != 2)) { renderer.setRenderBounds(minInner, belt ? 0.25 : 0.0, glassMax, maxInner, 1.0, glassMax); renderer.renderStandardBlock(block, x, y, z); } + + renderer.clearOverrideBlockTexture(); + + return true; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return BlockConveyorChute.renderID; + } +} diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java index 7a84b1f16..172db796d 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java @@ -45,7 +45,7 @@ public class TileEntityCraneExtractor extends TileEntityMachineBase implements I if(!worldObj.isRemote) { if(worldObj.getTotalWorldTime() % 20 == 0) { - int amount = 64; + int amount = 1; ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); TileEntity te = worldObj.getTileEntity(xCoord - dir.offsetX, yCoord - dir.offsetY, zCoord - dir.offsetZ); diff --git a/src/main/resources/assets/hbm/textures/blocks/conveyor_double.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/conveyor_double.png.mcmeta new file mode 100644 index 000000000..df9cfce6e --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/conveyor_double.png.mcmeta @@ -0,0 +1,3 @@ +{ + "animation": { } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/conveyor_triple.png b/src/main/resources/assets/hbm/textures/blocks/conveyor_triple.png new file mode 100644 index 0000000000000000000000000000000000000000..8edc93579cffef44855e834215fff97ad7d8a0b7 GIT binary patch literal 286 zcmV+(0pb3MP) kWpl7N2m9@c5W