Implemented the Quarry Controller model in the code

This commit is contained in:
Brian Ricketts 2013-01-29 13:42:56 -06:00
parent e6e9ce69bc
commit 5aa1ea7ee4
8 changed files with 188 additions and 27 deletions

View file

@ -11,6 +11,7 @@ import assemblyline.client.gui.GuiImprinter;
import assemblyline.client.render.BlockRenderingHandler; import assemblyline.client.render.BlockRenderingHandler;
import assemblyline.client.render.RenderArmbot; import assemblyline.client.render.RenderArmbot;
import assemblyline.client.render.RenderConveyorBelt; import assemblyline.client.render.RenderConveyorBelt;
import assemblyline.client.render.RenderCraneController;
import assemblyline.client.render.RenderCrate; import assemblyline.client.render.RenderCrate;
import assemblyline.client.render.RenderDetector; import assemblyline.client.render.RenderDetector;
import assemblyline.client.render.RenderManipulator; import assemblyline.client.render.RenderManipulator;
@ -22,6 +23,7 @@ import assemblyline.common.machine.TileEntityManipulator;
import assemblyline.common.machine.TileEntityRejector; import assemblyline.common.machine.TileEntityRejector;
import assemblyline.common.machine.armbot.TileEntityArmbot; import assemblyline.common.machine.armbot.TileEntityArmbot;
import assemblyline.common.machine.belt.TileEntityConveyorBelt; import assemblyline.common.machine.belt.TileEntityConveyorBelt;
import assemblyline.common.machine.crane.TileEntityCraneController;
import assemblyline.common.machine.detector.TileEntityDetector; import assemblyline.common.machine.detector.TileEntityDetector;
import assemblyline.common.machine.encoder.TileEntityEncoder; import assemblyline.common.machine.encoder.TileEntityEncoder;
import assemblyline.common.machine.imprinter.TileEntityImprinter; import assemblyline.common.machine.imprinter.TileEntityImprinter;
@ -50,6 +52,7 @@ public class ClientProxy extends CommonProxy
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityManipulator.class, new RenderManipulator()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityManipulator.class, new RenderManipulator());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCrate.class, new RenderCrate()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCrate.class, new RenderCrate());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityArmbot.class, new RenderArmbot()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityArmbot.class, new RenderArmbot());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCraneController.class, new RenderCraneController());
} }
@Override @Override

View file

@ -8,9 +8,9 @@ package assemblyline.client.model;
import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelRenderer; import net.minecraft.client.model.ModelRenderer;
import net.minecraft.entity.Entity; import net.minecraftforge.common.ForgeDirection;
public class ModelQuarryController extends ModelBase public class ModelCraneController extends ModelBase
{ {
// fields // fields
ModelRenderer Base2; ModelRenderer Base2;
@ -23,7 +23,7 @@ public class ModelQuarryController extends ModelBase
ModelRenderer ConnectorTop; ModelRenderer ConnectorTop;
ModelRenderer ConnectorRight; ModelRenderer ConnectorRight;
public ModelQuarryController() public ModelCraneController()
{ {
textureWidth = 128; textureWidth = 128;
textureHeight = 64; textureHeight = 64;
@ -84,19 +84,36 @@ public class ModelQuarryController extends ModelBase
setRotation(ConnectorRight, 0F, 0F, 0F); setRotation(ConnectorRight, 0F, 0F, 0F);
} }
public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) public void render(float scale)
{ {
super.render(entity, f, f1, f2, f3, f4, f5); Base2.setRotationPoint(-6F, 12F, -6F);
setRotationAngles(f, f1, f2, f3, f4, f5); setRotation(Base2, 0F, 0F, 0F);
Base2.render(f5); Base.setRotationPoint(-8F, 16F, -8F);
Base.render(f5); setRotation(Base, 0F, 0F, 0F);
ConnectorFront.render(f5); Decoration1.setRotationPoint(2F, 15F, 6F);
Decoration1.render(f5); setRotation(Decoration1, 0F, 0F, 0F);
Decoration2.render(f5); Decoration2.setRotationPoint(-4F, 15F, 6F);
Decoration3.render(f5); setRotation(Decoration2, 0F, 0F, 0F);
Decoration4.render(f5); Decoration3.setRotationPoint(-7F, 15F, 2F);
ConnectorTop.render(f5); setRotation(Decoration3, 0F, 0F, 0F);
ConnectorRight.render(f5); Decoration4.setRotationPoint(-7F, 15F, -4F);
setRotation(Decoration4, 0F, 0F, 0F);
ConnectorTop.setRotationPoint(-4F, 16F, -4F);
setRotation(ConnectorTop, 0F, 0F, -1.570796F);
ConnectorFront.setRotationPoint(-4F, 12F, -0.01F);
setRotation(ConnectorFront, 0F, 1.570796F, 0F);
ConnectorRight.setRotationPoint(0.01F, 12F, -4F);
setRotation(ConnectorRight, 0F, 0F, 0F);
Base2.render(scale);
Base.render(scale);
ConnectorFront.render(scale);
Decoration1.render(scale);
Decoration2.render(scale);
Decoration3.render(scale);
Decoration4.render(scale);
ConnectorTop.render(scale);
ConnectorRight.render(scale);
} }
private void setRotation(ModelRenderer model, float x, float y, float z) private void setRotation(ModelRenderer model, float x, float y, float z)
@ -106,9 +123,4 @@ public class ModelQuarryController extends ModelBase
model.rotateAngleZ = z; model.rotateAngleZ = z;
} }
public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5)
{
super.setRotationAngles(f, f1, f2, f3, f4, f5, null);
}
} }

View file

@ -74,6 +74,16 @@ public class BlockRenderingHandler implements ISimpleBlockRenderingHandler
RenderArmbot.MODEL.render(0.0625F, 0, 0); RenderArmbot.MODEL.render(0.0625F, 0, 0);
GL11.glPopMatrix(); GL11.glPopMatrix();
} }
else if (block.blockID == AssemblyLine.blockCraneController.blockID)
{
GL11.glBindTexture(GL11.GL_TEXTURE_2D, FMLClientHandler.instance().getClient().renderEngine.getTexture(AssemblyLine.TEXTURE_PATH + RenderCraneController.TEXTURE));
GL11.glPushMatrix();
GL11.glTranslatef(0f, 1f, 0f);
GL11.glRotatef(180f, 0f, 0f, 1f);
GL11.glRotatef(-90f, 0f, 1f, 0f);
RenderCraneController.MODEL.render(0.0625f);
GL11.glPopMatrix();
}
} }
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer)

View file

@ -0,0 +1,47 @@
package assemblyline.client.render;
import static org.lwjgl.opengl.GL11.*;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection;
import assemblyline.client.model.ModelCraneController;
import assemblyline.common.AssemblyLine;
public class RenderCraneController extends RenderImprintable
{
public static final String TEXTURE = "QuarryControllerMap.png";
public static final ModelCraneController MODEL = new ModelCraneController();
@Override
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f)
{
this.bindTextureByName(AssemblyLine.TEXTURE_PATH + TEXTURE);
ForgeDirection rot = ForgeDirection.getOrientation(tileEntity.worldObj.getBlockMetadata(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord));
float angle = 0f;
switch (rot)
{
case NORTH:
{
angle = 90f;
break;
}
case SOUTH:
{
angle = 270f;
break;
}
case EAST:
{
angle = 180f;
break;
}
}
glPushMatrix();
glTranslated(x + 0.5, y + 1.5, z + 0.5);
glRotatef(180f, 0f, 0f, 1f);
glRotatef(angle, 0f, 1f, 0f);
glEnable(GL_LIGHTING);
MODEL.render(0.0625f);
glPopMatrix();
}
}

View file

@ -5,14 +5,11 @@ import java.io.File;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.dedicated.DedicatedServer;
import net.minecraftforge.common.Configuration; import net.minecraftforge.common.Configuration;
import net.minecraftforge.oredict.ShapedOreRecipe; import net.minecraftforge.oredict.ShapedOreRecipe;
import net.minecraftforge.oredict.ShapelessOreRecipe; import net.minecraftforge.oredict.ShapelessOreRecipe;
import universalelectricity.core.UniversalElectricity; import universalelectricity.core.UniversalElectricity;
import universalelectricity.prefab.TranslationHelper; import universalelectricity.prefab.TranslationHelper;
import universalelectricity.prefab.UETab;
import universalelectricity.prefab.UpdateNotifier; import universalelectricity.prefab.UpdateNotifier;
import universalelectricity.prefab.multiblock.BlockMulti; import universalelectricity.prefab.multiblock.BlockMulti;
import universalelectricity.prefab.network.PacketManager; import universalelectricity.prefab.network.PacketManager;
@ -22,6 +19,7 @@ import assemblyline.common.machine.BlockManipulator;
import assemblyline.common.machine.BlockRejector; import assemblyline.common.machine.BlockRejector;
import assemblyline.common.machine.armbot.BlockArmbot; import assemblyline.common.machine.armbot.BlockArmbot;
import assemblyline.common.machine.belt.BlockConveyorBelt; import assemblyline.common.machine.belt.BlockConveyorBelt;
import assemblyline.common.machine.crane.BlockCraneController;
import assemblyline.common.machine.detector.BlockDetector; import assemblyline.common.machine.detector.BlockDetector;
import assemblyline.common.machine.encoder.BlockEncoder; import assemblyline.common.machine.encoder.BlockEncoder;
import assemblyline.common.machine.encoder.ItemDisk; import assemblyline.common.machine.encoder.ItemDisk;
@ -32,7 +30,6 @@ import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.Init; import cpw.mods.fml.common.Mod.Init;
import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.Mod.PostInit;
import cpw.mods.fml.common.Mod.PreInit; import cpw.mods.fml.common.Mod.PreInit;
import cpw.mods.fml.common.Mod.ServerStarted; import cpw.mods.fml.common.Mod.ServerStarted;
import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.SidedProxy;
@ -81,6 +78,7 @@ public class AssemblyLine
public static Block blockDetector; public static Block blockDetector;
public static Block blockRejector; public static Block blockRejector;
public static Block blockArmbot; public static Block blockArmbot;
public static Block blockCraneController;
public static BlockMulti blockMulti; public static BlockMulti blockMulti;
@ -103,8 +101,8 @@ public class AssemblyLine
blockRejector = new BlockRejector(CONFIGURATION.getBlock("Rejector", BLOCK_ID_PREFIX + 6).getInt()); blockRejector = new BlockRejector(CONFIGURATION.getBlock("Rejector", BLOCK_ID_PREFIX + 6).getInt());
blockEncoder = new BlockEncoder(CONFIGURATION.getBlock("Encoder", BLOCK_ID_PREFIX + 7).getInt(), 7); blockEncoder = new BlockEncoder(CONFIGURATION.getBlock("Encoder", BLOCK_ID_PREFIX + 7).getInt(), 7);
blockArmbot = new BlockArmbot(CONFIGURATION.getBlock("Armbot", BLOCK_ID_PREFIX + 8).getInt()); blockArmbot = new BlockArmbot(CONFIGURATION.getBlock("Armbot", BLOCK_ID_PREFIX + 8).getInt());
blockMulti = new BlockMulti(CONFIGURATION.getBlock("Multiblock", BLOCK_ID_PREFIX + 9).getInt()); blockMulti = new BlockMulti(CONFIGURATION.getBlock("Multiblock", BLOCK_ID_PREFIX + 9).getInt());
blockCraneController = new BlockCraneController(CONFIGURATION.getBlock("CraneController", BLOCK_ID_PREFIX + 10).getInt());
itemImprint = new ItemImprinter(CONFIGURATION.getBlock("Imprint", ITEM_ID_PREFIX).getInt()); itemImprint = new ItemImprinter(CONFIGURATION.getBlock("Imprint", ITEM_ID_PREFIX).getInt());
itemDisk = new ItemDisk(CONFIGURATION.getBlock("Disk", ITEM_ID_PREFIX + 1).getInt()); itemDisk = new ItemDisk(CONFIGURATION.getBlock("Disk", ITEM_ID_PREFIX + 1).getInt());
@ -119,6 +117,7 @@ public class AssemblyLine
GameRegistry.registerBlock(blockDetector, "Detector"); GameRegistry.registerBlock(blockDetector, "Detector");
GameRegistry.registerBlock(blockRejector, "Rejector"); GameRegistry.registerBlock(blockRejector, "Rejector");
GameRegistry.registerBlock(blockArmbot, "Armbot"); GameRegistry.registerBlock(blockArmbot, "Armbot");
GameRegistry.registerBlock(blockCraneController, "Crane Controller");
TabAssemblyLine.itemStack = new ItemStack(AssemblyLine.blockConveyorBelt); TabAssemblyLine.itemStack = new ItemStack(AssemblyLine.blockConveyorBelt);
UpdateNotifier.INSTANCE.checkUpdate(NAME, VERSION, "http://calclavia.com/downloads/al/recommendedversion.txt"); UpdateNotifier.INSTANCE.checkUpdate(NAME, VERSION, "http://calclavia.com/downloads/al/recommendedversion.txt");

View file

@ -15,6 +15,7 @@ import assemblyline.common.machine.TileEntityManipulator;
import assemblyline.common.machine.TileEntityRejector; import assemblyline.common.machine.TileEntityRejector;
import assemblyline.common.machine.armbot.TileEntityArmbot; import assemblyline.common.machine.armbot.TileEntityArmbot;
import assemblyline.common.machine.belt.TileEntityConveyorBelt; import assemblyline.common.machine.belt.TileEntityConveyorBelt;
import assemblyline.common.machine.crane.TileEntityCraneController;
import assemblyline.common.machine.detector.TileEntityDetector; import assemblyline.common.machine.detector.TileEntityDetector;
import assemblyline.common.machine.encoder.ContainerEncoder; import assemblyline.common.machine.encoder.ContainerEncoder;
import assemblyline.common.machine.encoder.TileEntityEncoder; import assemblyline.common.machine.encoder.TileEntityEncoder;
@ -43,6 +44,7 @@ public class CommonProxy implements IGuiHandler
GameRegistry.registerTileEntity(TileEntityDetector.class, "ALDetector"); GameRegistry.registerTileEntity(TileEntityDetector.class, "ALDetector");
GameRegistry.registerTileEntity(TileEntityEncoder.class, "ALEncoder"); GameRegistry.registerTileEntity(TileEntityEncoder.class, "ALEncoder");
GameRegistry.registerTileEntity(TileEntityArmbot.class, "ALArmbot"); GameRegistry.registerTileEntity(TileEntityArmbot.class, "ALArmbot");
GameRegistry.registerTileEntity(TileEntityCraneController.class, "ALCraneController");
GameRegistry.registerTileEntity(TileEntityImprinter.class, "ALImprinter"); GameRegistry.registerTileEntity(TileEntityImprinter.class, "ALImprinter");
GameRegistry.registerTileEntity(TileEntityMulti.class, "ALMulti"); GameRegistry.registerTileEntity(TileEntityMulti.class, "ALMulti");
} }

View file

@ -0,0 +1,80 @@
package assemblyline.common.machine.crane;
import net.minecraft.block.material.Material;
import net.minecraft.entity.EntityLiving;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeDirection;
import universalelectricity.core.UniversalElectricity;
import universalelectricity.prefab.BlockMachine;
import assemblyline.client.render.BlockRenderingHandler;
import assemblyline.common.TabAssemblyLine;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class BlockCraneController extends BlockMachine
{
public BlockCraneController(int id)
{
super("cranecontroller", id, UniversalElectricity.machine);
this.setResistance(5.0f);
this.setHardness(5.0f);
this.setCreativeTab(TabAssemblyLine.INSTANCE);
}
@Override
public boolean isOpaqueCube()
{
return false;
}
@Override
public boolean renderAsNormalBlock()
{
return false;
}
@Override
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLiving entity)
{
int rot = (int) Math.min((entity.rotationYaw - 45f) / 90f, 3);
switch (rot)
{
case 0: //WEST
{
world.setBlockMetadataWithNotify(x, y, z, ForgeDirection.WEST.ordinal());
break;
}
case 1: //NORTH
{
world.setBlockMetadataWithNotify(x, y, z, ForgeDirection.NORTH.ordinal());
break;
}
case 2: //EAST
{
world.setBlockMetadataWithNotify(x, y, z, ForgeDirection.EAST.ordinal());
break;
}
default: //SOUTH
{
world.setBlockMetadataWithNotify(x, y, z, ForgeDirection.SOUTH.ordinal());
break;
}
}
}
@SideOnly(Side.CLIENT)
@Override
public int getRenderType()
{
return BlockRenderingHandler.BLOCK_RENDER_ID;
}
@Override
public TileEntity createNewTileEntity(World world, int metadata)
{
return new TileEntityCraneController();
}
}

View file

@ -0,0 +1,8 @@
package assemblyline.common.machine.crane;
import assemblyline.common.machine.TileEntityAssemblyNetwork;
public class TileEntityCraneController extends TileEntityAssemblyNetwork
{
}