From cbad7f40cd1601f24f969df97b28f81748ddfa79 Mon Sep 17 00:00:00 2001 From: Calclavia Date: Sun, 28 Oct 2012 15:19:21 +0800 Subject: [PATCH] Added back in textures --- Include Resources.bat | 4 - src/common/assemblyline/AssemblyLine.java | 45 ++++------ .../assemblyline/belts/BlockConveyorBelt.java | 12 ++- .../belts/TileEntityConveyorBelt.java | 18 ++-- .../interaction/BlockInteraction.java | 46 ++++++++-- .../interaction/ItemBlockInteraction.java | 58 ++++++++++++ .../assemblyline/interaction/ItemMachine.java | 83 ------------------ ...hineInput.java => TileEntityInjector.java} | 2 +- src/common/assemblyline/mcmod.info | 21 ----- src/minecraft/assemblyline/ALClientProxy.java | 27 +++--- src/minecraft/assemblyline/RenderDropBox.java | 38 -------- ...{GuiCrafting.java => GuiAutoCrafting.java} | 8 +- .../assemblyline/gui/GuiEjectorSettings.java | 2 +- .../{render => model}/ModelConveyorBelt.java | 2 +- .../{ => model}/ModelDropBox.java | 2 +- .../{ => model}/ModelEjector.java | 2 +- .../ModelInjector.java} | 18 ++-- .../assemblyline/render/BeltRenderHelper.java | 60 ------------- ...rBeltMain.java => RenderConveyorBelt.java} | 3 +- .../assemblyline/render/RenderDropBox.java | 43 +++++++++ .../{ => render}/RenderEjector.java | 6 +- .../assemblyline/render/RenderHelper.java | 78 ++++++++++++++++ ...erMachineBelt.java => RenderInjector.java} | 23 ++--- .../assemblyline/textures/BeltMid.png | Bin 0 -> 373 bytes .../assemblyline/textures/BeltSingle.png | Bin 0 -> 387 bytes .../assemblyline/textures/BeltTexture.png | Bin 0 -> 791 bytes .../assemblyline/textures/CoalGenerator.png | Bin 0 -> 3762 bytes .../assemblyline/textures/ConveyorBelt.png | Bin 0 -> 401 bytes .../assemblyline/textures/ConveyorBeltF.png | Bin 0 -> 402 bytes .../assemblyline/textures/ConveyorBeltR.png | Bin 0 -> 397 bytes .../assemblyline/textures/ConveyorBeltRF.png | Bin 0 -> 407 bytes .../assemblyline/textures/Grey64.png | Bin 0 -> 534 bytes .../assemblyline/textures/dropbox.png | Bin 0 -> 950 bytes .../assemblyline/textures/ejector.png | Bin 0 -> 1054 bytes .../assemblyline/textures/gui_crafter.png | Bin 0 -> 1053 bytes .../assemblyline/textures/gui_ejector.png | Bin 0 -> 3800 bytes .../assemblyline/textures/injector.png | Bin 0 -> 957 bytes 37 files changed, 299 insertions(+), 302 deletions(-) delete mode 100644 Include Resources.bat create mode 100644 src/common/assemblyline/interaction/ItemBlockInteraction.java delete mode 100644 src/common/assemblyline/interaction/ItemMachine.java rename src/common/assemblyline/interaction/{TileEntityMachineInput.java => TileEntityInjector.java} (98%) delete mode 100644 src/common/assemblyline/mcmod.info delete mode 100644 src/minecraft/assemblyline/RenderDropBox.java rename src/minecraft/assemblyline/gui/{GuiCrafting.java => GuiAutoCrafting.java} (84%) rename src/minecraft/assemblyline/{render => model}/ModelConveyorBelt.java (99%) rename src/minecraft/assemblyline/{ => model}/ModelDropBox.java (99%) rename src/minecraft/assemblyline/{ => model}/ModelEjector.java (99%) rename src/minecraft/assemblyline/{render/ModelMachineBelt.java => model/ModelInjector.java} (94%) delete mode 100644 src/minecraft/assemblyline/render/BeltRenderHelper.java rename src/minecraft/assemblyline/render/{RenderBeltMain.java => RenderConveyorBelt.java} (92%) create mode 100644 src/minecraft/assemblyline/render/RenderDropBox.java rename src/minecraft/assemblyline/{ => render}/RenderEjector.java (87%) create mode 100644 src/minecraft/assemblyline/render/RenderHelper.java rename src/minecraft/assemblyline/render/{RenderMachineBelt.java => RenderInjector.java} (58%) create mode 100644 src/minecraft/assemblyline/textures/BeltMid.png create mode 100644 src/minecraft/assemblyline/textures/BeltSingle.png create mode 100644 src/minecraft/assemblyline/textures/BeltTexture.png create mode 100644 src/minecraft/assemblyline/textures/CoalGenerator.png create mode 100644 src/minecraft/assemblyline/textures/ConveyorBelt.png create mode 100644 src/minecraft/assemblyline/textures/ConveyorBeltF.png create mode 100644 src/minecraft/assemblyline/textures/ConveyorBeltR.png create mode 100644 src/minecraft/assemblyline/textures/ConveyorBeltRF.png create mode 100644 src/minecraft/assemblyline/textures/Grey64.png create mode 100644 src/minecraft/assemblyline/textures/dropbox.png create mode 100644 src/minecraft/assemblyline/textures/ejector.png create mode 100644 src/minecraft/assemblyline/textures/gui_crafter.png create mode 100644 src/minecraft/assemblyline/textures/gui_ejector.png create mode 100644 src/minecraft/assemblyline/textures/injector.png diff --git a/Include Resources.bat b/Include Resources.bat deleted file mode 100644 index 0d85a808..00000000 --- a/Include Resources.bat +++ /dev/null @@ -1,4 +0,0 @@ -@echo off -cd resources -"..\..\7za.exe" a "..\jars\bin\minecraft.jar" "*" -pause \ No newline at end of file diff --git a/src/common/assemblyline/AssemblyLine.java b/src/common/assemblyline/AssemblyLine.java index a4fa87e0..39002842 100644 --- a/src/common/assemblyline/AssemblyLine.java +++ b/src/common/assemblyline/AssemblyLine.java @@ -8,13 +8,15 @@ import net.minecraft.src.ItemStack; import net.minecraftforge.common.Configuration; import net.minecraftforge.oredict.ShapedOreRecipe; import net.minecraftforge.oredict.ShapelessOreRecipe; +import universalelectricity.core.UEConfig; import universalelectricity.prefab.network.PacketManager; import assemblyline.belts.BlockConveyorBelt; import assemblyline.belts.TileEntityConveyorBelt; import assemblyline.interaction.BlockInteraction; -import assemblyline.interaction.ItemMachine; +import assemblyline.interaction.BlockInteraction.InteractMachineMetadata; +import assemblyline.interaction.ItemBlockInteraction; import assemblyline.interaction.TileEntityEjector; -import assemblyline.interaction.TileEntityMachineInput; +import assemblyline.interaction.TileEntityInjector; import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.Init; @@ -44,24 +46,13 @@ public class AssemblyLine public static final String CHANNEL = "AssemblyLine"; - public static final Configuration CONFIGURATION = new Configuration(new File(Loader.instance().getConfigDir(), "UniversalElectricity/AssemblyLine.cfg")); - public static int machineID = configurationProperties(); - public static int machine2ID; - public static int beltBlockID; - public static boolean animationOn; - public static final String TEXTURE_PATH = "/textures"; - public static final Block blockConveyorBelt = new BlockConveyorBelt(beltBlockID); - public static final Block blockMachine = new BlockInteraction(machineID); + public static final String TEXTURE_PATH = "/assemblyline/textures/"; - public static int configurationProperties() - { - CONFIGURATION.load(); - beltBlockID = Integer.parseInt(CONFIGURATION.getBlock(Configuration.CATEGORY_BLOCK, "BeltBlockID", 3003).value); - machineID = Integer.parseInt(CONFIGURATION.getBlock(Configuration.CATEGORY_BLOCK, "MachineID", 3005).value); - animationOn = Boolean.parseBoolean(CONFIGURATION.get(Configuration.CATEGORY_GENERAL, "BeltAnimationOn", true).value); - CONFIGURATION.save(); - return machineID; - } + public static final Configuration CONFIGURATION = new Configuration(new File(Loader.instance().getConfigDir(), "UniversalElectricity/AssemblyLine.cfg")); + + public static final int BLOCK_ID_PREFIX = 3003; + public static final Block blockConveyorBelt = new BlockConveyorBelt(UEConfig.getBlockConfigID(CONFIGURATION, "Conveyor Belt", BLOCK_ID_PREFIX)); + public static final Block blockInteraction = new BlockInteraction(UEConfig.getBlockConfigID(CONFIGURATION, "Machine", BLOCK_ID_PREFIX+1)); @PreInit public void preInit(FMLPreInitializationEvent event) @@ -69,7 +60,7 @@ public class AssemblyLine instance = this; NetworkRegistry.instance().registerGuiHandler(this, this.proxy); GameRegistry.registerBlock(blockConveyorBelt); - GameRegistry.registerBlock(blockMachine, ItemMachine.class); + GameRegistry.registerBlock(blockInteraction, ItemBlockInteraction.class); proxy.preInit(); } @@ -78,14 +69,14 @@ public class AssemblyLine { GameRegistry.registerTileEntity(TileEntityConveyorBelt.class, "belt"); GameRegistry.registerTileEntity(TileEntityEjector.class, "ejector"); - GameRegistry.registerTileEntity(TileEntityMachineInput.class, "scop"); + GameRegistry.registerTileEntity(TileEntityInjector.class, "scop"); proxy.init(); // Names LanguageRegistry.addName(new ItemStack(blockConveyorBelt, 1), "Coneveyor Belt"); - LanguageRegistry.addName(new ItemStack(blockMachine, 1, 0), "Ejector"); - LanguageRegistry.addName(new ItemStack(blockMachine, 1, 4), "MachineInput"); - LanguageRegistry.addName(new ItemStack(blockMachine, 1, 8), "FutureBlock"); - LanguageRegistry.addName(new ItemStack(blockMachine, 1, 12), "FutureBlock"); + LanguageRegistry.addName(new ItemStack(blockInteraction, 1, InteractMachineMetadata.EJECTOR.metadata), InteractMachineMetadata.EJECTOR.name); + LanguageRegistry.addName(new ItemStack(blockInteraction, 1, InteractMachineMetadata.INJECTOR.metadata), InteractMachineMetadata.EJECTOR.name); + LanguageRegistry.addName(new ItemStack(blockInteraction, 1, 8), "FutureBlock"); + LanguageRegistry.addName(new ItemStack(blockInteraction, 1, 12), "FutureBlock"); } @PostInit @@ -96,11 +87,11 @@ public class AssemblyLine { "III", "MCM", 'I', Item.ingotIron, 'M', "motor", 'C', "basicCircuit" })); // Rejector - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockMachine, 1, 0), new Object[] + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockInteraction, 1, 0), new Object[] { "WPW", "@R@", '@', "plateSteel", 'R', Item.redstone, 'P', Block.pistonBase, 'C', "basicCircuit", 'W', "copperWire" })); // Retriever - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(blockMachine, 1, 4), new Object[] + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(blockInteraction, 1, 4), new Object[] { Block.dispenser, "basicCircuit" })); proxy.postInit(); } diff --git a/src/common/assemblyline/belts/BlockConveyorBelt.java b/src/common/assemblyline/belts/BlockConveyorBelt.java index 95850e45..2c3983e9 100644 --- a/src/common/assemblyline/belts/BlockConveyorBelt.java +++ b/src/common/assemblyline/belts/BlockConveyorBelt.java @@ -8,13 +8,11 @@ import net.minecraft.src.MathHelper; import net.minecraft.src.TileEntity; import net.minecraft.src.World; import universalelectricity.prefab.BlockMachine; -import assemblyline.render.BeltRenderHelper; +import assemblyline.render.RenderHelper; /** - * The block for the actual conveyor! - * - * @Oldauthors Calclavia,Elusivehawk - * @author DarkGuardsman + * The block for the actual conveyor belt! + * @author Calclavia, DarkGuardsman */ public class BlockConveyorBelt extends BlockMachine { @@ -24,7 +22,7 @@ public class BlockConveyorBelt extends BlockMachine this.setBlockBounds(0, 0, 0, 1, 0.3f, 1); this.setTextureFile("/textures/items.png"); this.blockIndexInTexture = 0; - this.setCreativeTab(CreativeTabs.tabRedstone); + this.setCreativeTab(CreativeTabs.tabTransport); } @Override public void onBlockPlacedBy(World par1World, int x, int y, int z, EntityLiving par5EntityLiving) @@ -71,7 +69,7 @@ public class BlockConveyorBelt extends BlockMachine @Override public int getRenderType() { - return BeltRenderHelper.blockRenderId; + return RenderHelper.BLOCK_RENDER_ID; } @Override diff --git a/src/common/assemblyline/belts/TileEntityConveyorBelt.java b/src/common/assemblyline/belts/TileEntityConveyorBelt.java index aa097ccb..f63f97b0 100644 --- a/src/common/assemblyline/belts/TileEntityConveyorBelt.java +++ b/src/common/assemblyline/belts/TileEntityConveyorBelt.java @@ -176,18 +176,16 @@ public class TileEntityConveyorBelt extends TileEntityElectricityReceiver implem e.printStackTrace(); } - if (AssemblyLine.animationOn) + if (flip == true) { - if (flip == true) - { - flip = false; - } - else - { - flip = true; - } - this.wheelRotation -= this.speed; + flip = false; } + else + { + flip = true; + } + + this.wheelRotation -= this.speed; } } diff --git a/src/common/assemblyline/interaction/BlockInteraction.java b/src/common/assemblyline/interaction/BlockInteraction.java index cafeedd1..d53f547e 100644 --- a/src/common/assemblyline/interaction/BlockInteraction.java +++ b/src/common/assemblyline/interaction/BlockInteraction.java @@ -7,26 +7,54 @@ import net.minecraft.src.TileEntity; import net.minecraft.src.World; import universalelectricity.prefab.BlockMachine; import assemblyline.AssemblyLine; -import assemblyline.render.BeltRenderHelper; +import assemblyline.render.RenderHelper; +/** + * A metadata block containing a bunch of machines with direction. + * @author Darkguardsman + * + */ public class BlockInteraction extends BlockMachine { + public static enum InteractMachineMetadata + { + EJECTOR("Ejector", 0), INJECTOR("Injector", 4); + + public String name; + public int metadata; + + InteractMachineMetadata(String name, int metadata) + { + this.name = name; + this.metadata = metadata; + } + + public static InteractMachineMetadata getBase(int metadata) + { + if (metadata >= 0 && metadata < 4) { return InteractMachineMetadata.values()[0]; } + else if (metadata >= 4 && metadata < 8) { return InteractMachineMetadata.values()[4]; } + else if (metadata >= 8 && metadata < 12) { return InteractMachineMetadata.values()[8]; } + else { return InteractMachineMetadata.values()[12]; } + } + } + public BlockInteraction(int id) { super("Machine", id, Material.iron); - this.setCreativeTab(CreativeTabs.tabRedstone); + this.setCreativeTab(CreativeTabs.tabTransport); } public int damageDropped(int metadata) { - if (metadata >= 0 && metadata < 4) { return 0; } - if (metadata >= 4 && metadata < 8) { return 4; } - if (metadata >= 8 && metadata < 12) { return 8; } - if (metadata >= 12 && metadata < 16) { return 12; } - return 0; + return InteractMachineMetadata.getBase(metadata).metadata; } public boolean onSneakUseWrench(World par1World, int x, int y, int z, EntityPlayer par5EntityPlayer) + { + return this.onSneakMachineActivated(par1World, x, y, z, par5EntityPlayer); + } + + public boolean onSneakMachineActivated(World par1World, int x, int y, int z, EntityPlayer par5EntityPlayer) { if (!par1World.isRemote) { @@ -120,7 +148,7 @@ public class BlockInteraction extends BlockMachine public TileEntity createNewTileEntity(World var1, int metadata) { if (metadata >= 0 && metadata < 4) { return new TileEntityEjector(); } - if (metadata >= 4 && metadata < 8) { return new TileEntityMachineInput(); } + if (metadata >= 4 && metadata < 8) { return new TileEntityInjector(); } if (metadata >= 8 && metadata < 12) { return null; } if (metadata >= 12 && metadata < 16) { return null; } return null; @@ -129,7 +157,7 @@ public class BlockInteraction extends BlockMachine @Override public int getRenderType() { - return BeltRenderHelper.blockRenderId; + return RenderHelper.BLOCK_RENDER_ID; } @Override diff --git a/src/common/assemblyline/interaction/ItemBlockInteraction.java b/src/common/assemblyline/interaction/ItemBlockInteraction.java new file mode 100644 index 00000000..d0a1707d --- /dev/null +++ b/src/common/assemblyline/interaction/ItemBlockInteraction.java @@ -0,0 +1,58 @@ +package assemblyline.interaction; + +import java.util.List; + +import net.minecraft.src.Block; +import net.minecraft.src.CreativeTabs; +import net.minecraft.src.EntityPlayer; +import net.minecraft.src.ItemBlock; +import net.minecraft.src.ItemStack; +import net.minecraft.src.MathHelper; +import net.minecraft.src.World; +import assemblyline.AssemblyLine; +import assemblyline.interaction.BlockInteraction.InteractMachineMetadata; + +public class ItemBlockInteraction extends ItemBlock +{ + public ItemBlockInteraction(int par1) + { + super(par1); + this.setHasSubtypes(true); + this.setCreativeTab(CreativeTabs.tabRedstone); + } + + public void getSubItems(int par1, CreativeTabs par2CreativeTabs, List par3List) + { + for (InteractMachineMetadata machine : InteractMachineMetadata.values()) + { + par3List.add(new ItemStack(AssemblyLine.blockInteraction, 1, machine.metadata)); + } + } + + public String getItemNameIS(ItemStack itemstack) + { + return InteractMachineMetadata.getBase(itemstack.getItemDamage()).name; + } + + @Override + public int getBlockID() + { + return AssemblyLine.blockInteraction.blockID; + } + + @Override + public boolean placeBlockAt(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) + { + int angle = MathHelper.floor_double((player.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; + if (!world.setBlockAndMetadataWithNotify(x, y, z, this.getBlockID(), stack.getItemDamage() + angle)) { return false; } + + if (world.getBlockId(x, y, z) == this.getBlockID()) + { + Block.blocksList[this.getBlockID()].updateBlockMetadata(world, x, y, z, side, hitX, hitY, hitZ); + Block.blocksList[this.getBlockID()].onBlockPlacedBy(world, x, y, z, player); + } + + return true; + } + +} diff --git a/src/common/assemblyline/interaction/ItemMachine.java b/src/common/assemblyline/interaction/ItemMachine.java deleted file mode 100644 index 287f5865..00000000 --- a/src/common/assemblyline/interaction/ItemMachine.java +++ /dev/null @@ -1,83 +0,0 @@ -package assemblyline.interaction; - -import java.util.List; - -import net.minecraft.src.Block; -import net.minecraft.src.CreativeTabs; -import net.minecraft.src.EntityPlayer; -import net.minecraft.src.ItemBlock; -import net.minecraft.src.ItemStack; -import net.minecraft.src.MathHelper; -import net.minecraft.src.World; -import assemblyline.AssemblyLine; - -public class ItemMachine extends ItemBlock { - - public ItemMachine(int par1) { - super(par1); - this.setHasSubtypes(true); - this.setCreativeTab(CreativeTabs.tabRedstone); - } - private String[] names = new String[] {"Ejector", "ItemScooper", "FB","FB"}; - int blockID = AssemblyLine.machineID; - public void getSubItems(int par1, CreativeTabs par2CreativeTabs, List par3List) - { - par3List.add(new ItemStack(AssemblyLine.blockMachine,1,0)); - par3List.add(new ItemStack(AssemblyLine.blockMachine,1,4)); - //par3List.add(new ItemStack(AssembleLine.blockMachine,1,8)); - //par3List.add(new ItemStack(AssembleLine.blockMachine,1,12)); - } - public String getItemNameIS(ItemStack itemstack) - { - int meta = itemstack.getItemDamage(); - switch(meta) - { - case 0: return names[0]; - case 4: return names[1]; - case 8: return names[2]; - case 12: return names[3]; - } - return "FB"; - } - - @Override - public int getIconFromDamage(int i) - { - switch(i) - { - case 0:return 1; - case 4:return 2; - case 8:return 3; - case 12:return 4; - } - return this.iconIndex + i; - } - public int getMetadata(int par1) - { - return 0; - } - @Override - public int getBlockID() - { - return AssemblyLine.machineID; - } - @Override - public boolean placeBlockAt(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) - { - int angle = MathHelper.floor_double((player.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; - player.sendChatToPlayer("M:"+stack.getItemDamage()+"A:"+angle); - if (!world.setBlockAndMetadataWithNotify(x, y, z, this.blockID, stack.getItemDamage()+angle)) - { - return false; - } - - if (world.getBlockId(x, y, z) == this.blockID) - { - Block.blocksList[this.blockID].updateBlockMetadata(world, x, y, z, side, hitX, hitY, hitZ); - Block.blocksList[this.blockID].onBlockPlacedBy(world, x, y, z, player); - } - - return true; - } - -} diff --git a/src/common/assemblyline/interaction/TileEntityMachineInput.java b/src/common/assemblyline/interaction/TileEntityInjector.java similarity index 98% rename from src/common/assemblyline/interaction/TileEntityMachineInput.java rename to src/common/assemblyline/interaction/TileEntityInjector.java index ba2217aa..2d016f3e 100644 --- a/src/common/assemblyline/interaction/TileEntityMachineInput.java +++ b/src/common/assemblyline/interaction/TileEntityInjector.java @@ -19,7 +19,7 @@ import universalelectricity.prefab.network.IPacketReceiver; import com.google.common.io.ByteArrayDataInput; -public class TileEntityMachineInput extends TileEntityElectricityReceiver implements IPacketReceiver, IInventory +public class TileEntityInjector extends TileEntityElectricityReceiver implements IPacketReceiver, IInventory { public float energyReq = .1f; public float energyMax = 10f; diff --git a/src/common/assemblyline/mcmod.info b/src/common/assemblyline/mcmod.info deleted file mode 100644 index 645c6ce1..00000000 --- a/src/common/assemblyline/mcmod.info +++ /dev/null @@ -1,21 +0,0 @@ -[ -{ - "modid": "asmLine", - "name": "Assemble Line", - "description": "This mod is a revamp of Calclavia's and ElusiveHawk's Conveyor belts in the form of a factory assemble line", - "version": "0.0.4", - "mcversion": "1.3.2", - "url": "http://www.minecraftforge.net/forum/index.php/board,50.0.html", - "updateUrl": "", - "authors": [ - "DarkGuardsman" - ], - "credits": "Orignal Devs Calclavia,ElusiveHawk", - "logoFile": "", - "screenshots": [ - ], - "parent":"", - "dependencies": ["UE" - ] -} -] \ No newline at end of file diff --git a/src/minecraft/assemblyline/ALClientProxy.java b/src/minecraft/assemblyline/ALClientProxy.java index a2199ae0..549f717e 100644 --- a/src/minecraft/assemblyline/ALClientProxy.java +++ b/src/minecraft/assemblyline/ALClientProxy.java @@ -5,10 +5,11 @@ import assemblyline.AssemblyLine; import assemblyline.ALCommonProxy; import assemblyline.belts.TileEntityConveyorBelt; import assemblyline.interaction.TileEntityEjector; -import assemblyline.interaction.TileEntityMachineInput; -import assemblyline.render.BeltRenderHelper; -import assemblyline.render.RenderBeltMain; -import assemblyline.render.RenderMachineBelt; +import assemblyline.interaction.TileEntityInjector; +import assemblyline.render.RenderEjector; +import assemblyline.render.RenderHelper; +import assemblyline.render.RenderConveyorBelt; +import assemblyline.render.RenderInjector; import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.client.registry.RenderingRegistry; @@ -16,17 +17,19 @@ public class ALClientProxy extends ALCommonProxy { @Override public void preInit() - { - MinecraftForgeClient.preloadTexture(AssemblyLine.TEXTURE_PATH+"/Items.png"); - RenderingRegistry.registerBlockHandler(new BeltRenderHelper()); + { + MinecraftForgeClient.preloadTexture(AssemblyLine.TEXTURE_PATH + "/Items.png"); + RenderingRegistry.registerBlockHandler(new RenderHelper()); } + @Override public void init() { - //ClientRegistry.registerTileEntity(TileEntityConveyorBelt.class, "belt", new RenderConveyorBelt()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityConveyorBelt.class, new RenderBeltMain()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityEjector.class,new RenderEjector()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineInput.class,new RenderMachineBelt()); + // ClientRegistry.registerTileEntity(TileEntityConveyorBelt.class, + // "belt", new RenderConveyorBelt()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityConveyorBelt.class, new RenderConveyorBelt()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityEjector.class, new RenderEjector()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityInjector.class, new RenderInjector()); } - + } diff --git a/src/minecraft/assemblyline/RenderDropBox.java b/src/minecraft/assemblyline/RenderDropBox.java deleted file mode 100644 index ad6cc9f4..00000000 --- a/src/minecraft/assemblyline/RenderDropBox.java +++ /dev/null @@ -1,38 +0,0 @@ -package assemblyline; - -import net.minecraft.src.TileEntity; -import net.minecraft.src.TileEntitySpecialRenderer; - -import org.lwjgl.opengl.GL11; - -import assemblyline.interaction.TileEntityMachineInput; - -public class RenderDropBox extends TileEntitySpecialRenderer -{ - private ModelDropBox model = new ModelDropBox(); - - public void renderAModelAt(TileEntity tileEntity, double x, double y, double z, float f) - { - - int face = tileEntity.worldObj.getBlockMetadata(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord); - int pos = 0; - bindTextureByName("/textures/DropBox.png"); - GL11.glPushMatrix(); - GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F, (float) z + 0.5F); - GL11.glScalef(1.0F, -1F, -1F); - if(face==4){ GL11.glRotatef(180f, 0f, 1f, 0f);} - if(face==6){ GL11.glRotatef(0f, 0f, 1f, 0f);} - if(face==5){ GL11.glRotatef(270f, 0f, 1f, 0f);} - if(face==7){ GL11.glRotatef(90f, 0f, 1f, 0f);} - model.render(0.0625F); - GL11.glPopMatrix(); - - } - - @Override - public void renderTileEntityAt(TileEntity tileEntity, double var2, double var4, double var6, float var8) - { - this.renderAModelAt((TileEntityMachineInput)tileEntity, var2, var4, var6, var8); - } - -} \ No newline at end of file diff --git a/src/minecraft/assemblyline/gui/GuiCrafting.java b/src/minecraft/assemblyline/gui/GuiAutoCrafting.java similarity index 84% rename from src/minecraft/assemblyline/gui/GuiCrafting.java rename to src/minecraft/assemblyline/gui/GuiAutoCrafting.java index 7f6e7d2e..cfbc95e8 100644 --- a/src/minecraft/assemblyline/gui/GuiCrafting.java +++ b/src/minecraft/assemblyline/gui/GuiAutoCrafting.java @@ -8,13 +8,15 @@ import net.minecraft.src.World; import org.lwjgl.opengl.GL11; +import assemblyline.AssemblyLine; + import cpw.mods.fml.common.Side; import cpw.mods.fml.common.asm.SideOnly; @SideOnly(Side.CLIENT) -public class GuiCrafting extends GuiContainer +public class GuiAutoCrafting extends GuiContainer { - public GuiCrafting(InventoryPlayer par1InventoryPlayer, World par2World, int par3, int par4, int par5) + public GuiAutoCrafting(InventoryPlayer par1InventoryPlayer, World par2World, int par3, int par4, int par5) { super(new ContainerWorkbench(par1InventoryPlayer, par2World, par3, par4, par5)); //TODO on opening if the user is not the owner they can see the crafting recipes but if @@ -36,7 +38,7 @@ public class GuiCrafting extends GuiContainer */ protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3) { - int var4 = this.mc.renderEngine.getTexture("/gui/crafting.png"); + int var4 = this.mc.renderEngine.getTexture(AssemblyLine.TEXTURE_PATH+"gui_crafting.png"); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); this.mc.renderEngine.bindTexture(var4); int var5 = (this.width - this.xSize) / 2; diff --git a/src/minecraft/assemblyline/gui/GuiEjectorSettings.java b/src/minecraft/assemblyline/gui/GuiEjectorSettings.java index fd48d945..7d22ba6a 100644 --- a/src/minecraft/assemblyline/gui/GuiEjectorSettings.java +++ b/src/minecraft/assemblyline/gui/GuiEjectorSettings.java @@ -43,7 +43,7 @@ public class GuiEjectorSettings extends GuiContainer @Override protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3) { - int var4 = this.mc.renderEngine.getTexture(AssemblyLine.TEXTURE_PATH + "/GuiEjector.png"); + int var4 = this.mc.renderEngine.getTexture(AssemblyLine.TEXTURE_PATH + "gui_ejector.png"); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); this.mc.renderEngine.bindTexture(var4); containerWidth = (this.width - this.xSize) / 2; diff --git a/src/minecraft/assemblyline/render/ModelConveyorBelt.java b/src/minecraft/assemblyline/model/ModelConveyorBelt.java similarity index 99% rename from src/minecraft/assemblyline/render/ModelConveyorBelt.java rename to src/minecraft/assemblyline/model/ModelConveyorBelt.java index fba120d4..c607832b 100644 --- a/src/minecraft/assemblyline/render/ModelConveyorBelt.java +++ b/src/minecraft/assemblyline/model/ModelConveyorBelt.java @@ -1,4 +1,4 @@ -package assemblyline.render; +package assemblyline.model; import net.minecraft.src.Entity; import net.minecraft.src.ModelBase; diff --git a/src/minecraft/assemblyline/ModelDropBox.java b/src/minecraft/assemblyline/model/ModelDropBox.java similarity index 99% rename from src/minecraft/assemblyline/ModelDropBox.java rename to src/minecraft/assemblyline/model/ModelDropBox.java index cb14da13..13b2589e 100644 --- a/src/minecraft/assemblyline/ModelDropBox.java +++ b/src/minecraft/assemblyline/model/ModelDropBox.java @@ -1,4 +1,4 @@ -package assemblyline; +package assemblyline.model; import net.minecraft.src.Entity; import net.minecraft.src.ModelBase; diff --git a/src/minecraft/assemblyline/ModelEjector.java b/src/minecraft/assemblyline/model/ModelEjector.java similarity index 99% rename from src/minecraft/assemblyline/ModelEjector.java rename to src/minecraft/assemblyline/model/ModelEjector.java index e0f6f725..39cdecb1 100644 --- a/src/minecraft/assemblyline/ModelEjector.java +++ b/src/minecraft/assemblyline/model/ModelEjector.java @@ -4,7 +4,7 @@ // Keep in mind that you still need to fill in some blanks // - ZeuX -package assemblyline; +package assemblyline.model; import net.minecraft.src.Entity; import net.minecraft.src.ModelBase; diff --git a/src/minecraft/assemblyline/render/ModelMachineBelt.java b/src/minecraft/assemblyline/model/ModelInjector.java similarity index 94% rename from src/minecraft/assemblyline/render/ModelMachineBelt.java rename to src/minecraft/assemblyline/model/ModelInjector.java index c3b429de..995722db 100644 --- a/src/minecraft/assemblyline/render/ModelMachineBelt.java +++ b/src/minecraft/assemblyline/model/ModelInjector.java @@ -1,10 +1,10 @@ -package assemblyline.render; +package assemblyline.model; import net.minecraft.src.Entity; import net.minecraft.src.ModelBase; import net.minecraft.src.ModelRenderer; -public class ModelMachineBelt extends ModelBase +public class ModelInjector extends ModelBase { // fields ModelRenderer bBELTLong; @@ -28,7 +28,7 @@ public class ModelMachineBelt extends ModelBase ModelRenderer RCPanel; ModelRenderer LCPanel; - public ModelMachineBelt() + public ModelInjector() { textureWidth = 128; textureHeight = 128; @@ -155,7 +155,7 @@ public class ModelMachineBelt extends ModelBase setRotation(LCPanel, 0F, 0F, 0F); } - public void render(float f5, boolean cc, int pos) + public void render(float f5, boolean isLongBelt, int radians) { // body panels BacPanel.render(f5); @@ -172,22 +172,20 @@ public class ModelMachineBelt extends ModelBase BRL.render(f5); BML.render(f5); // rollers - MRoller.rotateAngleX = 0.7853982F * pos; - BRoller.rotateAngleX = 0.7853982F * pos; - FRoller.rotateAngleX = 0.7853982F * pos; + MRoller.rotateAngleX = radians; + BRoller.rotateAngleX = radians; + FRoller.rotateAngleX = radians; MRoller.render(f5); BRoller.render(f5); FRoller.render(f5); - if (cc) + if (isLongBelt) { - // long belt tBELTLong.render(f5); bBELTLong.render(f5); } else { - // short belt FBELT.render(f5); tBELT.render(f5); BBelt.render(f5); diff --git a/src/minecraft/assemblyline/render/BeltRenderHelper.java b/src/minecraft/assemblyline/render/BeltRenderHelper.java deleted file mode 100644 index d36ad3ef..00000000 --- a/src/minecraft/assemblyline/render/BeltRenderHelper.java +++ /dev/null @@ -1,60 +0,0 @@ -package assemblyline.render; - -import net.minecraft.src.Block; -import net.minecraft.src.IBlockAccess; -import net.minecraft.src.RenderBlocks; - -import org.lwjgl.opengl.GL11; - -import assemblyline.AssemblyLine; -import assemblyline.ModelEjector; -import assemblyline.belts.TileEntityConveyorBelt; -import cpw.mods.fml.client.FMLClientHandler; -import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; -import cpw.mods.fml.client.registry.RenderingRegistry; - -public class BeltRenderHelper implements ISimpleBlockRenderingHandler { - public static BeltRenderHelper instance = new BeltRenderHelper(); - public static int blockRenderId = RenderingRegistry.getNextAvailableRenderId(); - private static TileEntityConveyorBelt belt = null; - private ModelConveyorBelt modelBelt = new ModelConveyorBelt(); - private ModelEjector modelEj = new ModelEjector(); - @Override - public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) { - if(block.blockID == assemblyline.AssemblyLine.beltBlockID) - { - //TileEntityRenderer.instance.renderTileEntityAt(belt, -0.5D, 0.0D, -0.5D, 0.0F); - GL11.glPushMatrix(); - GL11.glTranslatef((float) 0.0F, (float)1.5F, (float)0.0F); - GL11.glRotatef(180f, 0f, 0f, 1f); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, FMLClientHandler.instance().getClient().renderEngine.getTexture("/textures/BeltTexture.png")); - //bindTextureByName("/textures/BeltSingle.png"); - modelBelt.render(0.0625F,0, false,false,false); - GL11.glPopMatrix(); - } - if(block.blockID == assemblyline.AssemblyLine.machineID && metadata == 0) - { - GL11.glBindTexture(GL11.GL_TEXTURE_2D, FMLClientHandler.instance().getClient().renderEngine.getTexture("/textures/Ejector.png")); - GL11.glPushMatrix(); - GL11.glTranslatef((float) 0.6F, (float)1.5F, (float)0.6F); - GL11.glRotatef(180f, 0f, 0f, 1f); - GL11.glRotatef(-90f, 0f, 1f, 0f); - modelEj.renderMain(0.0625F); - modelEj.renderPiston(0.0625F, 1); - GL11.glPopMatrix(); - } - } - public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { - return false; - } - - public boolean shouldRender3DInInventory() { - - return true; - } - - public int getRenderId() - { - return blockRenderId; - } -} diff --git a/src/minecraft/assemblyline/render/RenderBeltMain.java b/src/minecraft/assemblyline/render/RenderConveyorBelt.java similarity index 92% rename from src/minecraft/assemblyline/render/RenderBeltMain.java rename to src/minecraft/assemblyline/render/RenderConveyorBelt.java index 3de70f6d..9aba9d34 100644 --- a/src/minecraft/assemblyline/render/RenderBeltMain.java +++ b/src/minecraft/assemblyline/render/RenderConveyorBelt.java @@ -6,8 +6,9 @@ import net.minecraft.src.TileEntitySpecialRenderer; import org.lwjgl.opengl.GL11; import assemblyline.belts.TileEntityConveyorBelt; +import assemblyline.model.ModelConveyorBelt; -public class RenderBeltMain extends TileEntitySpecialRenderer +public class RenderConveyorBelt extends TileEntitySpecialRenderer { private ModelConveyorBelt model = new ModelConveyorBelt(); diff --git a/src/minecraft/assemblyline/render/RenderDropBox.java b/src/minecraft/assemblyline/render/RenderDropBox.java new file mode 100644 index 00000000..11e39c50 --- /dev/null +++ b/src/minecraft/assemblyline/render/RenderDropBox.java @@ -0,0 +1,43 @@ +package assemblyline.render; + +import net.minecraft.src.TileEntity; +import net.minecraft.src.TileEntitySpecialRenderer; + +import org.lwjgl.opengl.GL11; + +import assemblyline.AssemblyLine; +import assemblyline.interaction.TileEntityInjector; +import assemblyline.model.ModelDropBox; + +public class RenderDropBox extends TileEntitySpecialRenderer +{ + private ModelDropBox model = new ModelDropBox(); + + public void renderAModelAt(TileEntityInjector tileEntity, double x, double y, double z, float f) + { + int face = tileEntity.worldObj.getBlockMetadata(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord); + bindTextureByName(AssemblyLine.TEXTURE_PATH+"DropBox.png"); + GL11.glPushMatrix(); + GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F, (float) z + 0.5F); + GL11.glScalef(1.0F, -1F, -1F); + + switch(face) + { + case 4: GL11.glRotatef(180f, 0f, 1f, 0f); break; + case 6: GL11.glRotatef(0f, 0f, 1f, 0f); break; + case 5: GL11.glRotatef(270f, 0f, 1f, 0f); break; + case 7: GL11.glRotatef(90f, 0f, 1f, 0f); break; + } + System.out.println("RENDERIN DROP BOX"); + model.render(0.0625F); + GL11.glPopMatrix(); + + } + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double var2, double var4, double var6, float var8) + { + this.renderAModelAt((TileEntityInjector)tileEntity, var2, var4, var6, var8); + } + +} \ No newline at end of file diff --git a/src/minecraft/assemblyline/RenderEjector.java b/src/minecraft/assemblyline/render/RenderEjector.java similarity index 87% rename from src/minecraft/assemblyline/RenderEjector.java rename to src/minecraft/assemblyline/render/RenderEjector.java index e72c2f0a..6ce23a27 100644 --- a/src/minecraft/assemblyline/RenderEjector.java +++ b/src/minecraft/assemblyline/render/RenderEjector.java @@ -1,11 +1,13 @@ -package assemblyline; +package assemblyline.render; import net.minecraft.src.TileEntity; import net.minecraft.src.TileEntitySpecialRenderer; import org.lwjgl.opengl.GL11; +import assemblyline.AssemblyLine; import assemblyline.interaction.TileEntityEjector; +import assemblyline.model.ModelEjector; public class RenderEjector extends TileEntitySpecialRenderer { @@ -17,7 +19,7 @@ public class RenderEjector extends TileEntitySpecialRenderer int face = tileEntity.getDirection(tileEntity.worldObj.getBlockMetadata(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord)); int pos = 0; if(fire){pos = 8;} - bindTextureByName("/textures/Ejector.png"); + bindTextureByName(AssemblyLine.TEXTURE_PATH+"ejector.png"); GL11.glPushMatrix(); GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F, (float) z + 0.5F); GL11.glScalef(1.0F, -1F, -1F); diff --git a/src/minecraft/assemblyline/render/RenderHelper.java b/src/minecraft/assemblyline/render/RenderHelper.java new file mode 100644 index 00000000..7c5f90d7 --- /dev/null +++ b/src/minecraft/assemblyline/render/RenderHelper.java @@ -0,0 +1,78 @@ +package assemblyline.render; + +import net.minecraft.src.Block; +import net.minecraft.src.IBlockAccess; +import net.minecraft.src.RenderBlocks; + +import org.lwjgl.opengl.GL11; + +import assemblyline.AssemblyLine; +import assemblyline.interaction.BlockInteraction.InteractMachineMetadata; +import assemblyline.model.ModelConveyorBelt; +import assemblyline.model.ModelEjector; +import assemblyline.model.ModelInjector; +import cpw.mods.fml.client.FMLClientHandler; +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import cpw.mods.fml.client.registry.RenderingRegistry; + +public class RenderHelper implements ISimpleBlockRenderingHandler +{ + public static RenderHelper instance = new RenderHelper(); + public static final int BLOCK_RENDER_ID = RenderingRegistry.getNextAvailableRenderId(); + private ModelConveyorBelt modelConveyorBelt = new ModelConveyorBelt(); + private ModelEjector modelEjector = new ModelEjector(); + private ModelInjector modelInjector = new ModelInjector(); + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) + { + if (block.blockID == AssemblyLine.blockConveyorBelt.blockID) + { + GL11.glPushMatrix(); + GL11.glTranslatef((float) 0.0F, (float) 1.5F, (float) 0.0F); + GL11.glRotatef(180f, 0f, 0f, 1f); + GL11.glBindTexture(GL11.GL_TEXTURE_2D, FMLClientHandler.instance().getClient().renderEngine.getTexture("/textures/BeltTexture.png")); + modelConveyorBelt.render(0.0625F, 0, false, false, false); + GL11.glPopMatrix(); + } + else if (block.blockID == AssemblyLine.blockInteraction.blockID) + { + if(metadata == InteractMachineMetadata.EJECTOR.metadata) + { + GL11.glBindTexture(GL11.GL_TEXTURE_2D, FMLClientHandler.instance().getClient().renderEngine.getTexture("/textures/Ejector.png")); + GL11.glPushMatrix(); + GL11.glTranslatef((float) 0.6F, (float) 1.5F, (float) 0.6F); + GL11.glRotatef(180f, 0f, 0f, 1f); + GL11.glRotatef(-90f, 0f, 1f, 0f); + modelEjector.renderMain(0.0625F); + modelEjector.renderPiston(0.0625F, 1); + GL11.glPopMatrix(); + } + else if(metadata == InteractMachineMetadata.INJECTOR.metadata) + { + GL11.glBindTexture(GL11.GL_TEXTURE_2D, FMLClientHandler.instance().getClient().renderEngine.getTexture("/textures/Ejector.png")); + GL11.glPushMatrix(); + GL11.glTranslatef((float) 0.6F, (float) 1.5F, (float) 0.6F); + GL11.glRotatef(180f, 0f, 0f, 1f); + GL11.glRotatef(-90f, 0f, 1f, 0f); + modelInjector.render(0.0625F, true, 0); + GL11.glPopMatrix(); + } + } + } + + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) + { + return false; + } + + public boolean shouldRender3DInInventory() + { + return true; + } + + public int getRenderId() + { + return BLOCK_RENDER_ID; + } +} diff --git a/src/minecraft/assemblyline/render/RenderMachineBelt.java b/src/minecraft/assemblyline/render/RenderInjector.java similarity index 58% rename from src/minecraft/assemblyline/render/RenderMachineBelt.java rename to src/minecraft/assemblyline/render/RenderInjector.java index 509ec765..d293522a 100644 --- a/src/minecraft/assemblyline/render/RenderMachineBelt.java +++ b/src/minecraft/assemblyline/render/RenderInjector.java @@ -5,14 +5,16 @@ import net.minecraft.src.TileEntitySpecialRenderer; import org.lwjgl.opengl.GL11; +import assemblyline.AssemblyLine; import assemblyline.belts.TileEntityConveyorBelt; -import assemblyline.interaction.TileEntityMachineInput; +import assemblyline.interaction.TileEntityInjector; +import assemblyline.model.ModelInjector; -public class RenderMachineBelt extends TileEntitySpecialRenderer +public class RenderInjector extends TileEntitySpecialRenderer { - private ModelMachineBelt model = new ModelMachineBelt(); + private ModelInjector model = new ModelInjector(); - public void renderAModelAt(TileEntityMachineInput tileEntity, double x, double y, double z, float f) + public void renderAModelAt(TileEntityInjector tileEntity, double x, double y, double z, float f) { String flip = "";//if(tileEntity.flip){flip = "F";} int face = tileEntity.getBeltDirection(); @@ -21,16 +23,17 @@ public class RenderMachineBelt extends TileEntitySpecialRenderer GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F, (float) z + 0.5F); GL11.glRotatef(180f, 0f, 0f, 1f); - int pos = 0; - bindTextureByName("/textures/machineBelt.png"); + this.bindTextureByName(AssemblyLine.TEXTURE_PATH+"injector.png"); + + if(face==2){ GL11.glRotatef(0f, 0f, 1f, 0f);} if(face==3){ GL11.glRotatef(180f, 0f, 1f, 0f);} if(face==4){ GL11.glRotatef(270f, 0f, 1f, 0f);} if(face==5){ GL11.glRotatef(90f, 0f, 1f, 0f);} int ent = tileEntity.worldObj.getBlockId(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord); - model.render(0.0625F, true,pos);//TODO change the true part to check if there is a TE on the input side - - + model.render(0.0625F, true, 0); + //TODO change the true part to check if there is a TE on the input side + System.out.println("RENDERING MACHINE BELT"); GL11.glPopMatrix(); } @@ -38,7 +41,7 @@ public class RenderMachineBelt extends TileEntitySpecialRenderer @Override public void renderTileEntityAt(TileEntity tileEntity, double var2, double var4, double var6, float var8) { - this.renderAModelAt((TileEntityMachineInput)tileEntity, var2, var4, var6, var8); + this.renderAModelAt((TileEntityInjector)tileEntity, var2, var4, var6, var8); } } \ No newline at end of file diff --git a/src/minecraft/assemblyline/textures/BeltMid.png b/src/minecraft/assemblyline/textures/BeltMid.png new file mode 100644 index 0000000000000000000000000000000000000000..36c17346f2d97d20645603abe9a702cb9c1bbf9d GIT binary patch literal 373 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85sBugD~Uq{1qucLG}_)Usv`!octV$(qA@pf`q<$x;TbZ+1W;QH}liI*<9OlXP@3U z*YG-Dt3b#Ph7~KBCj?y*c4lA_XkcJbU|{5MaL{9X{p;?=%umyw|EXFNrgyz9smFCc z&)Ls!X3b+hx43rQ)QRp6D>oldT)1_j`+-7+q@HO(K^%_d@7~XIDt_bqGWcVCYWEqj z$o%)!FKQpKdw$z_a_>Efs!132He8%`+QwmT>Ao2oy4IhS2?%a5T_V8f!vFWrM!Sai w)}Qep>ycanVm7pMtk`GQu$9pT3`B1+rty7Qr`sY^2MhoPPgg&ebxsLQ09#s-rvLx| literal 0 HcmV?d00001 diff --git a/src/minecraft/assemblyline/textures/BeltSingle.png b/src/minecraft/assemblyline/textures/BeltSingle.png new file mode 100644 index 0000000000000000000000000000000000000000..953cfb33f0fd02496c046e3f051eb5bdae8bbcde GIT binary patch literal 387 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85sBugD~Uq{1qucLG}_)Usv`!octVO5`XtpyaJlS?CIhdQgQ3; zOi#XM10Dw1Ba@xtt^~^+=@e)Em%^v36{9uLe6MCI={y~b()r1X!`E< z^Ee5o3Ej*J%a|qvO;T@QlmH`Dwlkl&oyg`@2(9KuVlf&`c8}GLBbDlrt+r5?PyF|>%TmLvC3srM>F44U5 z>tJD(h(_-DYsbP0 Hl+XkK12&Pe literal 0 HcmV?d00001 diff --git a/src/minecraft/assemblyline/textures/BeltTexture.png b/src/minecraft/assemblyline/textures/BeltTexture.png new file mode 100644 index 0000000000000000000000000000000000000000..bf3561482d31064e946cb8d3d332f1972542e9fb GIT binary patch literal 791 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85sBugD~Uq{1qucLG}_)Usv`!Tug$>ip#cgEMs6`n(pc17*cWT z?On&9+Xf;Hi5DO8r5@ZR`|Z$l53xCi*-u&S(wJ_rli{#g_Y;vUsvF8+98{N=wk^- zdHnmsWySORmN%>PGAb|>{PjL?{<*yH)!Va7#Th2QzwX!ZL}D7ll!ONF+*ToB0|qXG z16jreYbPA3uIMp?2+|kVM7@2_BCbA7n@{8!#|8FiI@Q+GL!q-xai&q(C_|qBKR%kNF@E^bVWZs&{-&PF&wb>;Ch4MQZG+X!*s!k=GZ^jWz70N8!cRYtGE`h?hNUkF1E308iTB3uX>|aV;SQ+C8#4C7=aN4Ha+7EgH_Y3 zBbOc6BFxw?2p(bJNf2M4+yV3lAM*>2q=uX#dls$johdnNA0Gy{vM~HLpU0xbY%a%e z>HyCJJ|n2hBtWM5N;w#N>|McPbfCzxAx!}2@ZAh&6@U_7B@(PUuHWHNst|i7w7&gg fmIN?eVt_;X+t@M|HZS4i14((h`njxgN@xNA3a%|y literal 0 HcmV?d00001 diff --git a/src/minecraft/assemblyline/textures/CoalGenerator.png b/src/minecraft/assemblyline/textures/CoalGenerator.png new file mode 100644 index 0000000000000000000000000000000000000000..ac81171315361eec20cf1f7eb53d5f6cdff48132 GIT binary patch literal 3762 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 WU59UubRrj*0?^SgRIgOC4f_YtG&Dv4 literal 0 HcmV?d00001 diff --git a/src/minecraft/assemblyline/textures/ConveyorBelt.png b/src/minecraft/assemblyline/textures/ConveyorBelt.png new file mode 100644 index 0000000000000000000000000000000000000000..5666d206144b8bd6c5c5ff7b56627e217931d84e GIT binary patch literal 401 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85sBugD~Uq{1qucLG}_)Usv`!oE&UYT71)suL4aG^mK6yskrs_ zdSG9Zfk^Aa;K!3TXn$I{&V61)V5-uSS3O|=9vix52DSPSieWx#e-@Dp~G5BiT)aakSDhXPg#i4b^oIiXH z#Z0{)!sMkjtwEsasKnE~*Ujf!_Me~fdZ}65Qnozvm~*@T%B^}-^sMMyh{o0xwRgFm zpL>2QDtgH#$F$}(TYuYaiTly4^84nKbNvQernEd0F4*!gSJq+j+y}-C+Htc@6V9?k ixN52}0s{sP4(xentu)iz(Moz6NX*mK&t;ucLK6Tuv!KNQ literal 0 HcmV?d00001 diff --git a/src/minecraft/assemblyline/textures/ConveyorBeltF.png b/src/minecraft/assemblyline/textures/ConveyorBeltF.png new file mode 100644 index 0000000000000000000000000000000000000000..96aac9bf6e2b96da9195c48d14570235b33ac9d4 GIT binary patch literal 402 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85sBugD~Uq{1qucLG}_)Usv`!oE&UY@)0WAzX44V@^o<+7^2Aq5+TE z@&9p7^)L2LH|CIIcz$P{xs~ta2@FCGOdbw}oICE%H!s_J>+0t^S$jvOW#^mAVt<$V z-RD0kG+CSR;Mvx#VbeqBg;%}ZeS*=zmG{6V;W^>ec{95%Sshg2jPQ1PRT*EyG|kf^ z^yhvrhiAD4=TA@A8aB81(cbC0^9^sOKlr+3NuxEd@aH`FTYS?)M1_r~Cogka=bHOj zO2B%4p_ot9hhbVqF{wXVt9y+%ZB^>lFzskrs_ znj>G6fk5lSl@C2`2=CN--YBZR>P}{i0!!z`3u0@&{19#ZRy2F3fy0r{%_Ww{Nx$mJOB<>?bk^1ynHg z6#MP{p0swV?(vA|>)dxgtb5(_;IxduFF$+d(4JzwiUplNwcnWD$jNIm!nsl_XP(_U`bR5PZFK8SmFx z`D;7gU93(z7g_yaUc;12Pkwy8?uQ&DNdR{FN<>mC5)8f{LEqn`3&Q0JvApZWW o)Q7Vy5w4mljKI)=g9DrD7!IdRN{m~iY!4FjboFyt=akR{079Rl%K!iX literal 0 HcmV?d00001 diff --git a/src/minecraft/assemblyline/textures/Grey64.png b/src/minecraft/assemblyline/textures/Grey64.png new file mode 100644 index 0000000000000000000000000000000000000000..999e6c052e3a9128197b3e86f0919dbe4c916180 GIT binary patch literal 534 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRdwrjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc4XZs}978JN-d=X(WnkcGK47{2>&YGb#tuxc z*Dhx3yVSg%;Rh#I07DML<7fxQ4U9ecjI0OP4EC{#Fi0QxAvP*Ow;-`Nz|3prI;l$D R(hL}v44$rjF6*2UngIJipO63m literal 0 HcmV?d00001 diff --git a/src/minecraft/assemblyline/textures/dropbox.png b/src/minecraft/assemblyline/textures/dropbox.png new file mode 100644 index 0000000000000000000000000000000000000000..02f2d9655fd3d33747e27e6c7ae010da0f6bf0f4 GIT binary patch literal 950 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85sBugD~Uq{1qucLG}_)Usv`!Tzu?;#;+KCpE58on|Zo8hE&{o zd)MCYv4cp%$LSqS&N(kty5!>$Nt)`sjiN$hgnxluweYMQn!$I)fqAA z_nZC%+q50oSU=yTv6J&tjm>`Z&qjSO7`r`}990QgV3<6;fkACpnwcN!e=B>ZY-zdWnKb5&;<|2(a+10B~ zo#1tBSfp`J=FRuM#q3NvY7<|{JpA^|Oi8J3Z^hZlP}e|_!asj4{N|n7wW*^c?dqAN zMM^JY_%4_@P6_yC!`{(hVeWTWWIa=w4Y=)l0^(XeaH?^V|y*Sp=0 z;IXRIvfuh|UAVEX0k25xLEY61e;Js?7RddXW3W%^j7$&Gn*1_8zmmwV<DrWUMzV|#!0 zcFx>yFV=1h&u3>j@s@SZt^Zeem7?^Y`=wvL;`HdC*NyII2kB0BdB%D5!RJo%N3SZq z^DU;KU+&0Te(5^+3$lZ-v566!ivqVi@{R;sZIV4 z?emhy)HwuZ%G&HaJLBmdl?E*|eJlskSXVs%I(uF+=g#UcWtKOXgf{rGRFpnBK1=Z7 z?OE?XT&`cFA^^1O!cm!oe~WgfZ+q7HGSp~eo}u9+;V*_vF>!jqUV@sgHg?p@4{*u?k7^*8_itq{F;eDUkosZ|vc+~1vh7}C>EmsGrX#An6i@s&-C r(a--sPt{-6&)`4?<{bpMA+VpZR$9eJ?d%3neq``;^>bP0l+XkK2Y7pe literal 0 HcmV?d00001 diff --git a/src/minecraft/assemblyline/textures/ejector.png b/src/minecraft/assemblyline/textures/ejector.png new file mode 100644 index 0000000000000000000000000000000000000000..feba2e00164af67757833c7dcc1fc4d71ec8f3c4 GIT binary patch literal 1054 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sDEfH31!Z9ZuR2IkG4E{-7;ac^fkP7*fcab5nrAcpZAQ+J5i zomN$yhc+A9q+3cfx+Zw8GA+72>1+I|Wk8_&x_sEo5LgHRX~z3q#GmsgkS=sa`LI znHcQupXy<1Fk1SBlaXP5eySUz!_1&xEes9kw;L^HSm2{s>%?&2dGyRchJa;L>=YRu zd|rEIMQjdH#(#By)#k0Kf2TTr6>b_|;{(O8ccmrETy|AxrWAuS5 zPqY2^RSMpi$0VpE`#?RO?fYzA*MGzKXpJa?F{g6)Y-Wap&nw@AG6ZbfVwQ-Dt;pZBO-}1((EswQd)ou5 z&j$Wwy#C?rg1|PWhPSyXR{RCOZR=it|Mk9Cnzg~#E_@@KK>C6=x(<8RrTu*7y1-IN z-0vyF_J)laqJmXtRHrZZP@s=t$Gzr&D_z{}3Cz)kk97Q=zu z*xp8lfW>`zq6`nVtvlwxup-cXI~PMiba=7?!<7|_qgfettX*v=z>sz2;@YOY4BJah z+4$`FKb$Z#n~>CCB+I$m?`*YAjy4;^5rzX&3dg>iY-Vzp6?8;}iNSE+@|mIxm!>GG z2{Lqiv^~3~hQ}wkYlceNPpO0`3hZOR`-au?dTT@fw^cwb z&pt=}S^xgN-QPd|eja^qy0rTL@2`)&eYTysb+qyF&L7K*7smgwJOAxNefIMQru&&| zxL$mkH%nck`#@#ZRn_2P_8;FK-mT}{^Yh0_ZzmSn*9@`=Ywo{HV{Rx>m7FcW(DT*$ zZVtnQbt=iiObr|Bme1y8xHL5-$BDt<+WV5tj1Idd_4sly9Q!plZ(HhJmRB=H{duZ) z-Iklpcj4W`D}raL8G~1={A}mDz21s-{F#G;n%r#GR>NSfqAZ{i(^Q| zt+#hCPMmEZ;&8G3c<4;CI~>Me92GCH?a=vjRAq8XWX{^$NUP`i_W8#xc5$n8sMSR? zTP)Ii+q~v=*5AVmT`!v)b$O8T@o??5RLy5SJAYa;Y`=ZhoX5H?v7@7-P{#hB&x0?| z<#p;-oIa@t^aTrp0D}X_J4lQlF3-#VTv+#dQhLn#>ob;VuC~m*{Y$!)K_=Ef^Vh!q z%vqaeJx9eUYn9hEF)6s#!g@MI^ z1xh_g{HOk)T`%gtRf91@V4;9OLzE@+0ab^G-CtMV|0HIAj^PLk%YjGij2nJ9GU(I^ zFm%fUx$Wz33TnLJXkpkhMYeIlBZeGqHCJ70rp9Uphsbn>J| zgm=(=#=22CpdzcU%2aUUy4O;I4^J9eBuKP%bVwX8jCR&zL=8ctFnyp}HlOXyF1?@Z zIqUD69iQX=yyESz*-RU188wS)dbeB7H$5J_3XgsVVD!i^2{0^h+Wnhx$}g$>V!Ld< z^P7KH6<9OPoP2oBoiY}!mtP;0u^6fUwk%^Q;>Qx9aObcb0L8ghin~Jbrum0I-w-@8 z=gspQf-ij28E%VDIMiqUY{|Ke$`h)w#3?+M6&Uy!IT!*ILDv73nU`MfuJ9mU^)1H} zA%;85z+|-I)H`2?-AuE=Zev}i1~z%!cA&|H#kY_G7&GB;G&loOQpkyQ2cD(aw?E&g zZE)x0x&sX$*Ep0e|G(72-Q}{$*^u*nn`LrIgJ@{{T;MMBZ_G^5= ed_^1Zry*Y9mD|d-)6Y!WmF=d#Wzp$Pz&6Gct{ literal 0 HcmV?d00001 diff --git a/src/minecraft/assemblyline/textures/gui_ejector.png b/src/minecraft/assemblyline/textures/gui_ejector.png new file mode 100644 index 0000000000000000000000000000000000000000..b9b396faae2b358afc0a6a55d85c64bb22cff4d5 GIT binary patch literal 3800 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 literal 0 HcmV?d00001 diff --git a/src/minecraft/assemblyline/textures/injector.png b/src/minecraft/assemblyline/textures/injector.png new file mode 100644 index 0000000000000000000000000000000000000000..f63471e5ebd33701b52bd50a220a98f3c12f5cb0 GIT binary patch literal 957 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85sBugD~Uq{1qucLG}_)Usv`!TvFmZOzrQSsu>uVZ9QEaLn>~) zz3U%z+d!hNu=OF|+on?MyWH_gkxyiv*;%@azg1CpA+|yThcdz4aWqy!xRixo>UH*GR24({Wi3Uaq z2A%^9zETgqef!?Hb6;P6-Sc>RXIT~hbzf@ZOO!IU-=4{_YA2h8&29d|XT}W7TTHkl zd>@=iXJDJ*%o)L<(M0+ObyfY8SU%p>;v{Lj4Wof__43Vamld)P6u8# zi|YXy2~2DbtZW)(Y<`FcoVxP-^y}hJ+tik6aW}Lo_Oc(iWWbidz{bF= zbAVyzyQlttt)FX@%r-u7`0?LY4?ouZna3#Mz@R31;M0f7Wk;B zJrl-!=T1rePg_%m;Li-x+Rg2NVKJe4!T|>P5SA#pdu6;6Twa};b?Nq09j55W(AHMg z2S&%+^?$aRwuOi>1Rnxgo|_1<+<<`@81xN{2N;Zv8zT*r zZ!y$cfdkxOD_a0d-2n}UYzbzA12Q}x{xMv;CnuIHvy8`vq4|mA7f1FL(M5mLn4F!R0AEk!@v>>+U-h zJgaQbRAw-BILsJeZ@_TZ7@nqh7@!VuILS~FyIqRk?PS`7Dc8FV{VJ)efRm*sVLohUIEl-#j_n}va?A