2015-12-15 21:19:04 +00:00
|
|
|
package net.minecraftforge.debug;
|
|
|
|
|
2016-01-02 06:59:14 +00:00
|
|
|
import java.util.List;
|
|
|
|
|
2015-12-15 21:19:04 +00:00
|
|
|
import net.minecraft.block.state.IBlockState;
|
|
|
|
import net.minecraft.client.renderer.ItemMeshDefinition;
|
|
|
|
import net.minecraft.client.resources.model.ModelBakery;
|
|
|
|
import net.minecraft.client.resources.model.ModelResourceLocation;
|
|
|
|
import net.minecraft.creativetab.CreativeTabs;
|
|
|
|
import net.minecraft.init.Items;
|
|
|
|
import net.minecraft.item.Item;
|
|
|
|
import net.minecraft.item.ItemStack;
|
|
|
|
import net.minecraft.util.ResourceLocation;
|
|
|
|
import net.minecraftforge.client.model.ModelLoader;
|
|
|
|
import net.minecraftforge.common.MinecraftForge;
|
|
|
|
import net.minecraftforge.debug.ModelFluidDebug.TestFluid;
|
|
|
|
import net.minecraftforge.debug.ModelFluidDebug.TestGas;
|
|
|
|
import net.minecraftforge.event.entity.player.FillBucketEvent;
|
2016-01-02 06:59:14 +00:00
|
|
|
import net.minecraftforge.fluids.Fluid;
|
|
|
|
import net.minecraftforge.fluids.FluidContainerRegistry;
|
|
|
|
import net.minecraftforge.fluids.FluidRegistry;
|
|
|
|
import net.minecraftforge.fluids.FluidStack;
|
|
|
|
import net.minecraftforge.fluids.IFluidBlock;
|
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;
|
|
|
|
|
|
|
|
@Mod(modid = "DynBucketTest", version = "0.1", dependencies = "after:" + ModelFluidDebug.MODID)
|
|
|
|
public class DynBucketTest
|
|
|
|
{
|
|
|
|
public static final Item dynBucket = new DynBucket();
|
|
|
|
public static final Item dynBottle = new DynBottle();
|
|
|
|
|
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 06:59:14 +00:00
|
|
|
public static class ServerProxy extends CommonProxy {}
|
|
|
|
|
2015-12-15 21:19:04 +00:00
|
|
|
public static class ClientProxy extends CommonProxy
|
|
|
|
{
|
|
|
|
@Override
|
|
|
|
void setupModels()
|
|
|
|
{
|
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);
|
2015-12-15 21:19:04 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler
|
|
|
|
public void preInit(FMLPreInitializationEvent event)
|
|
|
|
{
|
|
|
|
GameRegistry.registerItem(dynBucket, "dynbucket");
|
|
|
|
GameRegistry.registerItem(dynBottle, "dynbottle");
|
|
|
|
|
|
|
|
// register fluid containers
|
|
|
|
int i = 0;
|
|
|
|
//registerFluidContainer(FluidRegistry.WATER, i++);
|
|
|
|
//registerFluidContainer(FluidRegistry.LAVA, i++);
|
|
|
|
registerFluidContainer(FluidRegistry.getFluid(TestFluid.name), i++);
|
|
|
|
registerFluidContainer(FluidRegistry.getFluid(TestGas.name), i++);
|
|
|
|
|
|
|
|
i = 0;
|
|
|
|
registerFluidContainer2(FluidRegistry.WATER, i++);
|
|
|
|
registerFluidContainer2(FluidRegistry.LAVA, i++);
|
|
|
|
registerFluidContainer2(FluidRegistry.getFluid(TestFluid.name), i++);
|
|
|
|
registerFluidContainer2(FluidRegistry.getFluid(TestGas.name), i++);
|
|
|
|
|
|
|
|
// Set TestFluidBlocks blockstate to use milk instead of testfluid for the texture to be loaded
|
|
|
|
FluidContainerRegistry.registerFluidContainer(FluidRegistry.getFluid("milk"), new ItemStack(Items.milk_bucket), FluidContainerRegistry.EMPTY_BUCKET);
|
|
|
|
|
|
|
|
proxy.setupModels();
|
|
|
|
MinecraftForge.EVENT_BUS.register(this);
|
|
|
|
}
|
|
|
|
|
|
|
|
private void registerFluidContainer(Fluid fluid, int meta)
|
|
|
|
{
|
|
|
|
if (fluid == null)
|
|
|
|
return;
|
|
|
|
|
|
|
|
FluidStack fs = new FluidStack(fluid, FluidContainerRegistry.BUCKET_VOLUME);
|
|
|
|
ItemStack stack = new ItemStack(dynBucket, 1, meta);
|
|
|
|
FluidContainerRegistry.registerFluidContainer(fs, stack, new ItemStack(Items.bucket));
|
|
|
|
}
|
|
|
|
|
|
|
|
private void registerFluidContainer2(Fluid fluid, int meta)
|
|
|
|
{
|
|
|
|
if (fluid == null)
|
|
|
|
return;
|
|
|
|
|
|
|
|
FluidStack fs = new FluidStack(fluid, 250);
|
|
|
|
ItemStack stack = new ItemStack(dynBottle, 1, meta);
|
|
|
|
FluidContainerRegistry.registerFluidContainer(fs, stack, new ItemStack(Items.glass_bottle));
|
|
|
|
}
|
|
|
|
|
|
|
|
@SubscribeEvent
|
|
|
|
public void onBucketFill(FillBucketEvent event)
|
|
|
|
{
|
|
|
|
IBlockState state = event.world.getBlockState(event.target.getBlockPos());
|
|
|
|
if (state.getBlock() instanceof IFluidBlock)
|
|
|
|
{
|
|
|
|
Fluid fluid = ((IFluidBlock) state.getBlock()).getFluid();
|
|
|
|
FluidStack fs = new FluidStack(fluid, FluidContainerRegistry.BUCKET_VOLUME);
|
|
|
|
|
|
|
|
ItemStack filled = FluidContainerRegistry.fillFluidContainer(fs, event.current);
|
|
|
|
if (filled != null)
|
|
|
|
{
|
|
|
|
event.result = filled;
|
|
|
|
event.setResult(Result.ALLOW);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public static class DynBucket extends Item
|
|
|
|
{
|
|
|
|
public DynBucket()
|
|
|
|
{
|
|
|
|
setUnlocalizedName("dynbucket");
|
|
|
|
setMaxStackSize(1);
|
|
|
|
setHasSubtypes(true);
|
|
|
|
setCreativeTab(CreativeTabs.tabMisc);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void getSubItems(Item itemIn, CreativeTabs tab, List<ItemStack> subItems)
|
|
|
|
{
|
|
|
|
for (int i = 0; i < 4; i++)
|
|
|
|
{
|
|
|
|
ItemStack bucket = new ItemStack(this, 1, i);
|
|
|
|
if (FluidContainerRegistry.isFilledContainer(bucket))
|
|
|
|
subItems.add(bucket);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public static class DynBottle extends Item
|
|
|
|
{
|
|
|
|
public DynBottle()
|
|
|
|
{
|
|
|
|
setUnlocalizedName("dynbottle");
|
|
|
|
setMaxStackSize(1);
|
|
|
|
setHasSubtypes(true);
|
|
|
|
setCreativeTab(CreativeTabs.tabMisc);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void getSubItems(Item itemIn, CreativeTabs tab, List<ItemStack> subItems)
|
|
|
|
{
|
|
|
|
for (int i = 0; i < 4; i++)
|
|
|
|
{
|
|
|
|
ItemStack bucket = new ItemStack(this, 1, i);
|
|
|
|
if (FluidContainerRegistry.isFilledContainer(bucket))
|
|
|
|
subItems.add(bucket);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|