2015-12-15 21:19:04 +00:00
|
|
|
package net.minecraftforge.debug;
|
|
|
|
|
2016-04-03 07:13:50 +00:00
|
|
|
import net.minecraft.block.Block;
|
2016-01-02 13:38:18 +00:00
|
|
|
import net.minecraft.block.BlockContainer;
|
|
|
|
import net.minecraft.block.material.Material;
|
2015-12-15 21:19:04 +00:00
|
|
|
import net.minecraft.block.state.IBlockState;
|
|
|
|
import net.minecraft.client.renderer.ItemMeshDefinition;
|
2016-03-01 12:58:03 +00:00
|
|
|
import net.minecraft.client.renderer.block.model.ModelBakery;
|
|
|
|
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
|
2015-12-15 21:19:04 +00:00
|
|
|
import net.minecraft.creativetab.CreativeTabs;
|
2016-01-02 13:38:18 +00:00
|
|
|
import net.minecraft.entity.player.EntityPlayer;
|
2016-03-12 21:17:57 +00:00
|
|
|
import net.minecraft.init.Blocks;
|
2015-12-15 21:19:04 +00:00
|
|
|
import net.minecraft.init.Items;
|
|
|
|
import net.minecraft.item.Item;
|
2016-04-03 07:13:50 +00:00
|
|
|
import net.minecraft.item.ItemBlock;
|
2015-12-15 21:19:04 +00:00
|
|
|
import net.minecraft.item.ItemStack;
|
2016-01-02 13:38:18 +00:00
|
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
|
|
import net.minecraft.network.NetworkManager;
|
2016-03-01 12:58:03 +00:00
|
|
|
import net.minecraft.network.play.server.SPacketUpdateTileEntity;
|
2016-01-02 13:38:18 +00:00
|
|
|
import net.minecraft.tileentity.TileEntity;
|
2016-03-20 01:36:21 +00:00
|
|
|
import net.minecraft.util.ActionResult;
|
|
|
|
import net.minecraft.util.EnumActionResult;
|
2016-11-13 22:09:54 +00:00
|
|
|
import net.minecraft.util.NonNullList;
|
2016-03-01 12:58:03 +00:00
|
|
|
import net.minecraft.util.math.BlockPos;
|
|
|
|
import net.minecraft.util.text.TextComponentString;
|
2016-09-27 05:51:01 +00:00
|
|
|
|
2016-01-02 13:38:18 +00:00
|
|
|
import net.minecraft.util.EnumFacing;
|
2016-03-05 01:43:41 +00:00
|
|
|
import net.minecraft.util.EnumHand;
|
2015-12-15 21:19:04 +00:00
|
|
|
import net.minecraft.util.ResourceLocation;
|
2016-01-02 13:38:18 +00:00
|
|
|
import net.minecraft.world.World;
|
2015-12-15 21:19:04 +00:00
|
|
|
import net.minecraftforge.client.model.ModelLoader;
|
2016-09-13 07:02:01 +00:00
|
|
|
import net.minecraftforge.common.ForgeModContainer;
|
2016-09-27 05:51:01 +00:00
|
|
|
import net.minecraftforge.common.capabilities.Capability;
|
2015-12-15 21:19:04 +00:00
|
|
|
import net.minecraftforge.debug.ModelFluidDebug.TestFluid;
|
|
|
|
import net.minecraftforge.debug.ModelFluidDebug.TestGas;
|
|
|
|
import net.minecraftforge.event.entity.player.FillBucketEvent;
|
2016-09-27 05:51:01 +00:00
|
|
|
import net.minecraftforge.fluids.Fluid;
|
|
|
|
import net.minecraftforge.fluids.FluidRegistry;
|
|
|
|
import net.minecraftforge.fluids.FluidStack;
|
|
|
|
import net.minecraftforge.fluids.FluidTank;
|
|
|
|
import net.minecraftforge.fluids.FluidUtil;
|
|
|
|
import net.minecraftforge.fluids.IFluidBlock;
|
|
|
|
import net.minecraftforge.fluids.UniversalBucket;
|
|
|
|
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
|
|
|
|
import net.minecraftforge.fluids.capability.IFluidHandler;
|
2016-10-10 07:44:50 +00:00
|
|
|
import net.minecraftforge.fluids.capability.IFluidHandlerItem;
|
2016-09-27 05:51:01 +00:00
|
|
|
import net.minecraftforge.fluids.capability.IFluidTankProperties;
|
2015-12-15 21:19:04 +00:00
|
|
|
import net.minecraftforge.fml.common.Mod;
|
|
|
|
import net.minecraftforge.fml.common.Mod.EventHandler;
|
|
|
|
import net.minecraftforge.fml.common.SidedProxy;
|
|
|
|
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
|
|
|
|
import net.minecraftforge.fml.common.eventhandler.Event.Result;
|
|
|
|
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
|
|
|
import net.minecraftforge.fml.common.registry.GameRegistry;
|
2016-03-12 21:17:57 +00:00
|
|
|
import net.minecraftforge.items.IItemHandler;
|
|
|
|
import net.minecraftforge.items.ItemStackHandler;
|
|
|
|
import net.minecraftforge.items.wrapper.CombinedInvWrapper;
|
2015-12-15 21:19:04 +00:00
|
|
|
|
2016-11-17 18:44:31 +00:00
|
|
|
import javax.annotation.Nonnull;
|
|
|
|
import javax.annotation.Nullable;
|
|
|
|
|
2016-11-22 20:12:13 +00:00
|
|
|
@Mod(modid = DynBucketTest.MODID, name = "DynBucketTest", version = "0.1", dependencies = "after:" + ModelFluidDebug.MODID, acceptableRemoteVersions = "*")
|
2015-12-15 21:19:04 +00:00
|
|
|
public class DynBucketTest
|
|
|
|
{
|
2016-08-12 22:10:47 +00:00
|
|
|
public static final String MODID = "dynbuckettest";
|
2015-12-15 21:19:04 +00:00
|
|
|
public static final Item dynBucket = new DynBucket();
|
|
|
|
public static final Item dynBottle = new DynBottle();
|
2016-04-03 07:13:50 +00:00
|
|
|
private static final ResourceLocation simpleTankName = new ResourceLocation(MODID, "simpletank");
|
|
|
|
private static final ResourceLocation testItemName = new ResourceLocation(MODID, "testitem");
|
2015-12-15 21:19:04 +00:00
|
|
|
|
2016-10-10 07:44:50 +00:00
|
|
|
private static final boolean ENABLE = true;
|
2016-06-26 09:31:04 +00:00
|
|
|
|
2016-01-02 13:38:18 +00:00
|
|
|
static
|
|
|
|
{
|
2016-09-27 05:51:01 +00:00
|
|
|
if (ENABLE && ModelFluidDebug.ENABLE)
|
2016-06-26 09:31:04 +00:00
|
|
|
{
|
|
|
|
FluidRegistry.enableUniversalBucket();
|
|
|
|
}
|
2016-01-02 13:38:18 +00:00
|
|
|
}
|
|
|
|
|
2016-01-02 06:59:14 +00:00
|
|
|
@SidedProxy
|
2015-12-15 21:19:04 +00:00
|
|
|
public static CommonProxy proxy;
|
|
|
|
|
|
|
|
public static class CommonProxy
|
|
|
|
{
|
|
|
|
void setupModels()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-01-02 13:38:18 +00:00
|
|
|
public static class ServerProxy extends CommonProxy
|
|
|
|
{
|
|
|
|
}
|
2016-01-02 06:59:14 +00:00
|
|
|
|
2015-12-15 21:19:04 +00:00
|
|
|
public static class ClientProxy extends CommonProxy
|
|
|
|
{
|
2016-11-18 03:06:42 +00:00
|
|
|
@SuppressWarnings("unused")
|
2015-12-15 21:19:04 +00:00
|
|
|
@Override
|
|
|
|
void setupModels()
|
|
|
|
{
|
2016-09-27 05:51:01 +00:00
|
|
|
if (!ENABLE || !ModelFluidDebug.ENABLE)
|
2016-06-26 09:31:04 +00:00
|
|
|
return;
|
|
|
|
|
2015-12-29 12:20:36 +00:00
|
|
|
ModelLoader.setBucketModelDefinition(dynBucket);
|
2015-12-15 21:19:04 +00:00
|
|
|
|
2015-12-24 03:06:38 +00:00
|
|
|
final ModelResourceLocation bottle = new ModelResourceLocation(new ResourceLocation("forge", "dynbottle"), "inventory");
|
2015-12-15 21:19:04 +00:00
|
|
|
ModelLoader.setCustomMeshDefinition(dynBottle, new ItemMeshDefinition()
|
|
|
|
{
|
|
|
|
@Override
|
|
|
|
public ModelResourceLocation getModelLocation(ItemStack stack)
|
|
|
|
{
|
2015-12-24 03:06:38 +00:00
|
|
|
return bottle;
|
2015-12-15 21:19:04 +00:00
|
|
|
}
|
|
|
|
});
|
2015-12-24 03:06:38 +00:00
|
|
|
ModelBakery.registerItemVariants(dynBottle, bottle);
|
2016-05-18 12:11:56 +00:00
|
|
|
ModelLoader.setCustomModelResourceLocation(Item.REGISTRY.getObject(simpleTankName), 0, new ModelResourceLocation(simpleTankName, "normal"));
|
|
|
|
ModelLoader.setCustomModelResourceLocation(Item.REGISTRY.getObject(testItemName), 0, new ModelResourceLocation(new ResourceLocation("minecraft", "stick"), "inventory"));
|
2015-12-15 21:19:04 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-03-05 01:43:41 +00:00
|
|
|
@SuppressWarnings("unused")
|
2015-12-15 21:19:04 +00:00
|
|
|
@EventHandler
|
|
|
|
public void preInit(FMLPreInitializationEvent event)
|
|
|
|
{
|
2016-09-27 05:51:01 +00:00
|
|
|
if (!ENABLE || !ModelFluidDebug.ENABLE)
|
2016-06-26 09:31:04 +00:00
|
|
|
return;
|
|
|
|
|
2016-04-03 07:13:50 +00:00
|
|
|
GameRegistry.register(new TestItem(), testItemName);
|
|
|
|
Block tank = new BlockSimpleTank();
|
|
|
|
GameRegistry.register(tank, simpleTankName);
|
|
|
|
GameRegistry.register(new ItemBlock(tank), simpleTankName);
|
2016-01-02 13:38:18 +00:00
|
|
|
GameRegistry.registerTileEntity(TileSimpleTank.class, "simpletank");
|
|
|
|
|
|
|
|
FluidRegistry.addBucketForFluid(FluidRegistry.getFluid(TestFluid.name));
|
|
|
|
FluidRegistry.addBucketForFluid(FluidRegistry.getFluid(TestGas.name));
|
|
|
|
|
|
|
|
//GameRegistry.registerItem(dynBucket, "dynbucket");
|
2016-04-03 07:13:50 +00:00
|
|
|
GameRegistry.register(dynBottle);
|
2016-09-27 05:51:01 +00:00
|
|
|
ItemStack filledBucket = UniversalBucket.getFilledBucket(ForgeModContainer.getInstance().universalBucket, TestFluid.instance);
|
|
|
|
GameRegistry.addShapelessRecipe(new ItemStack(Items.DIAMOND), filledBucket);
|
2015-12-15 21:19:04 +00:00
|
|
|
|
|
|
|
proxy.setupModels();
|
2016-01-02 13:38:18 +00:00
|
|
|
//MinecraftForge.EVENT_BUS.register(this);
|
2015-12-15 21:19:04 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@SubscribeEvent
|
|
|
|
public void onBucketFill(FillBucketEvent event)
|
|
|
|
{
|
2016-03-05 01:43:41 +00:00
|
|
|
IBlockState state = event.getWorld().getBlockState(event.getTarget().getBlockPos());
|
2015-12-15 21:19:04 +00:00
|
|
|
if (state.getBlock() instanceof IFluidBlock)
|
|
|
|
{
|
|
|
|
Fluid fluid = ((IFluidBlock) state.getBlock()).getFluid();
|
2016-09-27 05:51:01 +00:00
|
|
|
FluidStack fs = new FluidStack(fluid, Fluid.BUCKET_VOLUME);
|
2015-12-15 21:19:04 +00:00
|
|
|
|
2016-09-27 05:51:01 +00:00
|
|
|
ItemStack bucket = event.getEmptyBucket();
|
2016-10-10 07:44:50 +00:00
|
|
|
IFluidHandlerItem fluidHandler = FluidUtil.getFluidHandler(bucket);
|
2016-09-27 05:51:01 +00:00
|
|
|
if (fluidHandler != null)
|
2015-12-15 21:19:04 +00:00
|
|
|
{
|
2016-09-27 05:51:01 +00:00
|
|
|
int fillAmount = fluidHandler.fill(fs, true);
|
|
|
|
if (fillAmount > 0)
|
|
|
|
{
|
2016-10-10 07:44:50 +00:00
|
|
|
ItemStack filledBucket = fluidHandler.getContainer();
|
|
|
|
event.setFilledBucket(filledBucket);
|
2016-09-27 05:51:01 +00:00
|
|
|
event.setResult(Result.ALLOW);
|
|
|
|
}
|
2015-12-15 21:19:04 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-03-12 21:17:57 +00:00
|
|
|
public static class TestItem extends Item {
|
|
|
|
@Override
|
2016-11-13 22:09:54 +00:00
|
|
|
public ActionResult<ItemStack> onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand hand)
|
2016-03-12 21:17:57 +00:00
|
|
|
{
|
2016-11-13 22:09:54 +00:00
|
|
|
ItemStack itemStackIn = playerIn.getHeldItem(hand);
|
2016-03-12 21:17:57 +00:00
|
|
|
if(worldIn.isRemote)
|
2016-03-20 01:36:21 +00:00
|
|
|
return new ActionResult<ItemStack>(EnumActionResult.PASS, itemStackIn);
|
2016-03-12 21:17:57 +00:00
|
|
|
|
|
|
|
ItemStackHandler handler = new ItemStackHandler(5);
|
|
|
|
ItemStackHandler handler2 = new ItemStackHandler(5);
|
|
|
|
IItemHandler joined = new CombinedInvWrapper(handler, handler2);
|
|
|
|
|
2016-05-18 12:11:56 +00:00
|
|
|
handler.setStackInSlot(0, new ItemStack(Blocks.STONE));
|
|
|
|
handler.setStackInSlot(1, new ItemStack(Blocks.GRASS));
|
|
|
|
handler.setStackInSlot(2, new ItemStack(Blocks.DIRT));
|
|
|
|
handler.setStackInSlot(3, new ItemStack(Blocks.GLASS));
|
|
|
|
handler.setStackInSlot(4, new ItemStack(Blocks.SAND));
|
2016-03-12 21:17:57 +00:00
|
|
|
|
2016-05-18 12:11:56 +00:00
|
|
|
handler2.setStackInSlot(0, new ItemStack(Blocks.SLIME_BLOCK));
|
|
|
|
handler2.setStackInSlot(1, new ItemStack(Blocks.TNT));
|
|
|
|
handler2.setStackInSlot(2, new ItemStack(Blocks.PLANKS));
|
|
|
|
handler2.setStackInSlot(3, new ItemStack(Blocks.LOG));
|
|
|
|
handler2.setStackInSlot(4, new ItemStack(Blocks.DIAMOND_BLOCK));
|
2016-03-12 21:17:57 +00:00
|
|
|
|
|
|
|
for (int i = 0; i < handler.getSlots(); i++) {
|
|
|
|
System.out.println("Expected 1: " + handler.getStackInSlot(i));
|
|
|
|
}
|
|
|
|
|
|
|
|
for (int i = 0; i < handler2.getSlots(); i++) {
|
|
|
|
System.out.println("Expected 2: " + handler2.getStackInSlot(i));
|
|
|
|
}
|
|
|
|
|
|
|
|
for (int i = 0; i < joined.getSlots(); i++) {
|
|
|
|
System.out.println("Joined: " + joined.getStackInSlot(i));
|
|
|
|
}
|
|
|
|
|
2016-03-20 01:36:21 +00:00
|
|
|
return new ActionResult<ItemStack>(EnumActionResult.SUCCESS, itemStackIn);
|
2016-03-12 21:17:57 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-12-15 21:19:04 +00:00
|
|
|
public static class DynBucket extends Item
|
|
|
|
{
|
|
|
|
public DynBucket()
|
|
|
|
{
|
|
|
|
setUnlocalizedName("dynbucket");
|
|
|
|
setMaxStackSize(1);
|
|
|
|
setHasSubtypes(true);
|
2016-05-18 12:11:56 +00:00
|
|
|
setCreativeTab(CreativeTabs.MISC);
|
2015-12-15 21:19:04 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2016-11-13 22:09:54 +00:00
|
|
|
public void getSubItems(Item itemIn, CreativeTabs tab, NonNullList<ItemStack> subItems)
|
2015-12-15 21:19:04 +00:00
|
|
|
{
|
|
|
|
for (int i = 0; i < 4; i++)
|
|
|
|
{
|
|
|
|
ItemStack bucket = new ItemStack(this, 1, i);
|
2016-09-27 05:51:01 +00:00
|
|
|
if (FluidUtil.getFluidContained(bucket) != null)
|
2015-12-15 21:19:04 +00:00
|
|
|
subItems.add(bucket);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-01-02 13:38:18 +00:00
|
|
|
public static class DynBottle extends UniversalBucket
|
2015-12-15 21:19:04 +00:00
|
|
|
{
|
|
|
|
public DynBottle()
|
|
|
|
{
|
2016-05-18 12:11:56 +00:00
|
|
|
super(250, new ItemStack(Items.GLASS_BOTTLE), true);
|
2015-12-15 21:19:04 +00:00
|
|
|
setUnlocalizedName("dynbottle");
|
2016-04-03 07:13:50 +00:00
|
|
|
setRegistryName(new ResourceLocation(MODID, "dynbottle"));
|
2016-01-02 13:38:18 +00:00
|
|
|
setMaxStackSize(16);
|
2015-12-15 21:19:04 +00:00
|
|
|
setHasSubtypes(true);
|
2016-05-18 12:11:56 +00:00
|
|
|
setCreativeTab(CreativeTabs.MISC);
|
2015-12-15 21:19:04 +00:00
|
|
|
}
|
2016-01-02 13:38:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// simple tank copied from tinkers construct
|
|
|
|
public static class BlockSimpleTank extends BlockContainer
|
|
|
|
{
|
|
|
|
|
|
|
|
protected BlockSimpleTank()
|
|
|
|
{
|
2016-05-18 12:11:56 +00:00
|
|
|
super(Material.ROCK);
|
|
|
|
setCreativeTab(CreativeTabs.MISC);
|
2016-01-02 13:38:18 +00:00
|
|
|
}
|
2015-12-15 21:19:04 +00:00
|
|
|
|
|
|
|
@Override
|
2016-01-02 13:38:18 +00:00
|
|
|
public TileEntity createNewTileEntity(World worldIn, int meta)
|
2015-12-15 21:19:04 +00:00
|
|
|
{
|
2016-01-02 13:38:18 +00:00
|
|
|
return new TileSimpleTank();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2016-11-13 22:09:54 +00:00
|
|
|
public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ)
|
2016-01-02 13:38:18 +00:00
|
|
|
{
|
2016-11-13 22:09:54 +00:00
|
|
|
ItemStack heldItem = playerIn.getHeldItem(hand);
|
2016-09-27 05:51:01 +00:00
|
|
|
IFluidHandler tank = FluidUtil.getFluidHandler(worldIn, pos, side.getOpposite());
|
2016-01-02 13:38:18 +00:00
|
|
|
|
2016-11-13 22:09:54 +00:00
|
|
|
if (null == null)
|
2016-01-02 13:38:18 +00:00
|
|
|
{
|
2016-09-27 05:51:01 +00:00
|
|
|
sendText(playerIn, tank);
|
2016-01-02 13:38:18 +00:00
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
// do the thing with the tank and the buckets
|
2016-10-10 07:44:50 +00:00
|
|
|
if (FluidUtil.interactWithFluidHandler(heldItem, tank, playerIn).isSuccess())
|
2016-01-02 13:38:18 +00:00
|
|
|
{
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2016-09-27 05:51:01 +00:00
|
|
|
sendText(playerIn, tank);
|
2016-01-02 13:38:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// prevent interaction of the item if it's a fluidcontainer. Prevents placing liquids when interacting with the tank
|
2016-09-27 05:51:01 +00:00
|
|
|
return FluidUtil.getFluidHandler(heldItem) != null;
|
2016-01-02 13:38:18 +00:00
|
|
|
}
|
|
|
|
|
2016-09-27 05:51:01 +00:00
|
|
|
private void sendText(EntityPlayer player, IFluidHandler tank)
|
2016-01-02 13:38:18 +00:00
|
|
|
{
|
|
|
|
if (player.worldObj.isRemote)
|
|
|
|
{
|
|
|
|
String text;
|
2016-09-27 05:51:01 +00:00
|
|
|
IFluidTankProperties[] tankProperties = tank.getTankProperties();
|
|
|
|
if (tankProperties.length > 0 && tankProperties[0] != null && tankProperties[0].getContents() != null)
|
2016-01-02 13:38:18 +00:00
|
|
|
{
|
2016-09-27 05:51:01 +00:00
|
|
|
text = tankProperties[0].getContents().amount + "x " + tankProperties[0].getContents().getLocalizedName();
|
2016-01-02 13:38:18 +00:00
|
|
|
} else
|
|
|
|
{
|
|
|
|
text = "empty";
|
|
|
|
}
|
2016-03-01 12:58:03 +00:00
|
|
|
player.addChatMessage(new TextComponentString(text));
|
2016-01-02 13:38:18 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-09-27 05:51:01 +00:00
|
|
|
public static class TileSimpleTank extends TileEntity
|
2016-01-02 13:38:18 +00:00
|
|
|
{
|
|
|
|
FluidTank tank = new FluidTank(4000);
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void readFromNBT(NBTTagCompound tags)
|
|
|
|
{
|
|
|
|
super.readFromNBT(tags);
|
|
|
|
tank.readFromNBT(tags);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2016-05-18 12:11:56 +00:00
|
|
|
public NBTTagCompound writeToNBT(NBTTagCompound tags)
|
2016-01-02 13:38:18 +00:00
|
|
|
{
|
2016-05-18 12:11:56 +00:00
|
|
|
tags = super.writeToNBT(tags);
|
2016-01-02 13:38:18 +00:00
|
|
|
tank.writeToNBT(tags);
|
2016-05-18 10:29:10 +00:00
|
|
|
return tags;
|
2016-01-02 13:38:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2016-05-18 12:11:56 +00:00
|
|
|
public SPacketUpdateTileEntity getUpdatePacket() {
|
2016-01-02 13:38:18 +00:00
|
|
|
NBTTagCompound tag = new NBTTagCompound();
|
2016-05-18 12:11:56 +00:00
|
|
|
tag = writeToNBT(tag);
|
2016-03-01 12:58:03 +00:00
|
|
|
return new SPacketUpdateTileEntity(this.getPos(), this.getBlockMetadata(), tag);
|
2016-01-02 13:38:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2016-03-01 12:58:03 +00:00
|
|
|
public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) {
|
2016-01-02 13:38:18 +00:00
|
|
|
super.onDataPacket(net, pkt);
|
|
|
|
readFromNBT(pkt.getNbtCompound());
|
2015-12-15 21:19:04 +00:00
|
|
|
}
|
2016-09-27 05:51:01 +00:00
|
|
|
|
|
|
|
@Override
|
2016-11-17 18:44:31 +00:00
|
|
|
public boolean hasCapability(@Nonnull Capability<?> capability, @Nullable EnumFacing facing)
|
2016-09-27 05:51:01 +00:00
|
|
|
{
|
|
|
|
return capability == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY || super.hasCapability(capability, facing);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2016-11-17 18:44:31 +00:00
|
|
|
@Nullable
|
|
|
|
public <T> T getCapability(@Nonnull Capability<T> capability, @Nullable EnumFacing facing)
|
2016-09-27 05:51:01 +00:00
|
|
|
{
|
|
|
|
if (capability == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY)
|
|
|
|
{
|
|
|
|
return CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY.cast(tank);
|
|
|
|
}
|
|
|
|
return super.getCapability(capability, facing);
|
|
|
|
}
|
2015-12-15 21:19:04 +00:00
|
|
|
}
|
|
|
|
}
|