mirror of
https://github.com/MinecraftForge/MinecraftForge.git
synced 2026-11-12 16:27:47 +00:00
Add a dynamic bucket model that displays the animated liquid contained
Has a config option (default off) that replaces the vanilla buckets with the forge bucket model New original bucket textures from mr_hazard
This commit is contained in:
1 parent
80ba13be89
commit
4f6784b733
22 files changed
+958
No files matched your search
@@ -0,0 +1,179 @@
|
||||
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.setCustomMeshDefinition(dynBucket, new ItemMeshDefinition()
|
||||
{
|
||||
@Override
|
||||
public ModelResourceLocation getModelLocation(ItemStack stack)
|
||||
{
|
||||
return ModelDynBucket.LOCATION;
|
||||
}
|
||||
});
|
||||
ModelBakery.addVariantName(dynBucket, "forge:dynbucket");
|
||||
|
||||
ModelLoader.setCustomMeshDefinition(dynBottle, new ItemMeshDefinition()
|
||||
{
|
||||
@Override
|
||||
public ModelResourceLocation getModelLocation(ItemStack stack)
|
||||
{
|
||||
return new ModelResourceLocation(new ResourceLocation("forge", "dynbottle"), "inventory");
|
||||
}
|
||||
});
|
||||
ModelBakery.addVariantName(dynBottle, "forge:dynbottle");
|
||||
}
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user