mirror of
https://github.com/MinecraftForge/MinecraftForge.git
synced 2026-11-12 16:27:47 +00:00
This happens when no other mod that uses the bucket model is present. Also added a simple method for registering the bucket model, should give modders an idea on how to use the general model.
173 lines
6.1 KiB
Java
173 lines
6.1 KiB
Java
package net.minecraftforge.debug;
|
|
|
|
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.ModelDynBucket;
|
|
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;
|
|
import net.minecraftforge.fluids.*;
|
|
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;
|
|
|
|
import java.util.List;
|
|
|
|
@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();
|
|
|
|
@SidedProxy(clientSide = "net.minecraftforge.debug.DynBucketTest$ClientProxy", serverSide = "net.minecraftforge.debug.DynBucketTest$CommonProxy")
|
|
public static CommonProxy proxy;
|
|
|
|
public static class CommonProxy
|
|
{
|
|
void setupModels()
|
|
{
|
|
}
|
|
}
|
|
|
|
public static class ClientProxy extends CommonProxy
|
|
{
|
|
@Override
|
|
void setupModels()
|
|
{
|
|
ModelLoader.setBucketModelDefinition(dynBucket);
|
|
|
|
final ModelResourceLocation bottle = new ModelResourceLocation(new ResourceLocation("forge", "dynbottle"), "inventory");
|
|
ModelLoader.setCustomMeshDefinition(dynBottle, new ItemMeshDefinition()
|
|
{
|
|
@Override
|
|
public ModelResourceLocation getModelLocation(ItemStack stack)
|
|
{
|
|
return bottle;
|
|
}
|
|
});
|
|
ModelBakery.registerItemVariants(dynBottle, bottle);
|
|
}
|
|
}
|
|
|
|
@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);
|
|
}
|
|
}
|
|
}
|
|
}
|