diff --git a/src/test/java/net/minecraftforge/debug/DynBucketTest.java b/src/test/java/net/minecraftforge/debug/DynBucketTest.java index 149842547d..b6bb3efc56 100644 --- a/src/test/java/net/minecraftforge/debug/DynBucketTest.java +++ b/src/test/java/net/minecraftforge/debug/DynBucketTest.java @@ -59,6 +59,7 @@ import net.minecraftforge.fml.common.eventhandler.Event.Result; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.common.registry.GameRegistry.ObjectHolder; +import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemStackHandler; import net.minecraftforge.items.wrapper.CombinedInvWrapper; @@ -94,25 +95,6 @@ public class DynBucketTest } } - @SubscribeEvent - public void setupModels(ModelRegistryEvent event) - { - ModelLoader.setBucketModelDefinition(DYN_BOTTLE); - - final ModelResourceLocation bottle = new ModelResourceLocation(new ResourceLocation(ForgeVersion.MOD_ID, "dynbottle"), "inventory"); - ModelLoader.setCustomMeshDefinition(DYN_BOTTLE, new ItemMeshDefinition() - { - @Override - public ModelResourceLocation getModelLocation(@Nonnull ItemStack stack) - { - return bottle; - } - }); - ModelBakery.registerItemVariants(DYN_BOTTLE, bottle); - 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")); - } - @SubscribeEvent public void registrBlocks(RegistryEvent.Register event) { @@ -180,6 +162,29 @@ public class DynBucketTest } } + @Mod.EventBusSubscriber(value = Side.CLIENT, modid = MODID) + public static class ClientEventHandler + { + @SubscribeEvent + public static void setupModels(ModelRegistryEvent event) + { + ModelLoader.setBucketModelDefinition(DYN_BOTTLE); + + final ModelResourceLocation bottle = new ModelResourceLocation(new ResourceLocation(ForgeVersion.MOD_ID, "dynbottle"), "inventory"); + ModelLoader.setCustomMeshDefinition(DYN_BOTTLE, new ItemMeshDefinition() + { + @Override + public ModelResourceLocation getModelLocation(@Nonnull ItemStack stack) + { + return bottle; + } + }); + ModelBakery.registerItemVariants(DYN_BOTTLE, bottle); + 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")); + } + } + public static class TestItem extends Item { @Override diff --git a/src/test/java/net/minecraftforge/debug/FluidPlacementTest.java b/src/test/java/net/minecraftforge/debug/FluidPlacementTest.java index d38ee01b0b..fa63f7594d 100644 --- a/src/test/java/net/minecraftforge/debug/FluidPlacementTest.java +++ b/src/test/java/net/minecraftforge/debug/FluidPlacementTest.java @@ -80,7 +80,11 @@ public class FluidPlacementTest ); MinecraftForge.EVENT_BUS.register(FluidContainer.instance); } + } + @Mod.EventBusSubscriber(value = Side.CLIENT, modid = MODID) + public static class ClientEventHandler + { @SubscribeEvent public static void registerModels(ModelRegistryEvent event) { diff --git a/src/test/java/net/minecraftforge/debug/FogColorInsideMaterialTest.java b/src/test/java/net/minecraftforge/debug/FogColorInsideMaterialTest.java index 839227a23d..41d3e887ce 100644 --- a/src/test/java/net/minecraftforge/debug/FogColorInsideMaterialTest.java +++ b/src/test/java/net/minecraftforge/debug/FogColorInsideMaterialTest.java @@ -22,6 +22,7 @@ import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.registry.GameRegistry.ObjectHolder; +import net.minecraftforge.fml.relauncher.Side; @EventBusSubscriber @Mod (modid = FogColorInsideMaterialTest.MOD_ID, name = "FogColor inside material debug.", version = "1.0", acceptableRemoteVersions = "*") @@ -60,20 +61,24 @@ public class FogColorInsideMaterialTest event.getRegistry().register(new ItemBlock(FLUID_BLOCK).setRegistryName(testFluidRegistryName)); } - @SubscribeEvent - public static void registerModels(ModelRegistryEvent event) + @EventBusSubscriber(value = Side.CLIENT, modid = MOD_ID) + public static class ClientEventHandler { - ModelResourceLocation fluidLocation = new ModelResourceLocation(testFluidRegistryName, "fluid"); - ModelLoader.registerItemVariants(FLUID_ITEM); - ModelLoader.setCustomMeshDefinition(FLUID_ITEM, stack -> fluidLocation); - ModelLoader.setCustomStateMapper(FLUID_BLOCK, new StateMapperBase() + @SubscribeEvent + public static void registerModels(ModelRegistryEvent event) { - @Override - protected ModelResourceLocation getModelResourceLocation(IBlockState state) + ModelResourceLocation fluidLocation = new ModelResourceLocation(testFluidRegistryName, "fluid"); + ModelLoader.registerItemVariants(FLUID_ITEM); + ModelLoader.setCustomMeshDefinition(FLUID_ITEM, stack -> fluidLocation); + ModelLoader.setCustomStateMapper(FLUID_BLOCK, new StateMapperBase() { - return fluidLocation; - } - }); + @Override + protected ModelResourceLocation getModelResourceLocation(IBlockState state) + { + return fluidLocation; + } + }); + } } } diff --git a/src/test/java/net/minecraftforge/debug/ForgeBlockStatesLoaderDebug.java b/src/test/java/net/minecraftforge/debug/ForgeBlockStatesLoaderDebug.java index ebba6c7920..47b853e1f2 100644 --- a/src/test/java/net/minecraftforge/debug/ForgeBlockStatesLoaderDebug.java +++ b/src/test/java/net/minecraftforge/debug/ForgeBlockStatesLoaderDebug.java @@ -77,32 +77,36 @@ public class ForgeBlockStatesLoaderDebug MinecraftForge.EVENT_BUS.register(this); } - @SubscribeEvent - public void registerModels(ModelRegistryEvent event) + @Mod.EventBusSubscriber(value = Side.CLIENT, modid = MODID) + public static class ClientEventHandler { - //ModelLoader.setCustomStateMapper(blockCustom, new StateMap.Builder().withName(CustomMappedBlock.VARIANT).build()); - - ModelLoader.setCustomStateMapper(BLOCKS.custom_wall, new IStateMapper() + @SubscribeEvent + public void registerModels(ModelRegistryEvent event) { - StateMap stateMap = new StateMap.Builder().withName(BlockWall.VARIANT).withSuffix("_wall").build(); + //ModelLoader.setCustomStateMapper(blockCustom, new StateMap.Builder().withName(CustomMappedBlock.VARIANT).build()); - @Override - public Map putStateModelLocations(Block block) + ModelLoader.setCustomStateMapper(BLOCKS.custom_wall, new IStateMapper() { - Map map = stateMap.putStateModelLocations(block); - Map newMap = Maps.newHashMap(); + StateMap stateMap = new StateMap.Builder().withName(BlockWall.VARIANT).withSuffix("_wall").build(); - for (Entry e : map.entrySet()) + @Override + public Map putStateModelLocations(Block block) { - ModelResourceLocation loc = e.getValue(); - newMap.put(e.getKey(), new ModelResourceLocation(ASSETS + loc.getResourcePath(), loc.getVariant())); - } + Map map = stateMap.putStateModelLocations(block); + Map newMap = Maps.newHashMap(); - return newMap; - } - }); - ModelLoader.setCustomModelResourceLocation(ITEMS.custom_wall, 0, new ModelResourceLocation(ASSETS + "cobblestone_wall", "inventory")); - ModelLoader.setCustomModelResourceLocation(ITEMS.custom_wall, 1, new ModelResourceLocation(ASSETS + "mossy_cobblestone_wall", "inventory")); + for (Entry e : map.entrySet()) + { + ModelResourceLocation loc = e.getValue(); + newMap.put(e.getKey(), new ModelResourceLocation(ASSETS + loc.getResourcePath(), loc.getVariant())); + } + + return newMap; + } + }); + ModelLoader.setCustomModelResourceLocation(ITEMS.custom_wall, 0, new ModelResourceLocation(ASSETS + "cobblestone_wall", "inventory")); + ModelLoader.setCustomModelResourceLocation(ITEMS.custom_wall, 1, new ModelResourceLocation(ASSETS + "mossy_cobblestone_wall", "inventory")); + } } // this block is never actually used, it's only needed for the error message on load to see the variant it maps to diff --git a/src/test/java/net/minecraftforge/debug/ItemTileDebug.java b/src/test/java/net/minecraftforge/debug/ItemTileDebug.java index 32b283836c..0a162fe69e 100644 --- a/src/test/java/net/minecraftforge/debug/ItemTileDebug.java +++ b/src/test/java/net/minecraftforge/debug/ItemTileDebug.java @@ -32,6 +32,8 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.registry.ForgeRegistries; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.common.registry.GameRegistry.ObjectHolder; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.registries.RegistryBuilder; import static org.lwjgl.opengl.GL11.*; @@ -58,6 +60,11 @@ public class ItemTileDebug { event.getRegistry().register(new ItemBlock(TEST_BLOCK).setRegistryName(TEST_BLOCK.getRegistryName())); } + } + + @Mod.EventBusSubscriber(value = Side.CLIENT, modid = MODID) + public static class BakeEventHandler + { @SubscribeEvent public static void registerModels(ModelRegistryEvent event) { @@ -66,52 +73,41 @@ public class ItemTileDebug Item item = ForgeRegistries.ITEMS.getValue(new ResourceLocation(MODID, TestBlock.name)); ForgeHooksClient.registerTESRItemStack(item, 0, CustomTileEntity.class); ModelLoader.setCustomModelResourceLocation(item, 0, itemLocation); - MinecraftForge.EVENT_BUS.register(BakeEventHandler.instance); ClientRegistry.bindTileEntitySpecialRenderer(CustomTileEntity.class, TestTESR.instance); - - } - } - - public static class BakeEventHandler - { - public static final BakeEventHandler instance = new BakeEventHandler(); - - private BakeEventHandler() - { } @SubscribeEvent - public void onModelBakeEvent(ModelBakeEvent event) + public static void onModelBakeEvent(ModelBakeEvent event) { event.getModelManager().getBlockModelShapes().registerBuiltInBlocks(TEST_BLOCK); } - } - public static class TestTESR extends TileEntitySpecialRenderer - { - private static final TestTESR instance = new TestTESR(); - - private TestTESR() + public static class TestTESR extends TileEntitySpecialRenderer { - } + private static final TestTESR instance = new TestTESR(); - @Override - public void render(CustomTileEntity p_180535_1_, double x, double y, double z, float p_180535_8_, int p_180535_9_, float partial) - { - glPushMatrix(); - glTranslated(x, y, z); - GlStateManager.disableTexture2D(); - GlStateManager.disableLighting(); - glColor4f(.2f, 1, .1f, 1); - glBegin(GL_QUADS); - glVertex3f(0, .5f, 0); - glVertex3f(0, .5f, 1); - glVertex3f(1, .5f, 1); - glVertex3f(1, .5f, 0); - glEnd(); - glPopMatrix(); - GlStateManager.enableTexture2D(); - GlStateManager.enableLighting(); + private TestTESR() + { + } + + @Override + public void render(CustomTileEntity p_180535_1_, double x, double y, double z, float p_180535_8_, int p_180535_9_, float partial) + { + glPushMatrix(); + glTranslated(x, y, z); + GlStateManager.disableTexture2D(); + GlStateManager.disableLighting(); + glColor4f(.2f, 1, .1f, 1); + glBegin(GL_QUADS); + glVertex3f(0, .5f, 0); + glVertex3f(0, .5f, 1); + glVertex3f(1, .5f, 1); + glVertex3f(1, .5f, 0); + glEnd(); + glPopMatrix(); + GlStateManager.enableTexture2D(); + GlStateManager.enableLighting(); + } } } diff --git a/src/test/java/net/minecraftforge/debug/ModelAnimationDebug.java b/src/test/java/net/minecraftforge/debug/ModelAnimationDebug.java index 3757420aba..9c2c9acd29 100644 --- a/src/test/java/net/minecraftforge/debug/ModelAnimationDebug.java +++ b/src/test/java/net/minecraftforge/debug/ModelAnimationDebug.java @@ -60,6 +60,7 @@ import net.minecraftforge.fml.common.registry.EntityRegistry; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.common.registry.GameRegistry.ObjectHolder; +import net.minecraftforge.fml.relauncher.Side; import org.apache.logging.log4j.Logger; import javax.annotation.Nonnull; @@ -196,6 +197,24 @@ public class ModelAnimationDebug }.setRegistryName(TEST_BLOCK.getRegistryName()) ); } + } + + public static abstract class CommonProxy + { + @Nullable + public IAnimationStateMachine load(ResourceLocation location, ImmutableMap parameters){ return null; }; + } + + public static class ServerProxy extends CommonProxy {} + + @Mod.EventBusSubscriber(value = Side.CLIENT, modid = MODID) + public static class ClientProxy extends CommonProxy + { + + public IAnimationStateMachine load(ResourceLocation location, ImmutableMap parameters) + { + return ModelLoaderRegistry.loadASM(location, parameters); + } @SubscribeEvent public static void registerModels(ModelRegistryEvent event) @@ -247,24 +266,6 @@ public class ModelAnimationDebug } } - public static abstract class CommonProxy - { - @Nullable - public IAnimationStateMachine load(ResourceLocation location, ImmutableMap parameters){ return null; }; - } - - public static class ServerProxy extends CommonProxy {} - - public static class ClientProxy extends CommonProxy - { - - public IAnimationStateMachine load(ResourceLocation location, ImmutableMap parameters) - { - return ModelLoaderRegistry.loadASM(location, parameters); - } - - } - private static class ItemAnimationHolder implements ICapabilityProvider { private final VariableValue cycleLength = new VariableValue(4); diff --git a/src/test/java/net/minecraftforge/debug/ModelBakeEventDebug.java b/src/test/java/net/minecraftforge/debug/ModelBakeEventDebug.java index 28a0743fa1..391d7641b9 100644 --- a/src/test/java/net/minecraftforge/debug/ModelBakeEventDebug.java +++ b/src/test/java/net/minecraftforge/debug/ModelBakeEventDebug.java @@ -45,6 +45,8 @@ import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.common.registry.GameRegistry.ObjectHolder; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nullable; import java.util.ArrayList; @@ -92,7 +94,11 @@ public class ModelBakeEventDebug { event.getRegistry().register(new ItemBlock(CUSTOM_BLOCK).setRegistryName(CUSTOM_BLOCK.getRegistryName())); } + } + @Mod.EventBusSubscriber(value = Side.CLIENT, modid = MODID) + public static class BakeEventHandler + { @SubscribeEvent public static void registerModels(ModelRegistryEvent event) { @@ -105,20 +111,10 @@ public class ModelBakeEventDebug return blockLocation; } }); - MinecraftForge.EVENT_BUS.register(BakeEventHandler.instance); - } - } - - public static class BakeEventHandler - { - public static final BakeEventHandler instance = new BakeEventHandler(); - - private BakeEventHandler() - { } @SubscribeEvent - public void onModelBakeEvent(ModelBakeEvent event) + public static void onModelBakeEvent(ModelBakeEvent event) { TextureAtlasSprite base = Minecraft.getMinecraft().getTextureMapBlocks().getAtlasSprite("minecraft:blocks/slime"); TextureAtlasSprite overlay = Minecraft.getMinecraft().getTextureMapBlocks().getAtlasSprite("minecraft:blocks/redstone_block"); @@ -126,6 +122,107 @@ public class ModelBakeEventDebug event.getModelRegistry().putObject(blockLocation, customModel); event.getModelRegistry().putObject(itemLocation, customModel); } + + public static class CustomModel implements IBakedModel + { + private final TextureAtlasSprite base, overlay; + //private boolean hasStateSet = false; + + public CustomModel(TextureAtlasSprite base, TextureAtlasSprite overlay) + { + this.base = base; + this.overlay = overlay; + } + + // TODO update to builder + private int[] vertexToInts(float x, float y, float z, int color, TextureAtlasSprite texture, float u, float v) + { + return new int[]{ + Float.floatToRawIntBits(x), + Float.floatToRawIntBits(y), + Float.floatToRawIntBits(z), + color, + Float.floatToRawIntBits(texture.getInterpolatedU(u)), + Float.floatToRawIntBits(texture.getInterpolatedV(v)), + 0 + }; + } + + private BakedQuad createSidedBakedQuad(float x1, float x2, float z1, float z2, float y, TextureAtlasSprite texture, EnumFacing side) + { + Vec3d v1 = rotate(new Vec3d(x1 - .5, y - .5, z1 - .5), side).addVector(.5, .5, .5); + Vec3d v2 = rotate(new Vec3d(x1 - .5, y - .5, z2 - .5), side).addVector(.5, .5, .5); + Vec3d v3 = rotate(new Vec3d(x2 - .5, y - .5, z2 - .5), side).addVector(.5, .5, .5); + Vec3d v4 = rotate(new Vec3d(x2 - .5, y - .5, z1 - .5), side).addVector(.5, .5, .5); + return new BakedQuad(Ints.concat( + vertexToInts((float) v1.x, (float) v1.y, (float) v1.z, -1, texture, 0, 0), + vertexToInts((float) v2.x, (float) v2.y, (float) v2.z, -1, texture, 0, 16), + vertexToInts((float) v3.x, (float) v3.y, (float) v3.z, -1, texture, 16, 16), + vertexToInts((float) v4.x, (float) v4.y, (float) v4.z, -1, texture, 16, 0) + ), -1, side, texture, true, DefaultVertexFormats.BLOCK); + } + + @Override + public List getQuads(@Nullable IBlockState state, @Nullable EnumFacing side, long rand) + { + if (side != null) + { + return ImmutableList.of(); + } + IExtendedBlockState exState = (IExtendedBlockState) state; + int len = cubeSize * 5 + 1; + List ret = new ArrayList(); + for (EnumFacing f : EnumFacing.values()) + { + ret.add(createSidedBakedQuad(0, 1, 0, 1, 1, base, f)); + if (state != null) + { + for (int i = 0; i < cubeSize; i++) + { + for (int j = 0; j < cubeSize; j++) + { + Integer value = exState.getValue(properties[f.ordinal()]); + if (value != null && (value & (1 << (i * cubeSize + j))) != 0) + { + ret.add(createSidedBakedQuad((float) (1 + i * 5) / len, (float) (5 + i * 5) / len, (float) (1 + j * 5) / len, (float) (5 + j * 5) / len, 1.0001f, overlay, f)); + } + } + } + } + } + return ret; + } + + @Override + public boolean isGui3d() + { + return true; + } + + @Override + public boolean isAmbientOcclusion() + { + return true; + } + + @Override + public boolean isBuiltInRenderer() + { + return false; + } + + @Override + public TextureAtlasSprite getParticleTexture() + { + return this.base; + } + + @Override + public ItemOverrideList getOverrides() + { + return ItemOverrideList.NONE; + } + } } public static class CustomModelBlock extends BlockContainer @@ -233,107 +330,6 @@ public class ModelBakeEventDebug } } - public static class CustomModel implements IBakedModel - { - private final TextureAtlasSprite base, overlay; - //private boolean hasStateSet = false; - - public CustomModel(TextureAtlasSprite base, TextureAtlasSprite overlay) - { - this.base = base; - this.overlay = overlay; - } - - // TODO update to builder - private int[] vertexToInts(float x, float y, float z, int color, TextureAtlasSprite texture, float u, float v) - { - return new int[]{ - Float.floatToRawIntBits(x), - Float.floatToRawIntBits(y), - Float.floatToRawIntBits(z), - color, - Float.floatToRawIntBits(texture.getInterpolatedU(u)), - Float.floatToRawIntBits(texture.getInterpolatedV(v)), - 0 - }; - } - - private BakedQuad createSidedBakedQuad(float x1, float x2, float z1, float z2, float y, TextureAtlasSprite texture, EnumFacing side) - { - Vec3d v1 = rotate(new Vec3d(x1 - .5, y - .5, z1 - .5), side).addVector(.5, .5, .5); - Vec3d v2 = rotate(new Vec3d(x1 - .5, y - .5, z2 - .5), side).addVector(.5, .5, .5); - Vec3d v3 = rotate(new Vec3d(x2 - .5, y - .5, z2 - .5), side).addVector(.5, .5, .5); - Vec3d v4 = rotate(new Vec3d(x2 - .5, y - .5, z1 - .5), side).addVector(.5, .5, .5); - return new BakedQuad(Ints.concat( - vertexToInts((float) v1.x, (float) v1.y, (float) v1.z, -1, texture, 0, 0), - vertexToInts((float) v2.x, (float) v2.y, (float) v2.z, -1, texture, 0, 16), - vertexToInts((float) v3.x, (float) v3.y, (float) v3.z, -1, texture, 16, 16), - vertexToInts((float) v4.x, (float) v4.y, (float) v4.z, -1, texture, 16, 0) - ), -1, side, texture, true, DefaultVertexFormats.BLOCK); - } - - @Override - public List getQuads(@Nullable IBlockState state, @Nullable EnumFacing side, long rand) - { - if (side != null) - { - return ImmutableList.of(); - } - IExtendedBlockState exState = (IExtendedBlockState) state; - int len = cubeSize * 5 + 1; - List ret = new ArrayList(); - for (EnumFacing f : EnumFacing.values()) - { - ret.add(createSidedBakedQuad(0, 1, 0, 1, 1, base, f)); - if (state != null) - { - for (int i = 0; i < cubeSize; i++) - { - for (int j = 0; j < cubeSize; j++) - { - Integer value = exState.getValue(properties[f.ordinal()]); - if (value != null && (value & (1 << (i * cubeSize + j))) != 0) - { - ret.add(createSidedBakedQuad((float) (1 + i * 5) / len, (float) (5 + i * 5) / len, (float) (1 + j * 5) / len, (float) (5 + j * 5) / len, 1.0001f, overlay, f)); - } - } - } - } - } - return ret; - } - - @Override - public boolean isGui3d() - { - return true; - } - - @Override - public boolean isAmbientOcclusion() - { - return true; - } - - @Override - public boolean isBuiltInRenderer() - { - return false; - } - - @Override - public TextureAtlasSprite getParticleTexture() - { - return this.base; - } - - @Override - public ItemOverrideList getOverrides() - { - return ItemOverrideList.NONE; - } - } - @SuppressWarnings("SuspiciousNameCombination") private static Vec3d rotate(Vec3d vec, EnumFacing side) { diff --git a/src/test/java/net/minecraftforge/debug/ModelFluidDebug.java b/src/test/java/net/minecraftforge/debug/ModelFluidDebug.java index f3091f4b9b..63fc19fd1a 100644 --- a/src/test/java/net/minecraftforge/debug/ModelFluidDebug.java +++ b/src/test/java/net/minecraftforge/debug/ModelFluidDebug.java @@ -22,6 +22,7 @@ import net.minecraftforge.fml.common.Mod.EventHandler; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.registry.GameRegistry.ObjectHolder; +import net.minecraftforge.fml.relauncher.Side; @Mod(modid = ModelFluidDebug.MODID, name = "ForgeDebugModelFluid", version = ModelFluidDebug.VERSION, acceptableRemoteVersions = "*") public class ModelFluidDebug @@ -85,7 +86,11 @@ public class ModelFluidDebug new ItemBlock(MILK_BLOCK).setRegistryName(MILK_BLOCK.getRegistryName()) ); } + } + @Mod.EventBusSubscriber(value = Side.CLIENT, modid = MODID) + public static class ClientEventHandler + { @SubscribeEvent public static void registerModels(ModelRegistryEvent event) {