Files
mc/mods/pala/legacy-src-backup/net/paladrill/paladrillmod/block/BlockPaladiumCrusher.java
T

252 lines
7.9 KiB
Java

package net.paladrill.paladrillmod.block;
import net.paladrill.paladrillmod.procedure.ProcedurePaladiumCrusherUpdateTick;
import net.paladrill.paladrillmod.gui.GuiPaladiumCrusherGUI;
import net.paladrill.paladrillmod.creativetab.TabPalaDrillMod;
import net.paladrill.paladrillmod.PaladrillmodMod;
import net.paladrill.paladrillmod.ElementsPaladrillmodMod;
import net.minecraftforge.fml.relauncher.SideOnly;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.client.event.ModelRegistryEvent;
import net.minecraft.world.World;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.NonNullList;
import net.minecraft.util.EnumHand;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumBlockRenderType;
import net.minecraft.tileentity.TileEntityLockableLoot;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.network.play.server.SPacketUpdateTileEntity;
import net.minecraft.network.NetworkManager;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.Item;
import net.minecraft.inventory.ItemStackHelper;
import net.minecraft.inventory.InventoryHelper;
import net.minecraft.inventory.Container;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.block.state.IBlockState;
import net.minecraft.block.material.Material;
import net.minecraft.block.SoundType;
import net.minecraft.block.ITileEntityProvider;
import net.minecraft.block.Block;
import java.util.Random;
import java.util.Map;
import java.util.HashMap;
@ElementsPaladrillmodMod.ModElement.Tag
public class BlockPaladiumCrusher extends ElementsPaladrillmodMod.ModElement {
@GameRegistry.ObjectHolder("paladrillmod:paladiumcrusher")
public static final Block block = null;
public BlockPaladiumCrusher(ElementsPaladrillmodMod instance) {
super(instance, 68);
}
@Override
public void initElements() {
elements.blocks.add(() -> new BlockCustom().setRegistryName("paladiumcrusher"));
elements.items.add(() -> new ItemBlock(block).setRegistryName(block.getRegistryName()));
}
@Override
public void init(FMLInitializationEvent event) {
GameRegistry.registerTileEntity(TileEntityCustom.class, "paladrillmod:tileentitypaladiumcrusher");
}
@SideOnly(Side.CLIENT)
@Override
public void registerModels(ModelRegistryEvent event) {
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(block), 0,
new ModelResourceLocation("paladrillmod:paladiumcrusher", "inventory"));
}
public static class BlockCustom extends Block implements ITileEntityProvider {
public BlockCustom() {
super(Material.IRON);
setUnlocalizedName("paladiumcrusher");
setSoundType(SoundType.METAL);
setHardness(1F);
setResistance(10F);
setLightLevel(0F);
setLightOpacity(255);
setCreativeTab(TabPalaDrillMod.tab);
}
@Override
public TileEntity createNewTileEntity(World worldIn, int meta) {
return new TileEntityCustom();
}
@Override
public boolean eventReceived(IBlockState state, World worldIn, BlockPos pos, int eventID, int eventParam) {
super.eventReceived(state, worldIn, pos, eventID, eventParam);
TileEntity tileentity = worldIn.getTileEntity(pos);
return tileentity == null ? false : tileentity.receiveClientEvent(eventID, eventParam);
}
@Override
public EnumBlockRenderType getRenderType(IBlockState state) {
return EnumBlockRenderType.MODEL;
}
@Override
public void breakBlock(World world, BlockPos pos, IBlockState state) {
TileEntity tileentity = world.getTileEntity(pos);
if (tileentity instanceof TileEntityCustom)
InventoryHelper.dropInventoryItems(world, pos, (TileEntityCustom) tileentity);
world.removeTileEntity(pos);
super.breakBlock(world, pos, state);
}
@Override
public boolean hasComparatorInputOverride(IBlockState state) {
return true;
}
@Override
public int getComparatorInputOverride(IBlockState blockState, World worldIn, BlockPos pos) {
TileEntity tileentity = worldIn.getTileEntity(pos);
if (tileentity instanceof TileEntityCustom)
return Container.calcRedstoneFromInventory((TileEntityCustom) tileentity);
else
return 0;
}
@Override
public void onBlockAdded(World world, BlockPos pos, IBlockState state) {
super.onBlockAdded(world, pos, state);
int x = pos.getX();
int y = pos.getY();
int z = pos.getZ();
world.scheduleUpdate(new BlockPos(x, y, z), this, this.tickRate(world));
}
@Override
public void updateTick(World world, BlockPos pos, IBlockState state, Random random) {
super.updateTick(world, pos, state, random);
int x = pos.getX();
int y = pos.getY();
int z = pos.getZ();
{
Map<String, Object> $_dependencies = new HashMap<>();
$_dependencies.put("x", x);
$_dependencies.put("y", y);
$_dependencies.put("z", z);
$_dependencies.put("world", world);
ProcedurePaladiumCrusherUpdateTick.executeProcedure($_dependencies);
}
world.scheduleUpdate(new BlockPos(x, y, z), this, this.tickRate(world));
}
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer entity, EnumHand hand, EnumFacing direction,
float hitX, float hitY, float hitZ) {
super.onBlockActivated(world, pos, state, entity, hand, direction, hitX, hitY, hitZ);
int x = pos.getX();
int y = pos.getY();
int z = pos.getZ();
if (entity instanceof EntityPlayer) {
((EntityPlayer) entity).openGui(PaladrillmodMod.instance, GuiPaladiumCrusherGUI.GUIID, world, x, y, z);
}
return true;
}
}
public static class TileEntityCustom extends TileEntityLockableLoot {
private NonNullList<ItemStack> stacks = NonNullList.<ItemStack>withSize(3, ItemStack.EMPTY);
@Override
public int getSizeInventory() {
return 3;
}
@Override
public boolean isEmpty() {
for (ItemStack itemstack : this.stacks)
if (!itemstack.isEmpty())
return false;
return true;
}
@Override
public boolean isItemValidForSlot(int index, ItemStack stack) {
return true;
}
@Override
public ItemStack getStackInSlot(int slot) {
return stacks.get(slot);
}
@Override
public String getName() {
return "container.paladiumcrusher";
}
@Override
public void readFromNBT(NBTTagCompound compound) {
super.readFromNBT(compound);
this.stacks = NonNullList.<ItemStack>withSize(this.getSizeInventory(), ItemStack.EMPTY);
if (!this.checkLootAndRead(compound))
ItemStackHelper.loadAllItems(compound, this.stacks);
}
@Override
public NBTTagCompound writeToNBT(NBTTagCompound compound) {
super.writeToNBT(compound);
if (!this.checkLootAndWrite(compound))
ItemStackHelper.saveAllItems(compound, this.stacks);
return compound;
}
@Override
public SPacketUpdateTileEntity getUpdatePacket() {
return new SPacketUpdateTileEntity(this.pos, 0, this.getUpdateTag());
}
@Override
public NBTTagCompound getUpdateTag() {
return this.writeToNBT(new NBTTagCompound());
}
@Override
public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) {
this.readFromNBT(pkt.getNbtCompound());
}
@Override
public void handleUpdateTag(NBTTagCompound tag) {
this.readFromNBT(tag);
}
@Override
public int getInventoryStackLimit() {
return 64;
}
@Override
public String getGuiID() {
return "paladrillmod:paladiumcrusher";
}
@Override
public Container createContainer(InventoryPlayer playerInventory, EntityPlayer playerIn) {
return new GuiPaladiumCrusherGUI.GuiContainerMod(this.getWorld(), this.getPos().getX(), this.getPos().getY(), this.getPos().getZ(),
playerIn);
}
@Override
protected NonNullList<ItemStack> getItems() {
return this.stacks;
}
}
}