Skip to content

Instantly share code, notes, and snippets.

@dazsim
Created June 17, 2016 14:22
Show Gist options
  • Save dazsim/ad99e4f18b29eac7fca978593977bc3e to your computer and use it in GitHub Desktop.
Save dazsim/ad99e4f18b29eac7fca978593977bc3e to your computer and use it in GitHub Desktop.
Broken?
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