made progress with lumberjack implementation, #1869
This commit is contained in:
parent
87c18afb76
commit
9e58783add
5 changed files with 233 additions and 0 deletions
|
@ -37,6 +37,7 @@ import buildcraft.core.Version;
|
||||||
import buildcraft.core.network.BuildCraftChannelHandler;
|
import buildcraft.core.network.BuildCraftChannelHandler;
|
||||||
import buildcraft.core.proxy.CoreProxy;
|
import buildcraft.core.proxy.CoreProxy;
|
||||||
import buildcraft.core.robots.RobotIntegrationRecipe;
|
import buildcraft.core.robots.RobotIntegrationRecipe;
|
||||||
|
import buildcraft.core.robots.boards.BoardRobotLumberjackNBT;
|
||||||
import buildcraft.core.robots.boards.BoardRobotPickerNBT;
|
import buildcraft.core.robots.boards.BoardRobotPickerNBT;
|
||||||
import buildcraft.silicon.BlockLaser;
|
import buildcraft.silicon.BlockLaser;
|
||||||
import buildcraft.silicon.BlockLaserTable;
|
import buildcraft.silicon.BlockLaserTable;
|
||||||
|
@ -108,6 +109,7 @@ public class BuildCraftSilicon extends BuildCraftMod {
|
||||||
RedstoneBoardRegistry.instance = new ImplRedstoneBoardRegistry();
|
RedstoneBoardRegistry.instance = new ImplRedstoneBoardRegistry();
|
||||||
|
|
||||||
RedstoneBoardRegistry.instance.registerBoardClass(BoardRobotPickerNBT.instance, 10);
|
RedstoneBoardRegistry.instance.registerBoardClass(BoardRobotPickerNBT.instance, 10);
|
||||||
|
RedstoneBoardRegistry.instance.registerBoardClass(BoardRobotLumberjackNBT.instance, 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Mod.EventHandler
|
@Mod.EventHandler
|
||||||
|
|
|
@ -10,16 +10,21 @@ package buildcraft.core.render;
|
||||||
|
|
||||||
import org.lwjgl.opengl.GL11;
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
|
import net.minecraft.block.Block;
|
||||||
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.client.renderer.RenderBlocks;
|
import net.minecraft.client.renderer.RenderBlocks;
|
||||||
import net.minecraft.client.renderer.entity.Render;
|
import net.minecraft.client.renderer.entity.Render;
|
||||||
import net.minecraft.client.renderer.entity.RenderManager;
|
import net.minecraft.client.renderer.entity.RenderManager;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
|
import net.minecraft.init.Items;
|
||||||
|
import net.minecraft.item.EnumAction;
|
||||||
|
import net.minecraft.item.ItemBlock;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
|
||||||
import net.minecraftforge.client.IItemRenderer;
|
import net.minecraftforge.client.IItemRenderer;
|
||||||
|
import net.minecraftforge.client.MinecraftForgeClient;
|
||||||
|
|
||||||
import buildcraft.BuildCraftSilicon;
|
import buildcraft.BuildCraftSilicon;
|
||||||
import buildcraft.core.EntityLaser;
|
import buildcraft.core.EntityLaser;
|
||||||
|
@ -56,12 +61,19 @@ public class RenderRobot extends Render implements IItemRenderer {
|
||||||
|
|
||||||
box.render(factor);
|
box.render(factor);
|
||||||
|
|
||||||
|
// GL11.glTranslated(0.5, 0, 0);
|
||||||
|
GL11.glRotatef(robot.worldObj.getTotalWorldTime() % 45 + 90, 1, 0, 0);
|
||||||
|
doRenderItemAtHand(robot, new ItemStack(Items.diamond_axe));
|
||||||
|
// GL11.glTranslated(-0.5, 0, 0);
|
||||||
|
|
||||||
if (robot.laser.isVisible) {
|
if (robot.laser.isVisible) {
|
||||||
robot.laser.head.x = robot.posX;
|
robot.laser.head.x = robot.posX;
|
||||||
robot.laser.head.y = robot.posY;
|
robot.laser.head.y = robot.posY;
|
||||||
robot.laser.head.z = robot.posZ;
|
robot.laser.head.z = robot.posZ;
|
||||||
|
|
||||||
RenderLaser.doRenderLaser(renderManager.renderEngine, robot.laser, EntityLaser.LASER_TEXTURES [1]);
|
RenderLaser.doRenderLaser(renderManager.renderEngine, robot.laser, EntityLaser.LASER_TEXTURES [1]);
|
||||||
|
} else {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GL11.glEnable(GL11.GL_LIGHTING);
|
GL11.glEnable(GL11.GL_LIGHTING);
|
||||||
|
@ -118,4 +130,104 @@ public class RenderRobot extends Render implements IItemRenderer {
|
||||||
GL11.glEnable(GL11.GL_LIGHTING);
|
GL11.glEnable(GL11.GL_LIGHTING);
|
||||||
GL11.glPopMatrix();
|
GL11.glPopMatrix();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is a refactor from the code of RenderPlayer.
|
||||||
|
*/
|
||||||
|
public void doRenderItemAtHand(EntityRobot robot, ItemStack currentItem) {
|
||||||
|
ItemStack itemstack1 = currentItem;
|
||||||
|
float f3, f5;
|
||||||
|
|
||||||
|
if (itemstack1 != null) {
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
// this.modelBipedMain.bipedRightArm.postRender(0.0625F);
|
||||||
|
GL11.glTranslatef(-0.0625F, 0.4375F, 0.0625F);
|
||||||
|
|
||||||
|
// if (par1AbstractClientPlayer.fishEntity != null)
|
||||||
|
// {
|
||||||
|
// itemstack1 = new ItemStack(Items.stick);
|
||||||
|
// }
|
||||||
|
|
||||||
|
EnumAction enumaction = EnumAction.none;
|
||||||
|
|
||||||
|
// if (par1AbstractClientPlayer.getItemInUseCount() > 0)
|
||||||
|
// {
|
||||||
|
// enumaction = itemstack1.getItemUseAction();
|
||||||
|
// }
|
||||||
|
|
||||||
|
IItemRenderer customRenderer = MinecraftForgeClient.getItemRenderer(itemstack1, ItemRenderType.EQUIPPED);
|
||||||
|
boolean is3D = customRenderer != null && customRenderer.shouldUseRenderHelper(ItemRenderType.EQUIPPED,
|
||||||
|
itemstack1,
|
||||||
|
ItemRendererHelper.BLOCK_3D);
|
||||||
|
|
||||||
|
if (is3D || itemstack1.getItem() instanceof ItemBlock
|
||||||
|
&& RenderBlocks.renderItemIn3d(Block.getBlockFromItem(itemstack1.getItem()).getRenderType())) {
|
||||||
|
f3 = 0.5F;
|
||||||
|
GL11.glTranslatef(0.0F, 0.1875F, -0.3125F);
|
||||||
|
f3 *= 0.75F;
|
||||||
|
GL11.glRotatef(20.0F, 1.0F, 0.0F, 0.0F);
|
||||||
|
GL11.glRotatef(45.0F, 0.0F, 1.0F, 0.0F);
|
||||||
|
GL11.glScalef(-f3, -f3, f3);
|
||||||
|
} else if (itemstack1.getItem() == Items.bow) {
|
||||||
|
f3 = 0.625F;
|
||||||
|
GL11.glTranslatef(0.0F, 0.125F, 0.3125F);
|
||||||
|
GL11.glRotatef(-20.0F, 0.0F, 1.0F, 0.0F);
|
||||||
|
GL11.glScalef(f3, -f3, f3);
|
||||||
|
GL11.glRotatef(-100.0F, 1.0F, 0.0F, 0.0F);
|
||||||
|
GL11.glRotatef(45.0F, 0.0F, 1.0F, 0.0F);
|
||||||
|
} else if (itemstack1.getItem().isFull3D()) {
|
||||||
|
f3 = 0.625F;
|
||||||
|
|
||||||
|
if (itemstack1.getItem().shouldRotateAroundWhenRendering()) {
|
||||||
|
GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F);
|
||||||
|
GL11.glTranslatef(0.0F, -0.125F, 0.0F);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* if (par1AbstractClientPlayer.getItemInUseCount() > 0 &&
|
||||||
|
* enumaction == EnumAction.block) { GL11.glTranslatef(0.05F,
|
||||||
|
* 0.0F, -0.1F); GL11.glRotatef(-50.0F, 0.0F, 1.0F, 0.0F);
|
||||||
|
* GL11.glRotatef(-10.0F, 1.0F, 0.0F, 0.0F);
|
||||||
|
* GL11.glRotatef(-60.0F, 0.0F, 0.0F, 1.0F); }
|
||||||
|
*/
|
||||||
|
|
||||||
|
GL11.glTranslatef(0.0F, 0.1875F, 0.0F);
|
||||||
|
GL11.glScalef(f3, -f3, f3);
|
||||||
|
GL11.glRotatef(-100.0F, 1.0F, 0.0F, 0.0F);
|
||||||
|
GL11.glRotatef(45.0F, 0.0F, 1.0F, 0.0F);
|
||||||
|
} else {
|
||||||
|
f3 = 0.375F;
|
||||||
|
GL11.glTranslatef(0.25F, 0.1875F, -0.1875F);
|
||||||
|
GL11.glScalef(f3, f3, f3);
|
||||||
|
GL11.glRotatef(60.0F, 0.0F, 0.0F, 1.0F);
|
||||||
|
GL11.glRotatef(-90.0F, 1.0F, 0.0F, 0.0F);
|
||||||
|
GL11.glRotatef(20.0F, 0.0F, 0.0F, 1.0F);
|
||||||
|
}
|
||||||
|
|
||||||
|
float f4;
|
||||||
|
int k;
|
||||||
|
float f12;
|
||||||
|
|
||||||
|
if (itemstack1.getItem().requiresMultipleRenderPasses()) {
|
||||||
|
for (k = 0; k < itemstack1.getItem().getRenderPasses(itemstack1.getItemDamage()); ++k) {
|
||||||
|
int i = itemstack1.getItem().getColorFromItemStack(itemstack1, k);
|
||||||
|
f12 = (i >> 16 & 255) / 255.0F;
|
||||||
|
f4 = (i >> 8 & 255) / 255.0F;
|
||||||
|
f5 = (i & 255) / 255.0F;
|
||||||
|
GL11.glColor4f(f12, f4, f5, 1.0F);
|
||||||
|
this.renderManager.itemRenderer.renderItem(robot, itemstack1, k);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
k = itemstack1.getItem().getColorFromItemStack(itemstack1, 0);
|
||||||
|
float f11 = (k >> 16 & 255) / 255.0F;
|
||||||
|
f12 = (k >> 8 & 255) / 255.0F;
|
||||||
|
f4 = (k & 255) / 255.0F;
|
||||||
|
GL11.glColor4f(f11, f12, f4, 1.0F);
|
||||||
|
this.renderManager.itemRenderer.renderItem(robot, itemstack1, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,6 +40,8 @@ public class EntityRobot extends EntityLiving implements
|
||||||
DefaultProps.TEXTURE_PATH_ENTITIES + "/robot_builder.png");
|
DefaultProps.TEXTURE_PATH_ENTITIES + "/robot_builder.png");
|
||||||
public static final ResourceLocation ROBOT_TRANSPORT = new ResourceLocation("buildcraft",
|
public static final ResourceLocation ROBOT_TRANSPORT = new ResourceLocation("buildcraft",
|
||||||
DefaultProps.TEXTURE_PATH_ENTITIES + "/robot_picker.png");
|
DefaultProps.TEXTURE_PATH_ENTITIES + "/robot_picker.png");
|
||||||
|
public static final ResourceLocation ROBOT_FACTORY = new ResourceLocation("buildcraft",
|
||||||
|
DefaultProps.TEXTURE_PATH_ENTITIES + "/robot_factory.png");
|
||||||
|
|
||||||
private static ResourceLocation defaultTexture = new ResourceLocation("buildcraft", DefaultProps.TEXTURE_PATH_ENTITIES + "/robot_base.png");
|
private static ResourceLocation defaultTexture = new ResourceLocation("buildcraft", DefaultProps.TEXTURE_PATH_ENTITIES + "/robot_base.png");
|
||||||
|
|
||||||
|
|
41
common/buildcraft/core/robots/boards/BoardRobotLumberjack.java
Executable file
41
common/buildcraft/core/robots/boards/BoardRobotLumberjack.java
Executable file
|
@ -0,0 +1,41 @@
|
||||||
|
package buildcraft.core.robots.boards;
|
||||||
|
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
|
||||||
|
import buildcraft.api.boards.IRedstoneBoardRobot;
|
||||||
|
import buildcraft.api.boards.RedstoneBoardNBT;
|
||||||
|
import buildcraft.api.boards.RedstoneBoardRegistry;
|
||||||
|
import buildcraft.api.boards.RedstoneBoardRobotNBT;
|
||||||
|
import buildcraft.core.robots.EntityRobot;
|
||||||
|
|
||||||
|
public class BoardRobotLumberjack implements IRedstoneBoardRobot<EntityRobot> {
|
||||||
|
|
||||||
|
private NBTTagCompound data;
|
||||||
|
private RedstoneBoardNBT board;
|
||||||
|
private int range;
|
||||||
|
private boolean initialized = false;
|
||||||
|
|
||||||
|
public BoardRobotLumberjack(NBTTagCompound nbt) {
|
||||||
|
data = nbt;
|
||||||
|
|
||||||
|
board = RedstoneBoardRegistry.instance.getRedstoneBoard(nbt);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateBoard(EntityRobot robot) {
|
||||||
|
if (robot.worldObj.isRemote) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!initialized) {
|
||||||
|
range = data.getInteger("range");
|
||||||
|
|
||||||
|
initialized = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public RedstoneBoardRobotNBT getNBTHandler() {
|
||||||
|
return BoardRobotLumberjackNBT.instance;
|
||||||
|
}
|
||||||
|
}
|
76
common/buildcraft/core/robots/boards/BoardRobotLumberjackNBT.java
Executable file
76
common/buildcraft/core/robots/boards/BoardRobotLumberjackNBT.java
Executable file
|
@ -0,0 +1,76 @@
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2011-2014, SpaceToad and the BuildCraft Team
|
||||||
|
* http://www.mod-buildcraft.com
|
||||||
|
*
|
||||||
|
* BuildCraft is distributed under the terms of the Minecraft Mod Public
|
||||||
|
* License 1.0, or MMPL. Please check the contents of the license located in
|
||||||
|
* http://www.mod-buildcraft.com/MMPL-1.0.txt
|
||||||
|
*/
|
||||||
|
package buildcraft.core.robots.boards;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.util.IIcon;
|
||||||
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
|
||||||
|
import buildcraft.api.boards.IRedstoneBoardRobot;
|
||||||
|
import buildcraft.api.boards.RedstoneBoardRobotNBT;
|
||||||
|
import buildcraft.core.robots.EntityRobot;
|
||||||
|
import buildcraft.core.utils.NBTUtils;
|
||||||
|
import buildcraft.core.utils.StringUtils;
|
||||||
|
|
||||||
|
public final class BoardRobotLumberjackNBT extends RedstoneBoardRobotNBT {
|
||||||
|
|
||||||
|
public static BoardRobotLumberjackNBT instance = new BoardRobotLumberjackNBT();
|
||||||
|
|
||||||
|
public IIcon icon;
|
||||||
|
|
||||||
|
private BoardRobotLumberjackNBT() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getID() {
|
||||||
|
return "buildcraft:boardRobotLumberjack";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean advanced) {
|
||||||
|
list.add(StringUtils.localize("buildcraft.boardRobotLumberjack"));
|
||||||
|
|
||||||
|
NBTTagCompound nbt = NBTUtils.getItemData(stack);
|
||||||
|
|
||||||
|
list.add(StringUtils.localize("buildcraft.boardDetail.range") + ": " + nbt.getInteger("range"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IRedstoneBoardRobot create(NBTTagCompound nbt) {
|
||||||
|
return new BoardRobotLumberjack(nbt);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IIcon getIcon(NBTTagCompound nbt) {
|
||||||
|
return icon;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void registerIcons(IIconRegister iconRegister) {
|
||||||
|
icon = iconRegister.registerIcon("buildcraft:board_blue");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void createRandomBoard(NBTTagCompound nbt) {
|
||||||
|
int range = (int) Math.floor(nextFloat(10) * 500) + 10;
|
||||||
|
|
||||||
|
nbt.setInteger("range", range);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getRobotTexture() {
|
||||||
|
return EntityRobot.ROBOT_FACTORY;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue