nosingleplayer 1.1.1: fond custom via blit + log debug widgets
This commit is contained in:
+251
@@ -0,0 +1,251 @@
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user