Rotation for Grinder incorrect, needs redo origin?

This commit is contained in:
KitsuShadow
2015-08-29 11:33:55 -04:00
parent 2f51a3dc70
commit 0a6b95efa8
12 changed files with 374 additions and 37 deletions

View File

@@ -1,11 +0,0 @@
# Blender MTL File: 'GrinderWheel.blend'
# Material Count: 1
newmtl None
Ns 0
Ka 0.000000 0.000000 0.000000
Kd 0.8 0.8 0.8
Ks 0.8 0.8 0.8
d 1
illum 2
map_Kd StoneGrindWheel.png

View File

@@ -10,11 +10,13 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MathHelper;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import nmd.primal.energy.block.grinder.CrankGrinder;
import nmd.primal.energy.block.lathe.LatheBase;
import nmd.primal.energy.common.ModInfo;
import nmd.primal.energy.render.RenderID;
import nmd.primal.energy.tileents.TileEntCrank;
import nmd.primal.energy.tileents.TileEntLatheBase;
import nmd.primal.energy.tileents.grinder.TileEntCrankGrinder;
import nmd.primal.energy.util.CustomTab;
import nmd.primal.energy.util.EnergyUtil;
@@ -46,16 +48,16 @@ public class CrankBlock extends Block implements ITileEntityProvider{
tileLathe.markDirty();
tileLathe.markForUpdate();
}
}
if(tile.getBlockMetadata()==1){
if(world.getBlock(x, y-1, z) instanceof LatheBase){
TileEntLatheBase tileLathe = (TileEntLatheBase) world.getTileEntity(x, y-1, z);
tileLathe.isPowered=true;
tileLathe.power+=100;
tileLathe.markDirty();
tileLathe.markForUpdate();
}
}*/
if(tile.getBlockMetadata()==1){
if(world.getBlock(x, y-1, z) instanceof CrankGrinder){
TileEntCrankGrinder tileGrinder = (TileEntCrankGrinder) world.getTileEntity(x, y-1, z);
tileGrinder.isPowered=true;
tileGrinder.power+=20;
tileGrinder.markDirty();
tileGrinder.markForUpdate();
}
}
if(tile.getBlockMetadata()==2){
if(world.getBlock(x, y, z+1) instanceof LatheBase){
TileEntLatheBase tileLathe = (TileEntLatheBase) world.getTileEntity(x, y, z+1);

View File

@@ -1,17 +1,27 @@
package nmd.primal.energy.block.grinder;
import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import nmd.primal.energy.common.ModInfo;
import nmd.primal.energy.item.ModItems;
import nmd.primal.energy.render.RenderID;
import nmd.primal.energy.tileents.TileEntLatheBase;
import nmd.primal.energy.tileents.grinder.TileEntCrankGrinder;
import nmd.primal.energy.util.CustomTab;
import nmd.primal.energy.util.LatheRecipes;
public class CrankGrinder extends BlockContainer{
private final Random random = new Random();
public CrankGrinder(String name, Material mat) {
super(mat);
this.setBlockName(name);
@@ -25,16 +35,138 @@ public class CrankGrinder extends BlockContainer{
}
public boolean onBlockActivated (World world, int x, int y, int z, EntityPlayer player, int q, float a, float b, float c) {
if(!world.isRemote){
TileEntCrankGrinder tileEnt = (TileEntCrankGrinder) world.getTileEntity(x, y, z);
System.out.println("Slot 0:"+tileEnt.getStackInSlot(0) +" Slot 1:"+ tileEnt.getStackInSlot(1));
if(player.inventory.getCurrentItem()!=null){
if(player.inventory.getCurrentItem().getItem()!=ModItems.stoneGrinder){
//System.out.println(player.inventory.getCurrentItem());
if (tileEnt.getStackInSlot(0)==null){
tileEnt.setInventorySlotContents(0, player.inventory.getCurrentItem());
player.inventory.setInventorySlotContents(player.inventory.currentItem, null);
tileEnt.markForUpdate();
tileEnt.markDirty();
return true;
}
if (tileEnt.getStackInSlot(0)!=null){
if(player.inventory.getCurrentItem()!=null){
if(player.inventory.getCurrentItem().getItem()!=ModItems.stoneGrinder){
ItemStack pStack = player.inventory.getCurrentItem().copy();
ItemStack sStack = tileEnt.getStackInSlot(0).copy();
ItemStack sStackTemp = tileEnt.getStackInSlot(0).copy();
if(tileEnt.getStackInSlot(0).stackSize < 64){
sStackTemp.stackSize++;
if ((sStack.getItem().equals(pStack.getItem())) && (sStack.getItemDamage() == pStack.getItemDamage()) ){
tileEnt.setInventorySlotContents(0, sStackTemp);
player.inventory.decrStackSize(player.inventory.currentItem, 1);
tileEnt.markForUpdate();
tileEnt.markDirty();
return true;
}
}
}
}
}
}
}
if (player.isSneaking() && player.inventory.getCurrentItem()==null) {
if(tileEnt.getStackInSlot(0)!=null){
player.inventory.setInventorySlotContents(player.inventory.currentItem, tileEnt.getStackInSlot(0));
tileEnt.setInventorySlotContents(0, null);
tileEnt.markForUpdate();
tileEnt.markDirty();
return true;
}
}
if (!player.isSneaking()) {
if((player.inventory.getCurrentItem()==null)){
if(tileEnt.getStackInSlot(0)==null && tileEnt.getStackInSlot(1)!=null){
ItemStack pStack = tileEnt.getStackInSlot(1).copy();
pStack.stackSize = 1;
EntityItem eItem = new EntityItem(world, player.posX, player.posY, player.posZ, pStack);
if (pStack.hasTagCompound()) {
eItem.getEntityItem().setTagCompound(((NBTTagCompound) pStack.getTagCompound().copy()));
}
world.spawnEntityInWorld(eItem);
tileEnt.decrStackSize(1, 1);
tileEnt.markForUpdate();
tileEnt.markDirty();
return true;
}
if(tileEnt.getStackInSlot(0)!=null){
ItemStack pStack = tileEnt.getStackInSlot(0).copy();
pStack.stackSize = 1;
world.spawnEntityInWorld(new EntityItem(world, player.posX, player.posY, player.posZ, pStack));
tileEnt.decrStackSize(0, 1);
tileEnt.markForUpdate();
tileEnt.markDirty();
return true;
}
}
}
if(player.inventory.getCurrentItem()!=null){
if(player.inventory.getCurrentItem().getItem()==ModItems.stoneGrinder){
if (tileEnt.getStackInSlot(1)==null){
tileEnt.setInventorySlotContents(1, player.inventory.getCurrentItem());
player.inventory.setInventorySlotContents(player.inventory.currentItem, null);
tileEnt.markForUpdate();
tileEnt.markDirty();
return true;
}
}
}
}
return false;
}
public void breakBlock(World world, int x, int y, int z, Block block, int meta) {
TileEntCrankGrinder tileEnt = (TileEntCrankGrinder) world.getTileEntity(x, y, z);
if (tileEnt != null) {
for (int i = 0; i < tileEnt.getSizeInventory(); ++i) {
ItemStack itemstack = tileEnt.getStackInSlot(i);
if (itemstack != null) {
float f = this.random.nextFloat() * 0.6F + 0.1F;
float f1 = this.random.nextFloat() * 0.6F + 0.1F;
float f2 = this.random.nextFloat() * 0.6F + 0.1F;
while (itemstack.stackSize > 0) {
int j = this.random.nextInt(21) + 10;
if (j > itemstack.stackSize) {
j = itemstack.stackSize;
}
itemstack.stackSize -= j;
EntityItem entityitem = new EntityItem(world, x + f, y + f1, z + f2, new ItemStack(itemstack.getItem(), j, itemstack.getItemDamage()));
if (itemstack.hasTagCompound()) {
entityitem.getEntityItem().setTagCompound(((NBTTagCompound) itemstack.getTagCompound().copy()));
}
float f3 = 0.025F;
entityitem.motionX = (float) this.random.nextGaussian() * f3;
entityitem.motionY = (float) this.random.nextGaussian() * f3 + 0.1F;
entityitem.motionZ = (float) this.random.nextGaussian() * f3;
world.spawnEntityInWorld(entityitem);
}
}
}
world.func_147453_f(x, y, z, block);
}
super.breakBlock(world, x, y, z, block, meta);
}
@Override
public TileEntity createNewTileEntity(World world, int i) {
return new TileEntCrankGrinder();
}
@Override
public int getRenderType() {
return RenderID.crankGrinderID;

View File

@@ -19,7 +19,7 @@ public class ContainerCrankGrinder extends Container{
public ContainerCrankGrinder (InventoryPlayer inventoryPlayer, TileEntCrankGrinder te){
tile = te;
addSlotToContainer(new Slot(tile, 0, 80, 34));
//addSlotToContainer(new Slot(tile, 1, 80, 34));
addSlotToContainer(new Slot(tile, 1, 80, 34));
bindPlayerInventory(inventoryPlayer);
}

View File

@@ -2,6 +2,8 @@ package nmd.primal.energy.item;
import net.minecraft.item.Item;
import nmd.primal.energy.common.ModInfo;
import nmd.primal.energy.item.grinderWheels.StoneGrindWheel;
import nmd.primal.energy.item.tools.SChiselItem;
import nmd.primal.energy.util.CustomTab;
import cpw.mods.fml.common.registry.GameRegistry;
@@ -11,11 +13,12 @@ public class ModItems {
public static Item swheelItem;
public static Item sgearItem;
public static Item saxleItem;
public static Item stoneGrinder;
public static void registerItems(){
schiselItem = new SChiselItem();
stoneGrinder = new StoneGrindWheel();
swheelItem = new Item().setUnlocalizedName("swheelItem").setCreativeTab(CustomTab.NMDEnergyTab).setTextureName(ModInfo.MOD_ID + ":swheelItem");
GameRegistry.registerItem(swheelItem, "swheelItem");
@@ -25,6 +28,7 @@ public class ModItems {
saxleItem = new Item().setUnlocalizedName("saxleItem").setCreativeTab(CustomTab.NMDEnergyTab).setTextureName(ModInfo.MOD_ID + ":saxleItem");
GameRegistry.registerItem(saxleItem, "saxleItem");
}

View File

@@ -0,0 +1,40 @@
package nmd.primal.energy.item.grinderWheels;
import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import nmd.primal.energy.common.ModInfo;
import nmd.primal.energy.util.CustomTab;
public class StoneGrindWheel extends Item{
private String name = "stoneGrindWheel";
private Item item;
public StoneGrindWheel(){
setMaxStackSize(1);
setUnlocalizedName(name);
setTextureName(ModInfo.MOD_ID + ":" + name);
setMaxDamage(1500);
setNoRepair();
setCreativeTab(CustomTab.NMDEnergyTab);
item = this;
GameRegistry.registerItem(this, name);
}
@Override
public boolean doesContainerItemLeaveCraftingGrid(ItemStack itemstack) {
return false;
}
/*@Override
public Item getContainerItem()
{
item.setDamage(new ItemStack(item), +1);
return item;
}*/
}

View File

@@ -1,4 +1,4 @@
package nmd.primal.energy.item;
package nmd.primal.energy.item.tools;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
@@ -20,13 +20,12 @@ public class SChiselItem extends Item{
private String name = "schiselItem";
private Item item;
private boolean doWork;
public SChiselItem(){
setMaxStackSize(1);
setUnlocalizedName(name);
setTextureName(ModInfo.MOD_ID + ":" + name);
setMaxDamage(100);
setMaxDamage(500);
setNoRepair();
setCreativeTab(CustomTab.NMDEnergyTab);

View File

@@ -1,9 +1,12 @@
package nmd.primal.energy.render;
import cpw.mods.fml.client.registry.ClientRegistry;
import net.minecraftforge.client.MinecraftForgeClient;
import nmd.primal.energy.item.ModItems;
import nmd.primal.energy.render.block.RenderCrank;
import nmd.primal.energy.render.block.RenderCrankGrinder;
import nmd.primal.energy.render.block.RenderLathe;
import nmd.primal.energy.render.item.IRStoneGrindWheel;
import nmd.primal.energy.tileents.TileEntCrank;
import nmd.primal.energy.tileents.TileEntLatheBase;
import nmd.primal.energy.tileents.grinder.TileEntCrankGrinder;
@@ -16,6 +19,8 @@ public class RenderRegistry {
ClientRegistry.bindTileEntitySpecialRenderer(TileEntCrank.class, new RenderCrank());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntLatheBase.class, new RenderLathe());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntCrankGrinder.class, new RenderCrankGrinder());
MinecraftForgeClient.registerItemRenderer(ModItems.stoneGrinder, new IRStoneGrindWheel());
}
}

View File

@@ -24,8 +24,10 @@ public class RenderCrankGrinder extends TileEntitySpecialRenderer {
public static final ResourceLocation MODEL = new ResourceLocation("energy:models/CrankGrinder.obj");
public static final ResourceLocation MODELGRINDER = new ResourceLocation("energy:models/GrinderWheel.obj");
public static final ResourceLocation TEXTURE = new ResourceLocation("energy:models/StoneGrinderWheel.png");
public static final ResourceLocation TEXTURE = new ResourceLocation("energy:models/CrankGrinder.png");
public static final ResourceLocation TEXTUREWHEEL = new ResourceLocation("energy:models/StoneGrindWheel.png");
private IModelCustom model = AdvancedModelLoader.loadModel(MODEL);
private IModelCustom modelGrinder = AdvancedModelLoader.loadModel(MODELGRINDER);
EntityItem entItem = null;
@Override
@@ -34,7 +36,6 @@ public class RenderCrankGrinder extends TileEntitySpecialRenderer {
GL11.glPushMatrix();
GL11.glTranslatef((float) x, (float) y, (float) z);
tile.markForUpdate();
tile.markDirty();
@@ -50,7 +51,26 @@ public class RenderCrankGrinder extends TileEntitySpecialRenderer {
float scale = 1.0F;
GL11.glScalef(scale, scale, scale);
GL11.glTranslatef(0.5F, 0.5F, 0.5F);
if(tile.getStackInSlot(1)!=null){
GL11.glPushMatrix();
if(tile.isPowered==true){
GL11.glTranslatef(1.0F, 0.5F, 0.0F);
GL11.glRotated(tile.rot, 0.0F, 1.0F, 0.0F);
}
if(tile.isPowered==false){
GL11.glRotated(0, 0.0F, 1.0F, 0.0F);
GL11.glTranslatef(1.0F, 0.5F, 0.0F);
}
//GL11.glTranslatef(1.0F, 0.5F, 0.0F);
FMLClientHandler.instance().getClient().renderEngine.bindTexture(TEXTUREWHEEL);
this.modelGrinder.renderAll();
GL11.glPopMatrix();
}
/*if(tile.getStackInSlot(0) != null){
entItem = new EntityItem(tile.getWorldObj(), x, y, z, tile.getStackInSlot(0));
@@ -84,7 +104,7 @@ public class RenderCrankGrinder extends TileEntitySpecialRenderer {
tile.markForUpdate();
tile.markDirty();
}*/
GL11.glTranslatef(1.0F, 0.5F, 0.0F);
FMLClientHandler.instance().getClient().renderEngine.bindTexture(TEXTURE);

View File

@@ -0,0 +1,144 @@
package nmd.primal.energy.render.item;
import org.lwjgl.opengl.GL11;
import net.minecraft.client.Minecraft;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.IItemRenderer;
import net.minecraftforge.client.model.AdvancedModelLoader;
import net.minecraftforge.client.model.IModelCustom;
public class IRStoneGrindWheel implements IItemRenderer {
public static final ResourceLocation MODEL = new ResourceLocation("energy:models/GrinderWheel.obj");
public static final ResourceLocation TEXTURE = new ResourceLocation("energy:models/StoneGrindWheel.png");
public IModelCustom model = AdvancedModelLoader.loadModel(MODEL);
@Override
public boolean handleRenderType(ItemStack item, ItemRenderType type) {
switch(type) {
case EQUIPPED: {
return true;
}
case EQUIPPED_FIRST_PERSON: {
return true;
}
case INVENTORY: {
return false;
}
case ENTITY: {
return true;
}
default: return false;
}
}
@Override
public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item,
ItemRendererHelper helper) {
switch(type) {
case EQUIPPED: {
return false;
}
case EQUIPPED_FIRST_PERSON: {
return false;
}
case INVENTORY: {
return false;
}
case ENTITY: {
return (helper == ItemRendererHelper.ENTITY_BOBBING ||
helper == ItemRendererHelper.ENTITY_ROTATION ||
helper == ItemRendererHelper.BLOCK_3D);
}
default: return false;
}
}
@Override
public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
switch(type) {
case EQUIPPED: {
GL11.glPushMatrix();
GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F);
float scale = 1.0F;
GL11.glScalef(scale, scale, scale);
//ANGLE, X ROTATE, Y ROTATE, Z ROTATE
//GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F);
//GL11.glRotated(90, 1.0, 0.0, 0.0);
GL11.glTranslatef(1.0F, -0.45F, -0.35F);
Minecraft.getMinecraft().renderEngine.bindTexture(TEXTURE);
model.renderAll();
GL11.glPopMatrix();
} break;
case EQUIPPED_FIRST_PERSON: {
GL11.glPushMatrix();
GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F);
//GL11.glScalef(0.2F, 0.2F, 0.2F);
//ANGLE, X ROTATE, Y ROTATE, Z ROTATE
//GL11.glRotated(180, 0.0, 0.0, 1.0);
//GL11.glRotated(180, 0.0F, 1.0F, 0.0F);
//GL11.glRotated(180, 1.0F, 0.0F, 0.0F);
GL11.glTranslatef(1.25F, -0.2F, -0.35F);
Minecraft.getMinecraft().renderEngine.bindTexture(TEXTURE);
model.renderAll();
GL11.glPopMatrix();
} break;
case INVENTORY: {
/*GL11.glPushMatrix();
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glScalef(2.0F, 2.0F, 2.0F);
GL11.glTranslatef(1.65F, 6.2F, 0.0F);
GL11.glRotatef(135, 0.0F, 0.0F, -1.0F);
Minecraft.getMinecraft().renderEngine.bindTexture(TEXTURE);
model.renderAll();
GL11.glPopMatrix();
*/
} break;
case ENTITY: {
GL11.glPushMatrix();
//GL11.glScalef(0.2F, 0.2F, 0.2F);
GL11.glTranslatef(0.0F, 0.0F, 0.0F);
//GL11.glRotatef(180, 0.0F, 0.0F, 1.0F);
Minecraft.getMinecraft().renderEngine.bindTexture(TEXTURE);
model.renderAll();
GL11.glPopMatrix();
} break;
default:
break;
}
}
}

View File

@@ -1,6 +1,7 @@
package nmd.primal.energy.tileents;
import cpw.mods.fml.common.registry.GameRegistry;
import nmd.primal.energy.tileents.grinder.TileEntCrankGrinder;
public class TileRegistry {
@@ -8,5 +9,6 @@ public class TileRegistry {
GameRegistry.registerTileEntity(TileEntCrank.class, "TileEntCrank");
GameRegistry.registerTileEntity(TileEntLatheBase.class, "TileEntLatheBase");
GameRegistry.registerTileEntity(TileEntCrankGrinder.class, "TileEntCrankGrinder");
}
}

View File

@@ -21,9 +21,9 @@ public class TileEntCrankGrinder extends TileEntity implements IInventory {
public float rot = 0;
public TileEntCrankGrinder() {
this.inv = new ItemStack[1];
this.inv = new ItemStack[2];
}
@Override
public int getSizeInventory() {
return this.inv.length;