Created
June 17, 2016 14:22
-
-
Save dazsim/ad99e4f18b29eac7fca978593977bc3e to your computer and use it in GitHub Desktop.
Broken?
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.workshopcraft.simplebarrels.handlers; | |
import com.workshopcraft.simplebarrels.tiles.TileEntityBarrel; | |
import net.minecraft.inventory.InventoryHelper; | |
import net.minecraft.item.Item; | |
import net.minecraft.item.ItemStack; | |
import net.minecraft.nbt.NBTTagCompound; | |
import net.minecraft.tileentity.TileEntity; | |
import net.minecraftforge.event.entity.player.PlayerInteractEvent; | |
import net.minecraftforge.event.entity.player.PlayerInteractEvent.LeftClickBlock; | |
import net.minecraftforge.event.entity.player.PlayerInteractEvent.RightClickBlock; | |
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; | |
public class BarrelHandler { | |
@SubscribeEvent | |
public void RightClickBlock(PlayerInteractEvent event) | |
{ | |
if (!event.getWorld().isRemote) | |
{ | |
if (event instanceof RightClickBlock) | |
{ | |
TileEntity te = (event.getWorld().getTileEntity(event.getPos())); | |
if (te instanceof TileEntityBarrel) | |
{ | |
TileEntityBarrel te2 = (TileEntityBarrel) te; | |
if (te2.barrelContents[0] == null) | |
{ | |
if (event.getItemStack() != null) | |
{ | |
te2.barrelContents[0] = new ItemStack(event.getItemStack().getItem(),event.getItemStack().stackSize); | |
//System.out.print("Added "+event.getItemStack().getDisplayName()+" to barrel"); | |
te2.count = event.getItemStack().stackSize; | |
event.getEntityPlayer().inventory.mainInventory[event.getEntityPlayer().inventory.currentItem].stackSize=0; | |
event.getEntityPlayer().inventory.inventoryChanged=true; | |
//BarrelSyncClient m = new BarrelSyncClient(te2.barrelContents[0].getItem().getUnlocalizedName(),te2.barrelContents[0].stackSize,te2.getPos().getX(),te2.getPos().getY(),te2.getPos().getZ()); | |
//SimpleBarrels.BarrelNet.sendTo(m, (EntityPlayerMP) event.getEntityPlayer()); | |
this.updateBarrel(te2); | |
event.setCanceled(true); | |
} | |
} else if (event.getItemStack()!=null) | |
{ | |
if (te2.barrelContents[0].getUnlocalizedName().equals(event.getItemStack().getUnlocalizedName())) | |
{ | |
if (te2.barrelContents[0].getMetadata() == (event.getItemStack().getMetadata())) | |
{ | |
//int r = (event.getItemStack().stackSize+te2.barrelContents[0].stackSize)-255; | |
int r = event.getItemStack().stackSize+te2.count-te2.size; | |
if (r<0) | |
{ | |
//te2.barrelContents[0].stackSize = (event.getItemStack().stackSize+te2.barrelContents[0].stackSize); | |
te2.count = (event.getItemStack().stackSize+te2.count); | |
event.getEntityPlayer().inventory.mainInventory[event.getEntityPlayer().inventory.currentItem].stackSize=0; | |
event.getEntityPlayer().inventory.inventoryChanged=true; | |
this.updateBarrel(te2); | |
//SimpleBarrels.BarrelNet.sendTo(new BarrelSyncClient(te2.barrelContents[0].getItem().getUnlocalizedName(),te2.barrelContents[0].stackSize,te2.getPos().getX(),te2.getPos().getY(),te2.getPos().getZ()), (EntityPlayerMP) event.getEntityPlayer()); | |
} else if (r<event.getItemStack().stackSize) | |
{ | |
//te2.barrelContents[0].stackSize=255; | |
te2.count = te2.maxsize; | |
//event.getItemStack().stackSize=r; | |
event.getEntityPlayer().inventory.mainInventory[event.getEntityPlayer().inventory.currentItem].stackSize=r; | |
event.getEntityPlayer().inventory.inventoryChanged=true; | |
//SimpleBarrels.BarrelNet.sendTo(new BarrelSyncClient(te2.barrelContents[0].getItem().getUnlocalizedName(),255,te2.getPos().getX(),te2.getPos().getY(),te2.getPos().getZ()), (EntityPlayerMP) event.getEntityPlayer()); | |
this.updateBarrel(te2); | |
} else | |
{ | |
//r = unchanged. do nothing. | |
} | |
} | |
}} | |
} | |
} | |
} else | |
{ | |
//handle right click of barrel. cancel event. | |
} | |
} | |
public void updateBarrel(TileEntityBarrel t) | |
{ | |
NBTTagCompound compound = new NBTTagCompound(); | |
t.writeToNBT(compound ); | |
t.markDirty(); | |
t.getWorld().notifyBlockUpdate(t.getPos(), t.getWorld().getBlockState(t.getPos()), t.getWorld().getBlockState(t.getPos()), 3); | |
} | |
@SubscribeEvent | |
public void LeftClickBlock(PlayerInteractEvent event) | |
{ | |
//this is for left click. | |
if (!event.getWorld().isRemote) | |
{ | |
TileEntity te = (event.getWorld().getTileEntity(event.getPos())); | |
if (event instanceof LeftClickBlock) | |
{ | |
if (te instanceof TileEntityBarrel) | |
{ | |
TileEntityBarrel te2 = (TileEntityBarrel) te; | |
if (te2.barrelContents[0] == null) | |
{ | |
//do nothing | |
return; | |
} else | |
//if (te2.barrelContents[0].stackSize<64) | |
if (te2.count<64) | |
{ | |
//EntityItem e = new EntityItem(event.getWorld(),event.getPos().getX(),event.getPos().getY(),event.getPos().getZ(),te2.barrelContents[0]); | |
//event.getWorld().spawnEntityInWorld(e); | |
ItemStack istack = new ItemStack(te2.barrelContents[0].getItem(),te2.barrelContents[0].stackSize,te2.barrelContents[0].getItemDamage()); | |
//istack.setItemDamage(te2.barrelContents[0].getItemDamage()); | |
InventoryHelper.spawnItemStack(event.getWorld(), event.getPos().getX(), event.getPos().getY()+1.0, event.getPos().getZ(),istack); | |
//event.getEntityPlayer().inventory.inventoryChanged=true; | |
te2.barrelContents[0] = null; | |
te2.count = 0; | |
//SimpleBarrels.BarrelNet.sendTo(new BarrelSyncClient(Items.APPLE.getUnlocalizedName(),0,te2.getPos().getX(),te2.getPos().getY(),te2.getPos().getZ()), (EntityPlayerMP) event.getEntityPlayer()); | |
updateBarrel(te2); | |
event.setCanceled(true); | |
return; | |
//return all | |
} else | |
{ | |
InventoryHelper.spawnItemStack(event.getWorld(), event.getPos().getX(), event.getPos().getY()+1.0, event.getPos().getZ(),new ItemStack(te2.barrelContents[0].getItem(),64)); | |
//te2.barrelContents[0].stackSize-=64; | |
te2.count -= 64; | |
//if (te2.barrelContents[0].stackSize==0) | |
if (te2.count == 0) | |
{ | |
te2.barrelContents[0]= null; | |
//BarrelSyncClient m = new BarrelSyncClient(Items.APPLE.getUnlocalizedName(),0,event.getPos().getX(),event.getPos().getY(),event.getPos().getZ()); | |
//SimpleBarrels.BarrelNet.sendTo(m, (EntityPlayerMP) event.getEntityPlayer()); | |
} | |
updateBarrel(te2); | |
event.setCanceled(true); | |
//return stack | |
} | |
} | |
} | |
}} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment