diff --git a/patches/minecraft/net/minecraft/client/renderer/block/model/FaceBakery.java.patch b/patches/minecraft/net/minecraft/client/renderer/block/model/FaceBakery.java.patch index a45204c7e..3d8f0f359 100644 --- a/patches/minecraft/net/minecraft/client/renderer/block/model/FaceBakery.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/block/model/FaceBakery.java.patch @@ -4,17 +4,17 @@ public BakedQuad func_178414_a(Vector3f p_178414_1_, Vector3f p_178414_2_, BlockPartFace p_178414_3_, TextureAtlasSprite p_178414_4_, EnumFacing p_178414_5_, ModelRotation p_178414_6_, BlockPartRotation p_178414_7_, boolean p_178414_8_, boolean p_178414_9_) { -+ return makeBakedQuad(p_178414_1_, p_178414_2_, p_178414_3_, p_178414_4_, p_178414_5_, (net.minecraftforge.client.model.ITransformation)p_178414_6_, p_178414_7_, p_178414_8_, p_178414_9_); ++ return makeBakedQuad(p_178414_1_, p_178414_2_, p_178414_3_, p_178414_4_, p_178414_5_, (net.minecraftforge.common.model.ITransformation)p_178414_6_, p_178414_7_, p_178414_8_, p_178414_9_); + } + -+ public BakedQuad makeBakedQuad(Vector3f p_178414_1_, Vector3f p_178414_2_, BlockPartFace p_178414_3_, TextureAtlasSprite p_178414_4_, EnumFacing p_178414_5_, net.minecraftforge.client.model.ITransformation p_178414_6_, BlockPartRotation p_178414_7_, boolean p_178414_8_, boolean p_178414_9_) ++ public BakedQuad makeBakedQuad(Vector3f p_178414_1_, Vector3f p_178414_2_, BlockPartFace p_178414_3_, TextureAtlasSprite p_178414_4_, EnumFacing p_178414_5_, net.minecraftforge.common.model.ITransformation p_178414_6_, BlockPartRotation p_178414_7_, boolean p_178414_8_, boolean p_178414_9_) + { BlockFaceUV blockfaceuv = p_178414_3_.field_178243_e; if (p_178414_8_) { - blockfaceuv = this.func_188010_a(p_178414_3_.field_178243_e, p_178414_5_, p_178414_6_); -+ // TODO fix uvlock for custom rotations ++ // TODO fix uvlock for custom rotations + //blockfaceuv = this.applyUVLock(face.blockFaceUV, facing, modelRotationIn); } @@ -37,10 +37,10 @@ private int[] func_188012_a(BlockFaceUV p_188012_1_, TextureAtlasSprite p_188012_2_, EnumFacing p_188012_3_, float[] p_188012_4_, ModelRotation p_188012_5_, BlockPartRotation p_188012_6_, boolean p_188012_7_) { -+ return makeQuadVertexData(p_188012_1_, p_188012_2_, p_188012_3_, p_188012_4_, (net.minecraftforge.client.model.ITransformation)p_188012_5_, p_188012_6_, p_188012_7_); ++ return makeQuadVertexData(p_188012_1_, p_188012_2_, p_188012_3_, p_188012_4_, (net.minecraftforge.common.model.ITransformation)p_188012_5_, p_188012_6_, p_188012_7_); + } + -+ private int[] makeQuadVertexData(BlockFaceUV uvs, TextureAtlasSprite sprite, EnumFacing orientation, float[] p_188012_4_, net.minecraftforge.client.model.ITransformation rotationIn, BlockPartRotation partRotation, boolean shade) ++ private int[] makeQuadVertexData(BlockFaceUV uvs, TextureAtlasSprite sprite, EnumFacing orientation, float[] p_188012_4_, net.minecraftforge.common.model.ITransformation rotationIn, BlockPartRotation partRotation, boolean shade) + { int[] aint = new int[28]; @@ -56,10 +56,10 @@ private void func_188015_a(int[] p_188015_1_, int p_188015_2_, EnumFacing p_188015_3_, BlockFaceUV p_188015_4_, float[] p_188015_5_, TextureAtlasSprite p_188015_6_, ModelRotation p_188015_7_, BlockPartRotation p_188015_8_, boolean p_188015_9_) { - EnumFacing enumfacing = p_188015_7_.func_177523_a(p_188015_3_); -+ fillVertexData(p_188015_1_, p_188015_2_, p_188015_3_, p_188015_4_, p_188015_5_, p_188015_6_, (net.minecraftforge.client.model.ITransformation)p_188015_7_, p_188015_8_, p_188015_9_); ++ fillVertexData(p_188015_1_, p_188015_2_, p_188015_3_, p_188015_4_, p_188015_5_, p_188015_6_, (net.minecraftforge.common.model.ITransformation)p_188015_7_, p_188015_8_, p_188015_9_); + } + -+ private void fillVertexData(int[] p_188015_1_, int p_188015_2_, EnumFacing p_188015_3_, BlockFaceUV p_188015_4_, float[] p_188015_5_, TextureAtlasSprite p_188015_6_, net.minecraftforge.client.model.ITransformation p_188015_7_, BlockPartRotation p_188015_8_, boolean p_188015_9_) ++ private void fillVertexData(int[] p_188015_1_, int p_188015_2_, EnumFacing p_188015_3_, BlockFaceUV p_188015_4_, float[] p_188015_5_, TextureAtlasSprite p_188015_6_, net.minecraftforge.common.model.ITransformation p_188015_7_, BlockPartRotation p_188015_8_, boolean p_188015_9_) + { + EnumFacing enumfacing = p_188015_7_.rotate(p_188015_3_); int i = p_188015_9_ ? this.func_178413_a(enumfacing) : -1; @@ -75,10 +75,10 @@ public int func_188011_a(Vector3f p_188011_1_, EnumFacing p_188011_2_, int p_188011_3_, ModelRotation p_188011_4_) { -+ return rotateVertex(p_188011_1_, p_188011_2_, p_188011_3_, (net.minecraftforge.client.model.ITransformation)p_188011_4_); ++ return rotateVertex(p_188011_1_, p_188011_2_, p_188011_3_, (net.minecraftforge.common.model.ITransformation)p_188011_4_); + } + -+ public int rotateVertex(Vector3f p_188011_1_, EnumFacing p_188011_2_, int p_188011_3_, net.minecraftforge.client.model.ITransformation p_188011_4_) ++ public int rotateVertex(Vector3f p_188011_1_, EnumFacing p_188011_2_, int p_188011_3_, net.minecraftforge.common.model.ITransformation p_188011_4_) + { if (p_188011_4_ == ModelRotation.X0_Y0) { diff --git a/patches/minecraft/net/minecraft/client/renderer/block/model/ItemCameraTransforms.java.patch b/patches/minecraft/net/minecraft/client/renderer/block/model/ItemCameraTransforms.java.patch index 91ecaba4d..74a4f9c04 100644 --- a/patches/minecraft/net/minecraft/client/renderer/block/model/ItemCameraTransforms.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/block/model/ItemCameraTransforms.java.patch @@ -39,7 +39,7 @@ @SideOnly(Side.CLIENT) - public static enum TransformType -+ public static enum TransformType implements net.minecraftforge.client.model.IModelPart ++ public static enum TransformType implements net.minecraftforge.common.model.IModelPart { NONE, THIRD_PERSON_LEFT_HAND, diff --git a/patches/minecraft/net/minecraft/client/renderer/block/model/ItemTransformVec3f.java.patch b/patches/minecraft/net/minecraft/client/renderer/block/model/ItemTransformVec3f.java.patch index 22f137782..9dde502f9 100644 --- a/patches/minecraft/net/minecraft/client/renderer/block/model/ItemTransformVec3f.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/block/model/ItemTransformVec3f.java.patch @@ -10,9 +10,9 @@ @SideOnly(Side.CLIENT) -public class ItemTransformVec3f +@Deprecated -+public class ItemTransformVec3f implements net.minecraftforge.client.model.IModelState ++public class ItemTransformVec3f implements net.minecraftforge.common.model.IModelState { -+ public com.google.common.base.Optional apply(com.google.common.base.Optional part) { return net.minecraftforge.client.ForgeHooksClient.applyTransform(this, part); } ++ public com.google.common.base.Optional apply(com.google.common.base.Optional part) { return net.minecraftforge.client.ForgeHooksClient.applyTransform(this, part); } public static final ItemTransformVec3f field_178366_a = new ItemTransformVec3f(new Vector3f(), new Vector3f(), new Vector3f(1.0F, 1.0F, 1.0F)); public final Vector3f field_178364_b; public final Vector3f field_178365_c; diff --git a/patches/minecraft/net/minecraft/client/renderer/block/model/ModelBakery.java.patch b/patches/minecraft/net/minecraft/client/renderer/block/model/ModelBakery.java.patch index 4f6cd2e15..b7ac03ea1 100644 --- a/patches/minecraft/net/minecraft/client/renderer/block/model/ModelBakery.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/block/model/ModelBakery.java.patch @@ -97,10 +97,10 @@ private IBakedModel func_177578_a(ModelBlock p_177578_1_, ModelRotation p_177578_2_, boolean p_177578_3_) { -+ return bakeModel(p_177578_1_, (net.minecraftforge.client.model.ITransformation)p_177578_2_, p_177578_3_); ++ return bakeModel(p_177578_1_, (net.minecraftforge.common.model.ITransformation)p_177578_2_, p_177578_3_); + } + -+ protected IBakedModel bakeModel(ModelBlock p_177578_1_, net.minecraftforge.client.model.ITransformation p_177578_2_, boolean p_177578_3_) ++ protected IBakedModel bakeModel(ModelBlock p_177578_1_, net.minecraftforge.common.model.ITransformation p_177578_2_, boolean p_177578_3_) + { TextureAtlasSprite textureatlassprite = (TextureAtlasSprite)this.field_177599_g.get(new ResourceLocation(p_177578_1_.func_178308_c("particle"))); SimpleBakedModel.Builder simplebakedmodel$builder = (new SimpleBakedModel.Builder(p_177578_1_, p_177578_1_.func_187967_g())).func_177646_a(textureatlassprite); @@ -110,7 +110,7 @@ TextureAtlasSprite textureatlassprite1 = (TextureAtlasSprite)this.field_177599_g.get(new ResourceLocation(p_177578_1_.func_178308_c(blockpartface.field_178242_d))); - if (blockpartface.field_178244_b == null) -+ if (blockpartface.field_178244_b == null || !net.minecraftforge.client.model.TRSRTransformation.isInteger(p_177578_2_.getMatrix())) ++ if (blockpartface.field_178244_b == null || !net.minecraftforge.common.model.TRSRTransformation.isInteger(p_177578_2_.getMatrix())) { - simplebakedmodel$builder.func_177648_a(this.func_177589_a(blockpart, blockpartface, textureatlassprite1, enumfacing, p_177578_2_, p_177578_3_)); + simplebakedmodel$builder.func_177648_a(this.makeBakedQuad(blockpart, blockpartface, textureatlassprite1, enumfacing, p_177578_2_, p_177578_3_)); @@ -127,10 +127,10 @@ private BakedQuad func_177589_a(BlockPart p_177589_1_, BlockPartFace p_177589_2_, TextureAtlasSprite p_177589_3_, EnumFacing p_177589_4_, ModelRotation p_177589_5_, boolean p_177589_6_) { - return this.field_177607_l.func_178414_a(p_177589_1_.field_178241_a, p_177589_1_.field_178239_b, p_177589_2_, p_177589_3_, p_177589_4_, p_177589_5_, p_177589_1_.field_178237_d, p_177589_6_, p_177589_1_.field_178238_e); -+ return makeBakedQuad(p_177589_1_, p_177589_2_, p_177589_3_, p_177589_4_, (net.minecraftforge.client.model.ITransformation)p_177589_5_, p_177589_6_); ++ return makeBakedQuad(p_177589_1_, p_177589_2_, p_177589_3_, p_177589_4_, (net.minecraftforge.common.model.ITransformation)p_177589_5_, p_177589_6_); } -+ protected BakedQuad makeBakedQuad(BlockPart p_177589_1_, BlockPartFace p_177589_2_, TextureAtlasSprite p_177589_3_, EnumFacing p_177589_4_, net.minecraftforge.client.model.ITransformation p_177589_5_, boolean p_177589_6_) ++ protected BakedQuad makeBakedQuad(BlockPart p_177589_1_, BlockPartFace p_177589_2_, TextureAtlasSprite p_177589_3_, EnumFacing p_177589_4_, net.minecraftforge.common.model.ITransformation p_177589_5_, boolean p_177589_6_) + { + return this.field_177607_l.makeBakedQuad(p_177589_1_.field_178241_a, p_177589_1_.field_178239_b, p_177589_2_, p_177589_3_, p_177589_4_, p_177589_5_, p_177589_1_.field_178237_d, p_177589_6_, p_177589_1_.field_178238_e); + } diff --git a/patches/minecraft/net/minecraft/client/renderer/block/model/ModelResourceLocation.java.patch b/patches/minecraft/net/minecraft/client/renderer/block/model/ModelResourceLocation.java.patch new file mode 100644 index 000000000..b9461784b --- /dev/null +++ b/patches/minecraft/net/minecraft/client/renderer/block/model/ModelResourceLocation.java.patch @@ -0,0 +1,14 @@ +--- ../src-base/minecraft/net/minecraft/client/renderer/block/model/ModelResourceLocation.java ++++ ../src-work/minecraft/net/minecraft/client/renderer/block/model/ModelResourceLocation.java +@@ -1,11 +1,8 @@ + package net.minecraft.client.renderer.block.model; + + import net.minecraft.util.ResourceLocation; +-import net.minecraftforge.fml.relauncher.Side; +-import net.minecraftforge.fml.relauncher.SideOnly; + import org.apache.commons.lang3.StringUtils; + +-@SideOnly(Side.CLIENT) + public class ModelResourceLocation extends ResourceLocation + { + private final String field_177519_c; diff --git a/patches/minecraft/net/minecraft/client/renderer/block/model/ModelRotation.java.patch b/patches/minecraft/net/minecraft/client/renderer/block/model/ModelRotation.java.patch index 39044dd39..af4bc6663 100644 --- a/patches/minecraft/net/minecraft/client/renderer/block/model/ModelRotation.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/block/model/ModelRotation.java.patch @@ -5,7 +5,7 @@ @SideOnly(Side.CLIENT) -public enum ModelRotation -+public enum ModelRotation implements net.minecraftforge.client.model.IModelState, net.minecraftforge.client.model.ITransformation ++public enum ModelRotation implements net.minecraftforge.common.model.IModelState, net.minecraftforge.common.model.ITransformation { X0_Y0(0, 0), X0_Y90(0, 90), @@ -14,7 +14,7 @@ } } + -+ public com.google.common.base.Optional apply(com.google.common.base.Optional part) { return net.minecraftforge.client.ForgeHooksClient.applyTransform(getMatrix(), part); } ++ public com.google.common.base.Optional apply(com.google.common.base.Optional part) { return net.minecraftforge.client.ForgeHooksClient.applyTransform(getMatrix(), part); } + public javax.vecmath.Matrix4f getMatrix() { return net.minecraftforge.client.ForgeHooksClient.getMatrix(this); } + public EnumFacing rotate(EnumFacing facing) { return func_177523_a(facing); } + public int rotate(EnumFacing facing, int vertexIndex) { return func_177520_a(facing, vertexIndex); } diff --git a/patches/minecraft/net/minecraft/client/renderer/block/model/Variant.java.patch b/patches/minecraft/net/minecraft/client/renderer/block/model/Variant.java.patch index 51f084a94..2a57fbefe 100644 --- a/patches/minecraft/net/minecraft/client/renderer/block/model/Variant.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/block/model/Variant.java.patch @@ -10,7 +10,7 @@ return this.field_188051_b; } -+ public net.minecraftforge.client.model.IModelState getState() ++ public net.minecraftforge.common.model.IModelState getState() + { + return this.field_188051_b; + } diff --git a/patches/minecraft/net/minecraft/item/Item.java.patch b/patches/minecraft/net/minecraft/item/Item.java.patch index 23d952ef4..d0a84e64b 100644 --- a/patches/minecraft/net/minecraft/item/Item.java.patch +++ b/patches/minecraft/net/minecraft/item/Item.java.patch @@ -642,13 +642,13 @@ + return null; + } + -+ public com.google.common.collect.ImmutableMap getAnimationParameters(final ItemStack stack, final World world, final EntityLivingBase entity) ++ public com.google.common.collect.ImmutableMap getAnimationParameters(final ItemStack stack, final World world, final EntityLivingBase entity) + { -+ com.google.common.collect.ImmutableMap.Builder builder = com.google.common.collect.ImmutableMap.builder(); ++ com.google.common.collect.ImmutableMap.Builder builder = com.google.common.collect.ImmutableMap.builder(); + for(ResourceLocation location : field_185051_m.func_148742_b()) + { + final IItemPropertyGetter parameter = field_185051_m.func_82594_a(location); -+ builder.put(location.toString(), new net.minecraftforge.client.model.animation.ITimeValue() ++ builder.put(location.toString(), new net.minecraftforge.common.animation.ITimeValue() + { + public float apply(float input) + { diff --git a/src/main/java/net/minecraftforge/client/ForgeHooksClient.java b/src/main/java/net/minecraftforge/client/ForgeHooksClient.java index 111dad6c4..80f7942bd 100644 --- a/src/main/java/net/minecraftforge/client/ForgeHooksClient.java +++ b/src/main/java/net/minecraftforge/client/ForgeHooksClient.java @@ -70,13 +70,13 @@ import net.minecraftforge.client.event.RenderHandEvent; import net.minecraftforge.client.event.RenderWorldLastEvent; import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.client.event.sound.PlaySoundEvent; -import net.minecraftforge.client.model.IModelPart; import net.minecraftforge.client.model.IPerspectiveAwareModel; import net.minecraftforge.client.model.ModelLoader; -import net.minecraftforge.client.model.TRSRTransformation; import net.minecraftforge.common.ForgeModContainer; import net.minecraftforge.common.ForgeVersion; import net.minecraftforge.common.ForgeVersion.Status; +import net.minecraftforge.common.model.IModelPart; +import net.minecraftforge.common.model.TRSRTransformation; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.client.FMLClientHandler; import net.minecraftforge.fml.client.registry.ClientRegistry; diff --git a/src/main/java/net/minecraftforge/client/model/BlockStateLoader.java b/src/main/java/net/minecraftforge/client/model/BlockStateLoader.java index 89141ec73..8497735ce 100644 --- a/src/main/java/net/minecraftforge/client/model/BlockStateLoader.java +++ b/src/main/java/net/minecraftforge/client/model/BlockStateLoader.java @@ -14,6 +14,8 @@ import net.minecraft.client.renderer.block.model.ModelRotation; import net.minecraft.client.renderer.block.model.Variant; import net.minecraft.client.renderer.block.model.VariantList; import net.minecraft.util.ResourceLocation; +import net.minecraftforge.common.model.IModelState; +import net.minecraftforge.common.model.TRSRTransformation; import net.minecraftforge.fml.common.FMLLog; import org.apache.commons.io.Charsets; diff --git a/src/main/java/net/minecraftforge/client/model/ForgeBlockStateV1.java b/src/main/java/net/minecraftforge/client/model/ForgeBlockStateV1.java index e178bc33a..93433bb02 100644 --- a/src/main/java/net/minecraftforge/client/model/ForgeBlockStateV1.java +++ b/src/main/java/net/minecraftforge/client/model/ForgeBlockStateV1.java @@ -22,6 +22,8 @@ import net.minecraft.util.JsonUtils; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.BlockStateLoader.Marker; import net.minecraftforge.client.model.BlockStateLoader.SubModel; +import net.minecraftforge.common.model.IModelState; +import net.minecraftforge.common.model.TRSRTransformation; import net.minecraftforge.fml.common.FMLLog; import com.google.common.base.Optional; diff --git a/src/main/java/net/minecraftforge/client/model/IModel.java b/src/main/java/net/minecraftforge/client/model/IModel.java index 884b2f27e..9cb33f277 100644 --- a/src/main/java/net/minecraftforge/client/model/IModel.java +++ b/src/main/java/net/minecraftforge/client/model/IModel.java @@ -6,6 +6,7 @@ import net.minecraft.client.renderer.block.model.IBakedModel; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.vertex.VertexFormat; import net.minecraft.util.ResourceLocation; +import net.minecraftforge.common.model.IModelState; import com.google.common.base.Function; diff --git a/src/main/java/net/minecraftforge/client/model/IPerspectiveAwareModel.java b/src/main/java/net/minecraftforge/client/model/IPerspectiveAwareModel.java index 4d3f155ce..2c529f9b8 100644 --- a/src/main/java/net/minecraftforge/client/model/IPerspectiveAwareModel.java +++ b/src/main/java/net/minecraftforge/client/model/IPerspectiveAwareModel.java @@ -12,6 +12,8 @@ import net.minecraft.client.renderer.block.model.ItemCameraTransforms.TransformT import net.minecraft.client.renderer.block.model.ItemOverrideList; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.util.EnumFacing; +import net.minecraftforge.common.model.IModelState; +import net.minecraftforge.common.model.TRSRTransformation; import org.apache.commons.lang3.tuple.Pair; diff --git a/src/main/java/net/minecraftforge/client/model/ItemLayerModel.java b/src/main/java/net/minecraftforge/client/model/ItemLayerModel.java index ca7b14f66..a1f9bce91 100644 --- a/src/main/java/net/minecraftforge/client/model/ItemLayerModel.java +++ b/src/main/java/net/minecraftforge/client/model/ItemLayerModel.java @@ -23,6 +23,9 @@ import net.minecraft.client.resources.IResourceManager; import net.minecraft.util.EnumFacing; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.pipeline.UnpackedBakedQuad; +import net.minecraftforge.common.model.IModelPart; +import net.minecraftforge.common.model.IModelState; +import net.minecraftforge.common.model.TRSRTransformation; import com.google.common.base.Function; import com.google.common.base.Optional; diff --git a/src/main/java/net/minecraftforge/client/model/ItemTextureQuadConverter.java b/src/main/java/net/minecraftforge/client/model/ItemTextureQuadConverter.java index 14746db93..d95f7958e 100644 --- a/src/main/java/net/minecraftforge/client/model/ItemTextureQuadConverter.java +++ b/src/main/java/net/minecraftforge/client/model/ItemTextureQuadConverter.java @@ -1,12 +1,15 @@ package net.minecraftforge.client.model; import com.google.common.collect.Lists; + import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.vertex.VertexFormat; import net.minecraft.util.EnumFacing; import net.minecraftforge.client.model.pipeline.UnpackedBakedQuad; +import net.minecraftforge.common.model.TRSRTransformation; import javax.vecmath.Vector4f; + import java.util.List; public final class ItemTextureQuadConverter diff --git a/src/main/java/net/minecraftforge/client/model/MapModelState.java b/src/main/java/net/minecraftforge/client/model/MapModelState.java index 2f1469f3c..831404ebc 100644 --- a/src/main/java/net/minecraftforge/client/model/MapModelState.java +++ b/src/main/java/net/minecraftforge/client/model/MapModelState.java @@ -2,6 +2,10 @@ package net.minecraftforge.client.model; import java.util.Map; +import net.minecraftforge.common.model.IModelPart; +import net.minecraftforge.common.model.IModelState; +import net.minecraftforge.common.model.TRSRTransformation; + import com.google.common.base.Objects; import com.google.common.base.Optional; import com.google.common.collect.ImmutableMap; diff --git a/src/main/java/net/minecraftforge/client/model/ModelDynBucket.java b/src/main/java/net/minecraftforge/client/model/ModelDynBucket.java index 31f28744a..5e035d794 100644 --- a/src/main/java/net/minecraftforge/client/model/ModelDynBucket.java +++ b/src/main/java/net/minecraftforge/client/model/ModelDynBucket.java @@ -24,6 +24,9 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.EnumFacing; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; +import net.minecraftforge.common.model.IModelPart; +import net.minecraftforge.common.model.IModelState; +import net.minecraftforge.common.model.TRSRTransformation; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidRegistry; diff --git a/src/main/java/net/minecraftforge/client/model/ModelFluid.java b/src/main/java/net/minecraftforge/client/model/ModelFluid.java index 50f3774b6..5faa87258 100644 --- a/src/main/java/net/minecraftforge/client/model/ModelFluid.java +++ b/src/main/java/net/minecraftforge/client/model/ModelFluid.java @@ -23,6 +23,9 @@ import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.MathHelper; import net.minecraftforge.client.model.pipeline.LightUtil; import net.minecraftforge.client.model.pipeline.UnpackedBakedQuad; +import net.minecraftforge.common.model.IModelPart; +import net.minecraftforge.common.model.IModelState; +import net.minecraftforge.common.model.TRSRTransformation; import net.minecraftforge.common.property.IExtendedBlockState; import net.minecraftforge.fluids.BlockFluidBase; import net.minecraftforge.fluids.Fluid; diff --git a/src/main/java/net/minecraftforge/client/model/ModelLoader.java b/src/main/java/net/minecraftforge/client/model/ModelLoader.java index 395913f58..3b4a706ef 100644 --- a/src/main/java/net/minecraftforge/client/model/ModelLoader.java +++ b/src/main/java/net/minecraftforge/client/model/ModelLoader.java @@ -57,12 +57,14 @@ import net.minecraft.launchwrapper.Launch; import net.minecraft.util.EnumFacing; import net.minecraft.util.ResourceLocation; import net.minecraft.util.registry.IRegistry; -import net.minecraftforge.client.model.animation.Animation; import net.minecraftforge.client.model.animation.AnimationItemOverrideList; import net.minecraftforge.client.model.animation.IAnimatedModel; -import net.minecraftforge.client.model.animation.IClip; import net.minecraftforge.client.model.animation.ModelBlockAnimation; import net.minecraftforge.common.ForgeModContainer; +import net.minecraftforge.common.model.IModelPart; +import net.minecraftforge.common.model.IModelState; +import net.minecraftforge.common.model.TRSRTransformation; +import net.minecraftforge.common.model.animation.IClip; import net.minecraftforge.common.property.IExtendedBlockState; import net.minecraftforge.common.property.Properties; import net.minecraftforge.fluids.Fluid; @@ -110,7 +112,7 @@ public final class ModelLoader extends ModelBakery super(manager, map, shapes); VanillaLoader.instance.setLoader(this); VariantLoader.instance.setLoader(this); - ModelLoaderRegistry.clearModelCache(); + ModelLoaderRegistry.clearModelCache(manager); } @Override @@ -811,7 +813,7 @@ public final class ModelLoader extends ModelBakery modelPath = modelPath.substring("models/".length()); } ResourceLocation armatureLocation = new ResourceLocation(modelLocation.getResourceDomain(), "armatures/" + modelPath + ".json"); - ModelBlockAnimation animation = Animation.INSTANCE.loadVanillaAnimation(armatureLocation); + ModelBlockAnimation animation = ModelBlockAnimation.loadVanillaAnimation(loader.resourceManager, armatureLocation); ModelBlock model = loader.loadModel(modelLocation); return loader.new VanillaModelWrapper(modelLocation, model, false, animation); } diff --git a/src/main/java/net/minecraftforge/client/model/ModelLoaderRegistry.java b/src/main/java/net/minecraftforge/client/model/ModelLoaderRegistry.java index 93b4c39fb..4d0e6e33a 100644 --- a/src/main/java/net/minecraftforge/client/model/ModelLoaderRegistry.java +++ b/src/main/java/net/minecraftforge/client/model/ModelLoaderRegistry.java @@ -7,16 +7,19 @@ import java.util.Set; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.resources.IReloadableResourceManager; +import net.minecraft.client.resources.IResourceManager; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.ModelLoader.VanillaLoader; import net.minecraftforge.client.model.ModelLoader.VariantLoader; import net.minecraftforge.client.model.b3d.B3DLoader; import net.minecraftforge.client.model.obj.OBJLoader; +import net.minecraftforge.common.animation.ITimeValue; +import net.minecraftforge.common.model.animation.AnimationStateMachine; +import net.minecraftforge.common.model.animation.IAnimationStateMachine; import net.minecraftforge.fml.common.FMLLog; -import org.apache.logging.log4j.Level; - import com.google.common.base.Joiner; +import com.google.common.collect.ImmutableMap; import com.google.common.collect.Maps; import com.google.common.collect.Queues; import com.google.common.collect.Sets; @@ -30,6 +33,7 @@ public class ModelLoaderRegistry private static final Map cache = Maps.newHashMap(); private static final Deque loadingModels = Queues.newArrayDeque(); private static final Set textures = Sets.newHashSet(); + private static IResourceManager manager; // Forge built-in loaders static @@ -191,8 +195,9 @@ public class ModelLoaderRegistry return ModelLoader.VanillaLoader.instance.getLoader().getMissingModel(); } - public static void clearModelCache() + public static void clearModelCache(IResourceManager manager) { + ModelLoaderRegistry.manager = manager; cache.clear(); // putting the builtin models in cache.put(new ResourceLocation("minecraft:builtin/generated"), ItemLayerModel.instance); @@ -219,4 +224,9 @@ public class ModelLoaderRegistry private static final long serialVersionUID = 1L; } + + public static IAnimationStateMachine loadASM(ResourceLocation location, ImmutableMap customParameters) + { + return AnimationStateMachine.load(manager, location, customParameters); + } } diff --git a/src/main/java/net/minecraftforge/client/model/ModelStateComposition.java b/src/main/java/net/minecraftforge/client/model/ModelStateComposition.java index 231b47b0e..07eed5282 100644 --- a/src/main/java/net/minecraftforge/client/model/ModelStateComposition.java +++ b/src/main/java/net/minecraftforge/client/model/ModelStateComposition.java @@ -1,5 +1,9 @@ package net.minecraftforge.client.model; +import net.minecraftforge.common.model.IModelPart; +import net.minecraftforge.common.model.IModelState; +import net.minecraftforge.common.model.TRSRTransformation; + import com.google.common.base.Optional; public class ModelStateComposition implements IModelState diff --git a/src/main/java/net/minecraftforge/client/model/MultiLayerModel.java b/src/main/java/net/minecraftforge/client/model/MultiLayerModel.java index 347884188..d82f5fb89 100644 --- a/src/main/java/net/minecraftforge/client/model/MultiLayerModel.java +++ b/src/main/java/net/minecraftforge/client/model/MultiLayerModel.java @@ -19,6 +19,8 @@ import net.minecraft.util.BlockRenderLayer; import net.minecraft.util.EnumFacing; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.MinecraftForgeClient; +import net.minecraftforge.common.model.IModelState; +import net.minecraftforge.common.model.TRSRTransformation; import net.minecraftforge.fml.common.FMLLog; import org.apache.commons.lang3.tuple.Pair; diff --git a/src/main/java/net/minecraftforge/client/model/MultiModel.java b/src/main/java/net/minecraftforge/client/model/MultiModel.java index 7db688ee4..e32a9456c 100644 --- a/src/main/java/net/minecraftforge/client/model/MultiModel.java +++ b/src/main/java/net/minecraftforge/client/model/MultiModel.java @@ -23,6 +23,8 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.EnumFacing; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; +import net.minecraftforge.common.model.IModelState; +import net.minecraftforge.common.model.TRSRTransformation; import net.minecraftforge.fml.common.FMLLog; import org.apache.commons.lang3.tuple.Pair; diff --git a/src/main/java/net/minecraftforge/client/model/MultiModelState.java b/src/main/java/net/minecraftforge/client/model/MultiModelState.java index 6b06fcc76..c3a5c8cfb 100644 --- a/src/main/java/net/minecraftforge/client/model/MultiModelState.java +++ b/src/main/java/net/minecraftforge/client/model/MultiModelState.java @@ -1,5 +1,9 @@ package net.minecraftforge.client.model; +import net.minecraftforge.common.model.IModelPart; +import net.minecraftforge.common.model.IModelState; +import net.minecraftforge.common.model.TRSRTransformation; + import org.apache.commons.lang3.tuple.Pair; import com.google.common.base.Objects; diff --git a/src/main/java/net/minecraftforge/client/model/SimpleModelState.java b/src/main/java/net/minecraftforge/client/model/SimpleModelState.java index 5c2e38439..2f52a660e 100644 --- a/src/main/java/net/minecraftforge/client/model/SimpleModelState.java +++ b/src/main/java/net/minecraftforge/client/model/SimpleModelState.java @@ -1,5 +1,9 @@ package net.minecraftforge.client.model; +import net.minecraftforge.common.model.IModelPart; +import net.minecraftforge.common.model.IModelState; +import net.minecraftforge.common.model.TRSRTransformation; + import com.google.common.base.Optional; import com.google.common.collect.ImmutableMap; diff --git a/src/main/java/net/minecraftforge/client/model/animation/Animation.java b/src/main/java/net/minecraftforge/client/model/animation/Animation.java index e25786c52..953bbafae 100644 --- a/src/main/java/net/minecraftforge/client/model/animation/Animation.java +++ b/src/main/java/net/minecraftforge/client/model/animation/Animation.java @@ -1,28 +1,8 @@ package net.minecraftforge.client.model.animation; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStreamReader; - -import net.minecraft.client.resources.IResource; -import net.minecraft.client.resources.IResourceManager; -import net.minecraft.client.resources.IResourceManagerReloadListener; -import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; -import net.minecraftforge.common.model.animation.IAnimationStateMachine; -import net.minecraftforge.common.util.JsonUtils; -import net.minecraftforge.fml.common.FMLLog; -import org.apache.logging.log4j.Level; - -import com.google.common.base.Function; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonParseException; - -public enum Animation implements IResourceManagerReloadListener +public enum Animation { INSTANCE; @@ -52,152 +32,10 @@ public enum Animation implements IResourceManagerReloadListener return INSTANCE.clientPartialTickTime; } - /** - * Load a new instance if AnimationStateMachine at specified location, with specified custom parameters. - */ - public IAnimationStateMachine load(ResourceLocation location, ImmutableMap customParameters) - { - try - { - ClipResolver clipResolver = new ClipResolver(); - ParameterResolver parameterResolver = new ParameterResolver(customParameters); - Clips.CommonClipTypeAdapterFactory.INSTANCE.setClipResolver(clipResolver); - TimeValues.CommonTimeValueTypeAdapterFactory.INSTANCE.setValueResolver(parameterResolver); - IResource resource = manager.getResource(location); - AnimationStateMachine asm = asmGson.fromJson(new InputStreamReader(resource.getInputStream(), "UTF-8"), AnimationStateMachine.class); - clipResolver.asm = asm; - parameterResolver.asm = asm; - asm.initialize(); - //String json = asmGson.toJson(asm); - //System.out.println(location + ": " + json); - return asm; - } - catch(IOException e) - { - FMLLog.log(Level.ERROR, e, "Exception loading Animation State Machine %s, skipping", location); - return missing; - } - catch(JsonParseException e) - { - FMLLog.log(Level.ERROR, e, "Exception loading Animation State Machine %s, skipping", location); - return missing; - } - finally - { - Clips.CommonClipTypeAdapterFactory.INSTANCE.setClipResolver(null); - TimeValues.CommonTimeValueTypeAdapterFactory.INSTANCE.setValueResolver(null); - } - } - - /** - * Load armature associated with a vanilla model. - */ - public ModelBlockAnimation loadVanillaAnimation(ResourceLocation armatureLocation) - { - try - { - IResource resource = null; - try - { - resource = manager.getResource(armatureLocation); - } - catch(FileNotFoundException e) - { - // this is normal. FIXME: error reporting? - return defaultModelBlockAnimation; - } - ModelBlockAnimation mba = mbaGson.fromJson(new InputStreamReader(resource.getInputStream(), "UTF-8"), ModelBlockAnimation.class); - //String json = mbaGson.toJson(mba); - return mba; - } - catch(IOException e) - { - FMLLog.log(Level.ERROR, e, "Exception loading vanilla model aniamtion %s, skipping", armatureLocation); - return defaultModelBlockAnimation; - } - catch(JsonParseException e) - { - FMLLog.log(Level.ERROR, e, "Exception loading vanilla model aniamtion %s, skipping", armatureLocation); - return defaultModelBlockAnimation; - } - } - - private IResourceManager manager; - - protected final AnimationStateMachine missing = new AnimationStateMachine( - ImmutableMap.of(), - ImmutableMap.of("missingno", (IClip)Clips.IdentityClip.instance), - ImmutableList.of("missingno"), - ImmutableMap.of(), - "missingno"); - - { - missing.initialize(); - } - - private final Gson asmGson = new GsonBuilder() - .registerTypeAdapter(ImmutableList.class, JsonUtils.ImmutableListTypeAdapter.INSTANCE) - .registerTypeAdapter(ImmutableMap.class, JsonUtils.ImmutableMapTypeAdapter.INSTANCE) - .registerTypeAdapterFactory(Clips.CommonClipTypeAdapterFactory.INSTANCE) - //.registerTypeAdapterFactory(ClipProviders.CommonClipProviderTypeAdapterFactory.INSTANCE) - .registerTypeAdapterFactory(TimeValues.CommonTimeValueTypeAdapterFactory.INSTANCE) - .setPrettyPrinting() - .enableComplexMapKeySerialization() - .disableHtmlEscaping() - .create(); - - private static final class ClipResolver implements Function - { - private AnimationStateMachine asm; - - public IClip apply(String name) - { - return asm.getClips().get(name); - } - } - - private static final class ParameterResolver implements Function - { - private final ImmutableMap customParameters; - private AnimationStateMachine asm; - - public ParameterResolver(ImmutableMap customParameters) - { - this.customParameters = customParameters; - } - - public ITimeValue apply(String name) - { - if(asm.getParameters().containsKey(name)) - { - return asm.getParameters().get(name); - } - return customParameters.get(name); - } - } - - private final Gson mbaGson = new GsonBuilder() - .registerTypeAdapter(ImmutableList.class, JsonUtils.ImmutableListTypeAdapter.INSTANCE) - .registerTypeAdapter(ImmutableMap.class, JsonUtils.ImmutableMapTypeAdapter.INSTANCE) - .setPrettyPrinting() - .enableComplexMapKeySerialization() - .disableHtmlEscaping() - .create(); - - private final ModelBlockAnimation defaultModelBlockAnimation = new ModelBlockAnimation(ImmutableMap.>of(), ImmutableMap.of()); - /** * Iternal hook, do not use. */ public static void setClientPartialTickTime(float clientPartialTickTime) { Animation.INSTANCE.clientPartialTickTime = clientPartialTickTime; } - - /** - * Iternal hook, do not use. - */ - public void onResourceManagerReload(IResourceManager manager) - { - this.manager = manager; - } } diff --git a/src/main/java/net/minecraftforge/client/model/animation/AnimationItemOverrideList.java b/src/main/java/net/minecraftforge/client/model/animation/AnimationItemOverrideList.java index 9fe76315f..e281dd2b4 100644 --- a/src/main/java/net/minecraftforge/client/model/animation/AnimationItemOverrideList.java +++ b/src/main/java/net/minecraftforge/client/model/animation/AnimationItemOverrideList.java @@ -13,8 +13,9 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; import net.minecraftforge.client.model.IModel; -import net.minecraftforge.client.model.IModelState; import net.minecraftforge.client.model.ModelStateComposition; +import net.minecraftforge.common.model.IModelState; +import net.minecraftforge.common.model.animation.CapabilityAnimation; import net.minecraftforge.common.model.animation.IAnimationStateMachine; import com.google.common.base.Function; @@ -43,7 +44,7 @@ public final class AnimationItemOverrideList extends ItemOverrideList @Override public IBakedModel handleItemState(IBakedModel originalModel, ItemStack stack, World world, EntityLivingBase entity) { - if(stack.hasCapability(net.minecraftforge.client.model.animation.CapabilityAnimation.ANIMATION_CAPABILITY, null)) + if(stack.hasCapability(net.minecraftforge.common.model.animation.CapabilityAnimation.ANIMATION_CAPABILITY, null)) { // TODO: caching? IAnimationStateMachine asm = stack.getCapability(CapabilityAnimation.ANIMATION_CAPABILITY, null); diff --git a/src/main/java/net/minecraftforge/client/model/animation/AnimationModelBase.java b/src/main/java/net/minecraftforge/client/model/animation/AnimationModelBase.java index 327396792..d36f03ca0 100644 --- a/src/main/java/net/minecraftforge/client/model/animation/AnimationModelBase.java +++ b/src/main/java/net/minecraftforge/client/model/animation/AnimationModelBase.java @@ -16,11 +16,14 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.EnumFacing; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.IModel; -import net.minecraftforge.client.model.IModelState; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.client.model.ModelLoaderRegistry; import net.minecraftforge.client.model.pipeline.VertexLighterFlat; import net.minecraftforge.client.model.pipeline.VertexBufferConsumer; +import net.minecraftforge.common.animation.Event; +import net.minecraftforge.common.animation.IEventHandler; +import net.minecraftforge.common.model.IModelState; +import net.minecraftforge.common.model.animation.CapabilityAnimation; import org.apache.commons.lang3.tuple.Pair; import org.lwjgl.opengl.GL11; diff --git a/src/main/java/net/minecraftforge/client/model/animation/AnimationTESR.java b/src/main/java/net/minecraftforge/client/model/animation/AnimationTESR.java index db81f323d..c1e2f0e91 100644 --- a/src/main/java/net/minecraftforge/client/model/animation/AnimationTESR.java +++ b/src/main/java/net/minecraftforge/client/model/animation/AnimationTESR.java @@ -9,7 +9,10 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; import net.minecraftforge.client.MinecraftForgeClient; -import net.minecraftforge.client.model.IModelState; +import net.minecraftforge.common.animation.Event; +import net.minecraftforge.common.animation.IEventHandler; +import net.minecraftforge.common.model.IModelState; +import net.minecraftforge.common.model.animation.CapabilityAnimation; import net.minecraftforge.common.property.IExtendedBlockState; import net.minecraftforge.common.property.Properties; diff --git a/src/main/java/net/minecraftforge/client/model/animation/IAnimatedModel.java b/src/main/java/net/minecraftforge/client/model/animation/IAnimatedModel.java index e4d6df8ee..a841ed12b 100644 --- a/src/main/java/net/minecraftforge/client/model/animation/IAnimatedModel.java +++ b/src/main/java/net/minecraftforge/client/model/animation/IAnimatedModel.java @@ -1,6 +1,7 @@ package net.minecraftforge.client.model.animation; import net.minecraftforge.client.model.IModel; +import net.minecraftforge.common.model.animation.IClip; import com.google.common.base.Optional; diff --git a/src/main/java/net/minecraftforge/client/model/animation/ModelBlockAnimation.java b/src/main/java/net/minecraftforge/client/model/animation/ModelBlockAnimation.java index 2e5598975..792d83eaa 100644 --- a/src/main/java/net/minecraftforge/client/model/animation/ModelBlockAnimation.java +++ b/src/main/java/net/minecraftforge/client/model/animation/ModelBlockAnimation.java @@ -1,5 +1,8 @@ package net.minecraftforge.client.model.animation; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStreamReader; import java.util.Collections; import java.util.EnumSet; import java.util.Iterator; @@ -12,13 +15,25 @@ import javax.vecmath.Matrix4f; import javax.vecmath.Quat4f; import javax.vecmath.Vector3f; +import org.apache.logging.log4j.Level; + import net.minecraft.client.renderer.block.model.BlockPart; +import net.minecraft.client.resources.IResource; +import net.minecraft.client.resources.IResourceManager; +import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.MathHelper; -import net.minecraftforge.client.model.IModelState; -import net.minecraftforge.client.model.TRSRTransformation; import net.minecraftforge.client.model.animation.ModelBlockAnimation.Parameter.Interpolation; import net.minecraftforge.client.model.animation.ModelBlockAnimation.Parameter.Type; import net.minecraftforge.client.model.animation.ModelBlockAnimation.Parameter.Variable; +import net.minecraftforge.common.animation.Event; +import net.minecraftforge.common.model.IModelState; +import net.minecraftforge.common.model.TRSRTransformation; +import net.minecraftforge.common.model.animation.IClip; +import net.minecraftforge.common.model.animation.IJoint; +import net.minecraftforge.common.model.animation.IJointClip; +import net.minecraftforge.common.model.animation.JointClips; +import net.minecraftforge.common.util.JsonUtils; +import net.minecraftforge.fml.common.FMLLog; import com.google.common.base.Optional; import com.google.common.collect.ImmutableCollection; @@ -28,6 +43,9 @@ import com.google.common.collect.ImmutableMultimap; import com.google.common.collect.Maps; import com.google.common.collect.Sets; import com.google.common.collect.UnmodifiableIterator; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonParseException; import com.google.gson.annotations.SerializedName; public class ModelBlockAnimation @@ -509,4 +527,47 @@ public class ModelBlockAnimation } return null; } + + /** + * Load armature associated with a vanilla model. + */ + public static ModelBlockAnimation loadVanillaAnimation(IResourceManager manager, ResourceLocation armatureLocation) + { + try + { + IResource resource = null; + try + { + resource = manager.getResource(armatureLocation); + } + catch(FileNotFoundException e) + { + // this is normal. FIXME: error reporting? + return defaultModelBlockAnimation; + } + ModelBlockAnimation mba = mbaGson.fromJson(new InputStreamReader(resource.getInputStream(), "UTF-8"), ModelBlockAnimation.class); + //String json = mbaGson.toJson(mba); + return mba; + } + catch(IOException e) + { + FMLLog.log(Level.ERROR, e, "Exception loading vanilla model aniamtion %s, skipping", armatureLocation); + return defaultModelBlockAnimation; + } + catch(JsonParseException e) + { + FMLLog.log(Level.ERROR, e, "Exception loading vanilla model aniamtion %s, skipping", armatureLocation); + return defaultModelBlockAnimation; + } + } + + private static final Gson mbaGson = new GsonBuilder() + .registerTypeAdapter(ImmutableList.class, JsonUtils.ImmutableListTypeAdapter.INSTANCE) + .registerTypeAdapter(ImmutableMap.class, JsonUtils.ImmutableMapTypeAdapter.INSTANCE) + .setPrettyPrinting() + .enableComplexMapKeySerialization() + .disableHtmlEscaping() + .create(); + + private static final ModelBlockAnimation defaultModelBlockAnimation = new ModelBlockAnimation(ImmutableMap.>of(), ImmutableMap.of()); } diff --git a/src/main/java/net/minecraftforge/client/model/b3d/B3DClip.java b/src/main/java/net/minecraftforge/client/model/b3d/B3DClip.java index 91df31ae1..dc667ee0a 100644 --- a/src/main/java/net/minecraftforge/client/model/b3d/B3DClip.java +++ b/src/main/java/net/minecraftforge/client/model/b3d/B3DClip.java @@ -1,14 +1,14 @@ package net.minecraftforge.client.model.b3d; -import net.minecraftforge.client.model.TRSRTransformation; -import net.minecraftforge.client.model.animation.Event; -import net.minecraftforge.client.model.animation.IClip; -import net.minecraftforge.client.model.animation.IJoint; -import net.minecraftforge.client.model.animation.IJointClip; -import net.minecraftforge.client.model.animation.JointClips; import net.minecraftforge.client.model.b3d.B3DLoader.NodeJoint; import net.minecraftforge.client.model.b3d.B3DModel.Key; import net.minecraftforge.client.model.b3d.B3DModel.Node; +import net.minecraftforge.common.animation.Event; +import net.minecraftforge.common.model.TRSRTransformation; +import net.minecraftforge.common.model.animation.IClip; +import net.minecraftforge.common.model.animation.IJoint; +import net.minecraftforge.common.model.animation.IJointClip; +import net.minecraftforge.common.model.animation.JointClips; import com.google.common.collect.ImmutableSet; diff --git a/src/main/java/net/minecraftforge/client/model/b3d/B3DLoader.java b/src/main/java/net/minecraftforge/client/model/b3d/B3DLoader.java index 9ae3fdc8e..4eeefef5a 100644 --- a/src/main/java/net/minecraftforge/client/model/b3d/B3DLoader.java +++ b/src/main/java/net/minecraftforge/client/model/b3d/B3DLoader.java @@ -30,18 +30,13 @@ import net.minecraft.util.math.MathHelper; import net.minecraftforge.client.model.ICustomModelLoader; import net.minecraftforge.client.model.IModel; import net.minecraftforge.client.model.IModelCustomData; -import net.minecraftforge.client.model.IModelPart; import net.minecraftforge.client.model.IModelSimpleProperties; -import net.minecraftforge.client.model.IModelState; import net.minecraftforge.client.model.IPerspectiveAwareModel; import net.minecraftforge.client.model.IRetexturableModel; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.client.model.ModelLoaderRegistry; import net.minecraftforge.client.model.ModelStateComposition; -import net.minecraftforge.client.model.TRSRTransformation; import net.minecraftforge.client.model.animation.IAnimatedModel; -import net.minecraftforge.client.model.animation.IClip; -import net.minecraftforge.client.model.animation.IJoint; import net.minecraftforge.client.model.b3d.B3DModel.Animation; import net.minecraftforge.client.model.b3d.B3DModel.Face; import net.minecraftforge.client.model.b3d.B3DModel.Key; @@ -50,6 +45,11 @@ import net.minecraftforge.client.model.b3d.B3DModel.Node; import net.minecraftforge.client.model.b3d.B3DModel.Texture; import net.minecraftforge.client.model.b3d.B3DModel.Vertex; import net.minecraftforge.client.model.pipeline.UnpackedBakedQuad; +import net.minecraftforge.common.model.IModelPart; +import net.minecraftforge.common.model.IModelState; +import net.minecraftforge.common.model.TRSRTransformation; +import net.minecraftforge.common.model.animation.IClip; +import net.minecraftforge.common.model.animation.IJoint; import net.minecraftforge.common.property.IExtendedBlockState; import net.minecraftforge.common.property.IUnlistedProperty; import net.minecraftforge.common.property.Properties; diff --git a/src/main/java/net/minecraftforge/client/model/obj/OBJModel.java b/src/main/java/net/minecraftforge/client/model/obj/OBJModel.java index 585441359..0d6186fed 100644 --- a/src/main/java/net/minecraftforge/client/model/obj/OBJModel.java +++ b/src/main/java/net/minecraftforge/client/model/obj/OBJModel.java @@ -36,6 +36,9 @@ import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.*; import net.minecraftforge.client.model.pipeline.LightUtil; import net.minecraftforge.client.model.pipeline.UnpackedBakedQuad; +import net.minecraftforge.common.model.IModelPart; +import net.minecraftforge.common.model.IModelState; +import net.minecraftforge.common.model.TRSRTransformation; import net.minecraftforge.common.property.IExtendedBlockState; import net.minecraftforge.common.property.IUnlistedProperty; import net.minecraftforge.fml.common.FMLLog; diff --git a/src/main/java/net/minecraftforge/client/model/animation/Event.java b/src/main/java/net/minecraftforge/common/animation/Event.java similarity index 94% rename from src/main/java/net/minecraftforge/client/model/animation/Event.java rename to src/main/java/net/minecraftforge/common/animation/Event.java index 96135d2d3..aabe3e630 100644 --- a/src/main/java/net/minecraftforge/client/model/animation/Event.java +++ b/src/main/java/net/minecraftforge/common/animation/Event.java @@ -1,4 +1,4 @@ -package net.minecraftforge.client.model.animation; +package net.minecraftforge.common.animation; import com.google.common.base.Objects; diff --git a/src/main/java/net/minecraftforge/client/model/animation/IEventHandler.java b/src/main/java/net/minecraftforge/common/animation/IEventHandler.java similarity index 75% rename from src/main/java/net/minecraftforge/client/model/animation/IEventHandler.java rename to src/main/java/net/minecraftforge/common/animation/IEventHandler.java index 81c7f3892..113373738 100644 --- a/src/main/java/net/minecraftforge/client/model/animation/IEventHandler.java +++ b/src/main/java/net/minecraftforge/common/animation/IEventHandler.java @@ -1,4 +1,5 @@ -package net.minecraftforge.client.model.animation; +package net.minecraftforge.common.animation; + /** diff --git a/src/main/java/net/minecraftforge/client/model/animation/ITimeValue.java b/src/main/java/net/minecraftforge/common/animation/ITimeValue.java similarity index 87% rename from src/main/java/net/minecraftforge/client/model/animation/ITimeValue.java rename to src/main/java/net/minecraftforge/common/animation/ITimeValue.java index 88770b125..dfb7fc8ec 100644 --- a/src/main/java/net/minecraftforge/client/model/animation/ITimeValue.java +++ b/src/main/java/net/minecraftforge/common/animation/ITimeValue.java @@ -1,4 +1,4 @@ -package net.minecraftforge.client.model.animation; +package net.minecraftforge.common.animation; /** * Time-varying value associated with the animation. diff --git a/src/main/java/net/minecraftforge/client/model/animation/TimeValues.java b/src/main/java/net/minecraftforge/common/animation/TimeValues.java similarity index 99% rename from src/main/java/net/minecraftforge/client/model/animation/TimeValues.java rename to src/main/java/net/minecraftforge/common/animation/TimeValues.java index a61268578..d289cc744 100644 --- a/src/main/java/net/minecraftforge/client/model/animation/TimeValues.java +++ b/src/main/java/net/minecraftforge/common/animation/TimeValues.java @@ -1,4 +1,4 @@ -package net.minecraftforge.client.model.animation; +package net.minecraftforge.common.animation; import java.io.IOException; import java.util.regex.Pattern; diff --git a/src/main/java/net/minecraftforge/client/model/IModelPart.java b/src/main/java/net/minecraftforge/common/model/IModelPart.java similarity index 85% rename from src/main/java/net/minecraftforge/client/model/IModelPart.java rename to src/main/java/net/minecraftforge/common/model/IModelPart.java index e8fe6bedd..48fdb4752 100644 --- a/src/main/java/net/minecraftforge/client/model/IModelPart.java +++ b/src/main/java/net/minecraftforge/common/model/IModelPart.java @@ -1,4 +1,4 @@ -package net.minecraftforge.client.model; +package net.minecraftforge.common.model; /* * Represents the part of the model you can refer to, for example: mesh, diff --git a/src/main/java/net/minecraftforge/client/model/IModelState.java b/src/main/java/net/minecraftforge/common/model/IModelState.java similarity index 92% rename from src/main/java/net/minecraftforge/client/model/IModelState.java rename to src/main/java/net/minecraftforge/common/model/IModelState.java index dff153de3..d53fd234a 100644 --- a/src/main/java/net/minecraftforge/client/model/IModelState.java +++ b/src/main/java/net/minecraftforge/common/model/IModelState.java @@ -1,4 +1,4 @@ -package net.minecraftforge.client.model; +package net.minecraftforge.common.model; import com.google.common.base.Optional; diff --git a/src/main/java/net/minecraftforge/client/model/ITransformation.java b/src/main/java/net/minecraftforge/common/model/ITransformation.java similarity index 90% rename from src/main/java/net/minecraftforge/client/model/ITransformation.java rename to src/main/java/net/minecraftforge/common/model/ITransformation.java index 36f22b03f..f57604c89 100644 --- a/src/main/java/net/minecraftforge/client/model/ITransformation.java +++ b/src/main/java/net/minecraftforge/common/model/ITransformation.java @@ -1,4 +1,4 @@ -package net.minecraftforge.client.model; +package net.minecraftforge.common.model; import javax.vecmath.Matrix4f; diff --git a/src/main/java/net/minecraftforge/client/model/TRSRTransformation.java b/src/main/java/net/minecraftforge/common/model/TRSRTransformation.java similarity index 97% rename from src/main/java/net/minecraftforge/client/model/TRSRTransformation.java rename to src/main/java/net/minecraftforge/common/model/TRSRTransformation.java index 368c2adc5..3c84d27aa 100644 --- a/src/main/java/net/minecraftforge/client/model/TRSRTransformation.java +++ b/src/main/java/net/minecraftforge/common/model/TRSRTransformation.java @@ -1,4 +1,4 @@ -package net.minecraftforge.client.model; +package net.minecraftforge.common.model; import javax.vecmath.Matrix3f; import javax.vecmath.Matrix4f; @@ -11,6 +11,8 @@ import javax.vecmath.Vector4f; import net.minecraft.client.renderer.block.model.ModelRotation; import net.minecraft.util.EnumFacing; import net.minecraft.util.math.Vec3i; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Triple; @@ -63,28 +65,33 @@ public final class TRSRTransformation implements IModelState, ITransformation } @Deprecated + @SideOnly(Side.CLIENT) public TRSRTransformation(net.minecraft.client.renderer.block.model.ItemTransformVec3f transform) { this(getMatrix(transform)); } @Deprecated + @SideOnly(Side.CLIENT) public static Matrix4f getMatrix(net.minecraft.client.renderer.block.model.ItemTransformVec3f transform) { TRSRTransformation ret = new TRSRTransformation(toVecmath(transform.translation), quatFromXYZDegrees(toVecmath(transform.rotation)), toVecmath(transform.scale), null); return blockCenterToCorner(ret).getMatrix(); } + @SideOnly(Side.CLIENT) public TRSRTransformation(ModelRotation rotation) { this(rotation.getMatrix()); } - + + @SideOnly(Side.CLIENT) public TRSRTransformation(EnumFacing facing) { this(getMatrix(facing)); } - + + @SideOnly(Side.CLIENT) public static Matrix4f getMatrix(EnumFacing facing) { switch(facing) @@ -491,6 +498,7 @@ public final class TRSRTransformation implements IModelState, ITransformation * Don't use this if you don't need to, conversion is lossy (second rotation component is lost). */ @Deprecated + @SideOnly(Side.CLIENT) public net.minecraft.client.renderer.block.model.ItemTransformVec3f toItemTransform() { return new net.minecraft.client.renderer.block.model.ItemTransformVec3f(toLwjgl(toXYZDegrees(getLeftRot())), toLwjgl(getTranslation()), toLwjgl(getScale())); @@ -636,16 +644,19 @@ public final class TRSRTransformation implements IModelState, ITransformation return true; } + @SideOnly(Side.CLIENT) public static Vector3f toVecmath(org.lwjgl.util.vector.Vector3f vec) { return new Vector3f(vec.x, vec.y, vec.z); } + @SideOnly(Side.CLIENT) public static Vector4f toVecmath(org.lwjgl.util.vector.Vector4f vec) { return new Vector4f(vec.x, vec.y, vec.z, vec.w); } + @SideOnly(Side.CLIENT) public static Matrix4f toVecmath(org.lwjgl.util.vector.Matrix4f m) { return new Matrix4f( @@ -655,16 +666,19 @@ public final class TRSRTransformation implements IModelState, ITransformation m.m03, m.m13, m.m23, m.m33); } + @SideOnly(Side.CLIENT) public static org.lwjgl.util.vector.Vector3f toLwjgl(Vector3f vec) { return new org.lwjgl.util.vector.Vector3f(vec.x, vec.y, vec.z); } + @SideOnly(Side.CLIENT) public static org.lwjgl.util.vector.Vector4f toLwjgl(Vector4f vec) { return new org.lwjgl.util.vector.Vector4f(vec.x, vec.y, vec.z, vec.w); } + @SideOnly(Side.CLIENT) public static org.lwjgl.util.vector.Matrix4f toLwjgl(Matrix4f m) { org.lwjgl.util.vector.Matrix4f r = new org.lwjgl.util.vector.Matrix4f(); diff --git a/src/main/java/net/minecraftforge/client/model/animation/AnimationStateMachine.java b/src/main/java/net/minecraftforge/common/model/animation/AnimationStateMachine.java similarity index 54% rename from src/main/java/net/minecraftforge/client/model/animation/AnimationStateMachine.java rename to src/main/java/net/minecraftforge/common/model/animation/AnimationStateMachine.java index d2a7c8f37..29b8d964d 100644 --- a/src/main/java/net/minecraftforge/client/model/animation/AnimationStateMachine.java +++ b/src/main/java/net/minecraftforge/common/model/animation/AnimationStateMachine.java @@ -1,13 +1,26 @@ -package net.minecraftforge.client.model.animation; +package net.minecraftforge.common.model.animation; +import java.io.IOException; +import java.io.InputStreamReader; import java.util.concurrent.TimeUnit; -import net.minecraftforge.client.model.IModelState; -import net.minecraftforge.common.model.animation.IAnimationStateMachine; +import net.minecraft.client.resources.IResource; +import net.minecraft.client.resources.IResourceManager; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.common.animation.Event; +import net.minecraftforge.common.animation.ITimeValue; +import net.minecraftforge.common.animation.TimeValues; +import net.minecraftforge.common.model.IModelState; +import net.minecraftforge.common.util.JsonUtils; +import net.minecraftforge.fml.common.FMLLog; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Triple; +import org.apache.logging.log4j.Level; +import com.google.common.base.Function; import com.google.common.base.Predicate; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; @@ -15,10 +28,12 @@ import com.google.common.cache.LoadingCache; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; import com.google.gson.JsonParseException; import com.google.gson.annotations.SerializedName; -class AnimationStateMachine implements IAnimationStateMachine +public final class AnimationStateMachine implements IAnimationStateMachine { private final ImmutableMap parameters; private final ImmutableMap clips; @@ -52,22 +67,6 @@ class AnimationStateMachine implements IAnimationStateMachine this.startState = startState; } - /** - * Used during resolution of parameter references. - */ - ImmutableMap getParameters() - { - return parameters; - } - - /** - * Used during resolution of clip references. - */ - ImmutableMap getClips() - { - return clips; - } - /** * post-loading initialization hook. */ @@ -166,4 +165,100 @@ class AnimationStateMachine implements IAnimationStateMachine { shouldHandleSpecialEvents = true; } + + /** + * Load a new instance if AnimationStateMachine at specified location, with specified custom parameters. + */ + @SideOnly(Side.CLIENT) + public static IAnimationStateMachine load(IResourceManager manager, ResourceLocation location, ImmutableMap customParameters) + { + try + { + ClipResolver clipResolver = new ClipResolver(); + ParameterResolver parameterResolver = new ParameterResolver(customParameters); + Clips.CommonClipTypeAdapterFactory.INSTANCE.setClipResolver(clipResolver); + TimeValues.CommonTimeValueTypeAdapterFactory.INSTANCE.setValueResolver(parameterResolver); + IResource resource = manager.getResource(location); + AnimationStateMachine asm = asmGson.fromJson(new InputStreamReader(resource.getInputStream(), "UTF-8"), AnimationStateMachine.class); + clipResolver.asm = asm; + parameterResolver.asm = asm; + asm.initialize(); + //String json = asmGson.toJson(asm); + //System.out.println(location + ": " + json); + return asm; + } + catch(IOException e) + { + FMLLog.log(Level.ERROR, e, "Exception loading Animation State Machine %s, skipping", location); + return missing; + } + catch(JsonParseException e) + { + FMLLog.log(Level.ERROR, e, "Exception loading Animation State Machine %s, skipping", location); + return missing; + } + finally + { + Clips.CommonClipTypeAdapterFactory.INSTANCE.setClipResolver(null); + TimeValues.CommonTimeValueTypeAdapterFactory.INSTANCE.setValueResolver(null); + } + } + + private static final AnimationStateMachine missing = new AnimationStateMachine( + ImmutableMap.of(), + ImmutableMap.of("missingno", (IClip)Clips.IdentityClip.instance), + ImmutableList.of("missingno"), + ImmutableMap.of(), + "missingno"); + + static + { + missing.initialize(); + } + + public static final AnimationStateMachine getMissing() + { + return missing; + } + + private static final class ClipResolver implements Function + { + private AnimationStateMachine asm; + + public IClip apply(String name) + { + return asm.clips.get(name); + } + } + + private static final class ParameterResolver implements Function + { + private final ImmutableMap customParameters; + private AnimationStateMachine asm; + + public ParameterResolver(ImmutableMap customParameters) + { + this.customParameters = customParameters; + } + + public ITimeValue apply(String name) + { + if(asm.parameters.containsKey(name)) + { + return asm.parameters.get(name); + } + return customParameters.get(name); + } + } + + private static final Gson asmGson = new GsonBuilder() + .registerTypeAdapter(ImmutableList.class, JsonUtils.ImmutableListTypeAdapter.INSTANCE) + .registerTypeAdapter(ImmutableMap.class, JsonUtils.ImmutableMapTypeAdapter.INSTANCE) + .registerTypeAdapterFactory(Clips.CommonClipTypeAdapterFactory.INSTANCE) + //.registerTypeAdapterFactory(ClipProviders.CommonClipProviderTypeAdapterFactory.INSTANCE) + .registerTypeAdapterFactory(TimeValues.CommonTimeValueTypeAdapterFactory.INSTANCE) + .setPrettyPrinting() + .enableComplexMapKeySerialization() + .disableHtmlEscaping() + .create(); } diff --git a/src/main/java/net/minecraftforge/client/model/animation/CapabilityAnimation.java b/src/main/java/net/minecraftforge/common/model/animation/CapabilityAnimation.java similarity index 91% rename from src/main/java/net/minecraftforge/client/model/animation/CapabilityAnimation.java rename to src/main/java/net/minecraftforge/common/model/animation/CapabilityAnimation.java index 3181e463d..093afafb9 100644 --- a/src/main/java/net/minecraftforge/client/model/animation/CapabilityAnimation.java +++ b/src/main/java/net/minecraftforge/common/model/animation/CapabilityAnimation.java @@ -1,4 +1,4 @@ -package net.minecraftforge.client.model.animation; +package net.minecraftforge.common.model.animation; import java.util.concurrent.Callable; @@ -8,7 +8,6 @@ import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.CapabilityInject; import net.minecraftforge.common.capabilities.CapabilityManager; import net.minecraftforge.common.capabilities.ICapabilityProvider; -import net.minecraftforge.common.model.animation.IAnimationStateMachine; public class CapabilityAnimation { @@ -29,7 +28,7 @@ public class CapabilityAnimation { public IAnimationStateMachine call() throws Exception { - return Animation.INSTANCE.missing; + return AnimationStateMachine.getMissing(); } }); } diff --git a/src/main/java/net/minecraftforge/client/model/animation/Clips.java b/src/main/java/net/minecraftforge/common/model/animation/Clips.java similarity index 97% rename from src/main/java/net/minecraftforge/client/model/animation/Clips.java rename to src/main/java/net/minecraftforge/common/model/animation/Clips.java index 5561e3d18..4fab7d4e1 100644 --- a/src/main/java/net/minecraftforge/client/model/animation/Clips.java +++ b/src/main/java/net/minecraftforge/common/model/animation/Clips.java @@ -1,4 +1,4 @@ -package net.minecraftforge.client.model.animation; +package net.minecraftforge.common.model.animation; import java.io.IOException; @@ -7,11 +7,16 @@ import net.minecraft.util.IStringSerializable; import net.minecraft.util.math.MathHelper; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.IModel; -import net.minecraftforge.client.model.IModelPart; -import net.minecraftforge.client.model.IModelState; import net.minecraftforge.client.model.ModelLoaderRegistry; -import net.minecraftforge.client.model.TRSRTransformation; +import net.minecraftforge.client.model.animation.IAnimatedModel; +import net.minecraftforge.common.animation.Event; +import net.minecraftforge.common.animation.ITimeValue; +import net.minecraftforge.common.model.IModelPart; +import net.minecraftforge.common.model.IModelState; +import net.minecraftforge.common.model.TRSRTransformation; import net.minecraftforge.fml.common.FMLLog; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import org.apache.commons.lang3.NotImplementedException; import org.apache.commons.lang3.tuple.Pair; @@ -60,6 +65,7 @@ public final class Clips /** * Retrieves the clip from the model. */ + @SideOnly(Side.CLIENT) public static IClip getModelClipNode(ResourceLocation modelLocation, String clipName) { IModel model = ModelLoaderRegistry.getModelOrMissing(modelLocation); diff --git a/src/main/java/net/minecraftforge/common/model/animation/IAnimationStateMachine.java b/src/main/java/net/minecraftforge/common/model/animation/IAnimationStateMachine.java index 53b640c21..bb84e244c 100644 --- a/src/main/java/net/minecraftforge/common/model/animation/IAnimationStateMachine.java +++ b/src/main/java/net/minecraftforge/common/model/animation/IAnimationStateMachine.java @@ -1,7 +1,7 @@ package net.minecraftforge.common.model.animation; -import net.minecraftforge.client.model.IModelState; -import net.minecraftforge.client.model.animation.Event; +import net.minecraftforge.common.animation.Event; +import net.minecraftforge.common.model.IModelState; import org.apache.commons.lang3.tuple.Pair; diff --git a/src/main/java/net/minecraftforge/client/model/animation/IClip.java b/src/main/java/net/minecraftforge/common/model/animation/IClip.java similarity index 61% rename from src/main/java/net/minecraftforge/client/model/animation/IClip.java rename to src/main/java/net/minecraftforge/common/model/animation/IClip.java index 714322a01..4e0ff222a 100644 --- a/src/main/java/net/minecraftforge/client/model/animation/IClip.java +++ b/src/main/java/net/minecraftforge/common/model/animation/IClip.java @@ -1,4 +1,6 @@ -package net.minecraftforge.client.model.animation; +package net.minecraftforge.common.model.animation; + +import net.minecraftforge.common.animation.Event; /** diff --git a/src/main/java/net/minecraftforge/client/model/animation/IJoint.java b/src/main/java/net/minecraftforge/common/model/animation/IJoint.java similarity index 60% rename from src/main/java/net/minecraftforge/client/model/animation/IJoint.java rename to src/main/java/net/minecraftforge/common/model/animation/IJoint.java index 288a0cc4e..4afde2155 100644 --- a/src/main/java/net/minecraftforge/client/model/animation/IJoint.java +++ b/src/main/java/net/minecraftforge/common/model/animation/IJoint.java @@ -1,9 +1,9 @@ -package net.minecraftforge.client.model.animation; +package net.minecraftforge.common.model.animation; import com.google.common.base.Optional; -import net.minecraftforge.client.model.IModelPart; -import net.minecraftforge.client.model.TRSRTransformation; +import net.minecraftforge.common.model.IModelPart; +import net.minecraftforge.common.model.TRSRTransformation; /** * Model part that's a part of the hierarchical skeleton. diff --git a/src/main/java/net/minecraftforge/client/model/animation/IJointClip.java b/src/main/java/net/minecraftforge/common/model/animation/IJointClip.java similarity index 58% rename from src/main/java/net/minecraftforge/client/model/animation/IJointClip.java rename to src/main/java/net/minecraftforge/common/model/animation/IJointClip.java index 27edea0e5..09dc177d5 100644 --- a/src/main/java/net/minecraftforge/client/model/animation/IJointClip.java +++ b/src/main/java/net/minecraftforge/common/model/animation/IJointClip.java @@ -1,6 +1,6 @@ -package net.minecraftforge.client.model.animation; +package net.minecraftforge.common.model.animation; -import net.minecraftforge.client.model.TRSRTransformation; +import net.minecraftforge.common.model.TRSRTransformation; /** * Returns Local joint pose; animation clip for specific model part. diff --git a/src/main/java/net/minecraftforge/client/model/animation/JointClips.java b/src/main/java/net/minecraftforge/common/model/animation/JointClips.java similarity index 86% rename from src/main/java/net/minecraftforge/client/model/animation/JointClips.java rename to src/main/java/net/minecraftforge/common/model/animation/JointClips.java index 945c54f46..8e449a4fd 100644 --- a/src/main/java/net/minecraftforge/client/model/animation/JointClips.java +++ b/src/main/java/net/minecraftforge/common/model/animation/JointClips.java @@ -1,6 +1,6 @@ -package net.minecraftforge.client.model.animation; +package net.minecraftforge.common.model.animation; -import net.minecraftforge.client.model.TRSRTransformation; +import net.minecraftforge.common.model.TRSRTransformation; /** * Various implementations of IJointClip. diff --git a/src/main/java/net/minecraftforge/common/property/Properties.java b/src/main/java/net/minecraftforge/common/property/Properties.java index 243109cc0..1bc1d4f6c 100644 --- a/src/main/java/net/minecraftforge/common/property/Properties.java +++ b/src/main/java/net/minecraftforge/common/property/Properties.java @@ -2,7 +2,7 @@ package net.minecraftforge.common.property; import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyBool; -import net.minecraftforge.client.model.IModelState; +import net.minecraftforge.common.model.IModelState; public class Properties { diff --git a/src/main/java/net/minecraftforge/fml/client/FMLClientHandler.java b/src/main/java/net/minecraftforge/fml/client/FMLClientHandler.java index a782e3042..f1f1200fa 100644 --- a/src/main/java/net/minecraftforge/fml/client/FMLClientHandler.java +++ b/src/main/java/net/minecraftforge/fml/client/FMLClientHandler.java @@ -30,7 +30,6 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.client.gui.Gui; import net.minecraft.client.gui.GuiIngameMenu; -import net.minecraft.client.gui.GuiListWorldSelectionEntry; import net.minecraft.client.gui.GuiMainMenu; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiWorldSelection; @@ -70,7 +69,6 @@ import net.minecraft.util.StringUtils; import net.minecraft.world.WorldSettings; import net.minecraft.world.storage.SaveFormatComparator; import net.minecraft.world.storage.SaveFormatOld; -import net.minecraftforge.client.model.animation.Animation; import net.minecraftforge.fml.client.registry.RenderingRegistry; import net.minecraftforge.fml.common.DummyModContainer; import net.minecraftforge.fml.common.DuplicateModsFoundException; @@ -202,8 +200,6 @@ public class FMLClientHandler implements IFMLSidedHandler return; } - resourceManager.registerReloadListener(Animation.INSTANCE); - FMLCommonHandler.instance().beginLoading(this); try { diff --git a/src/main/resources/forge.exc b/src/main/resources/forge.exc index 01b0f0b6f..6902fcec9 100644 --- a/src/main/resources/forge.exc +++ b/src/main/resources/forge.exc @@ -29,12 +29,12 @@ net/minecraft/server/management/ItemInWorldManager.removeBlock(Lnet/minecraft/ut net/minecraft/client/gui/GuiScreen.drawHoveringText(Ljava/util/List;IILnet/minecraft/client/gui/FontRenderer;)V=|p_146283_1_,p_146283_2_,p_146283_3_,font net/minecraft/block/state/BlockState.(Lnet/minecraft/block/Block;[Lnet/minecraft/block/properties/IProperty;Lcom/google/common/collect/ImmutableMap;)V=|p_i45663_1_,p_i45663_2_,unlistedProperties net/minecraft/client/renderer/entity/RenderItem.applyVanillaTransform(Lnet/minecraft/client/renderer/block/model/ItemTransformVec3f;)V=|p_175034_1_ -net/minecraft/client/renderer/block/model/ModelBakery.bakeModel(Lnet/minecraft/client/renderer/block/model/ModelBlock;Lnet/minecraftforge/client/model/ITransformation;Z)Lnet/minecraft/client/renderer/block/model/IBakedModel;=|p_177578_1_,p_177578_2_,p_177578_3_ -net/minecraft/client/renderer/block/model/ModelBakery.makeBakedQuad(Lnet/minecraft/client/renderer/block/model/BlockPart;Lnet/minecraft/client/renderer/block/model/BlockPartFace;Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;Lnet/minecraft/util/EnumFacing;Lnet/minecraftforge/client/model/ITransformation;Z)Lnet/minecraft/client/renderer/block/model/BakedQuad;=|p_177589_1_,p_177589_2_,p_177589_3_,p_177589_4_,p_177589_5_,p_177589_6_ -net/minecraft/client/renderer/block/model/FaceBakery.makeBakedQuad(Lorg/lwjgl/util/vector/Vector3f;Lorg/lwjgl/util/vector/Vector3f;Lnet/minecraft/client/renderer/block/model/BlockPartFace;Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;Lnet/minecraft/util/EnumFacing;Lnet/minecraftforge/client/model/ITransformation;Lnet/minecraft/client/renderer/block/model/BlockPartRotation;ZZ)Lnet/minecraft/client/renderer/block/model/BakedQuad;=|p_178414_1_,p_178414_2_,p_178414_3_,p_178414_4_,p_178414_5_,p_178414_6_,p_178414_7_,p_178414_8_,p_178414_9_ -net/minecraft/client/renderer/block/model/FaceBakery.makeQuadVertexData(Lnet/minecraft/client/renderer/block/model/BlockPartFace;Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;Lnet/minecraft/util/EnumFacing;[FLnet/minecraftforge/client/model/ITransformation;Lnet/minecraft/client/renderer/block/model/BlockPartRotation;Z)[I=|p_188012_1_,p_188012_2_,p_188012_3_,p_188012_4_,p_188012_5_,p_188012_6_,p_188012_7_ -net/minecraft/client/renderer/block/model/FaceBakery.fillVertexData([IILnet/minecraft/util/EnumFacing;Lnet/minecraft/client/renderer/block/model/BlockFaceUV;[FLnet/minecraft/client/renderer/texture/TextureAtlasSprite;Lnet/minecraftforge/client/model/ITransformation;Lnet/minecraft/client/renderer/block/model/BlockPartRotation;Z)V=|p_188015_1_,p_188015_2_,p_188015_3_,p_188015_4_,p_188015_5_,p_188015_6_,p_188015_7_,p_188015_8_,p_188015_9_ -net/minecraft/client/renderer/block/model/FaceBakery.rotateVertex(Lorg/lwjgl/util/vector/Vector3f;Lnet/minecraft/util/EnumFacing;ILnet/minecraftforge/client/model/ITransformation)I=|p_188011_1_,p_188011_2_,p_188011_3_,p_188011_4_ +net/minecraft/client/renderer/block/model/ModelBakery.bakeModel(Lnet/minecraft/client/renderer/block/model/ModelBlock;Lnet/minecraftforge/common/model/ITransformation;Z)Lnet/minecraft/client/renderer/block/model/IBakedModel;=|p_177578_1_,p_177578_2_,p_177578_3_ +net/minecraft/client/renderer/block/model/ModelBakery.makeBakedQuad(Lnet/minecraft/client/renderer/block/model/BlockPart;Lnet/minecraft/client/renderer/block/model/BlockPartFace;Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;Lnet/minecraft/util/EnumFacing;Lnet/minecraftforge/common/model/ITransformation;Z)Lnet/minecraft/client/renderer/block/model/BakedQuad;=|p_177589_1_,p_177589_2_,p_177589_3_,p_177589_4_,p_177589_5_,p_177589_6_ +net/minecraft/client/renderer/block/model/FaceBakery.makeBakedQuad(Lorg/lwjgl/util/vector/Vector3f;Lorg/lwjgl/util/vector/Vector3f;Lnet/minecraft/client/renderer/block/model/BlockPartFace;Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;Lnet/minecraft/util/EnumFacing;Lnet/minecraftforge/common/model/ITransformation;Lnet/minecraft/client/renderer/block/model/BlockPartRotation;ZZ)Lnet/minecraft/client/renderer/block/model/BakedQuad;=|p_178414_1_,p_178414_2_,p_178414_3_,p_178414_4_,p_178414_5_,p_178414_6_,p_178414_7_,p_178414_8_,p_178414_9_ +net/minecraft/client/renderer/block/model/FaceBakery.makeQuadVertexData(Lnet/minecraft/client/renderer/block/model/BlockPartFace;Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;Lnet/minecraft/util/EnumFacing;[FLnet/minecraftforge/common/model/ITransformation;Lnet/minecraft/client/renderer/block/model/BlockPartRotation;Z)[I=|p_188012_1_,p_188012_2_,p_188012_3_,p_188012_4_,p_188012_5_,p_188012_6_,p_188012_7_ +net/minecraft/client/renderer/block/model/FaceBakery.fillVertexData([IILnet/minecraft/util/EnumFacing;Lnet/minecraft/client/renderer/block/model/BlockFaceUV;[FLnet/minecraft/client/renderer/texture/TextureAtlasSprite;Lnet/minecraftforge/common/model/ITransformation;Lnet/minecraft/client/renderer/block/model/BlockPartRotation;Z)V=|p_188015_1_,p_188015_2_,p_188015_3_,p_188015_4_,p_188015_5_,p_188015_6_,p_188015_7_,p_188015_8_,p_188015_9_ +net/minecraft/client/renderer/block/model/FaceBakery.rotateVertex(Lorg/lwjgl/util/vector/Vector3f;Lnet/minecraft/util/EnumFacing;ILnet/minecraftforge/common/model/ITransformation)I=|p_188011_1_,p_188011_2_,p_188011_3_,p_188011_4_ net/minecraft/item/ItemBlock.setTileEntityNBT(Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/item/ItemStack;Lnet/minecraft/entity/player/EntityPlayer;)Z=|p_179224_0_,p_179224_1_,p_179224_2_,player diff --git a/src/test/java/net/minecraftforge/debug/ModelAnimationDebug.java b/src/test/java/net/minecraftforge/debug/ModelAnimationDebug.java index 07c248117..3cf9a6a76 100644 --- a/src/test/java/net/minecraftforge/debug/ModelAnimationDebug.java +++ b/src/test/java/net/minecraftforge/debug/ModelAnimationDebug.java @@ -29,16 +29,17 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.client.model.ModelLoader; +import net.minecraftforge.client.model.ModelLoaderRegistry; import net.minecraftforge.client.model.animation.Animation; import net.minecraftforge.client.model.animation.AnimationTESR; -import net.minecraftforge.client.model.animation.CapabilityAnimation; -import net.minecraftforge.client.model.animation.Event; -import net.minecraftforge.client.model.animation.ITimeValue; -import net.minecraftforge.client.model.animation.TimeValues.VariableValue; import net.minecraftforge.client.model.b3d.B3DLoader; import net.minecraftforge.client.model.pipeline.VertexLighterSmoothAo; +import net.minecraftforge.common.animation.Event; +import net.minecraftforge.common.animation.ITimeValue; +import net.minecraftforge.common.animation.TimeValues.VariableValue; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ICapabilityProvider; +import net.minecraftforge.common.model.animation.CapabilityAnimation; import net.minecraftforge.common.model.animation.IAnimationStateMachine; import net.minecraftforge.common.property.ExtendedBlockState; import net.minecraftforge.common.property.IUnlistedProperty; @@ -225,7 +226,7 @@ public class ModelAnimationDebug public IAnimationStateMachine load(ResourceLocation location, ImmutableMap parameters) { - return Animation.INSTANCE.load(location, parameters); + return ModelLoaderRegistry.loadASM(location, parameters); } } diff --git a/src/test/java/net/minecraftforge/debug/ModelLoaderRegistryDebug.java b/src/test/java/net/minecraftforge/debug/ModelLoaderRegistryDebug.java index 68488aa29..94bfd2341 100644 --- a/src/test/java/net/minecraftforge/debug/ModelLoaderRegistryDebug.java +++ b/src/test/java/net/minecraftforge/debug/ModelLoaderRegistryDebug.java @@ -40,11 +40,11 @@ import net.minecraft.world.World; import net.minecraftforge.client.model.IModel; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.client.model.ModelLoaderRegistry; -import net.minecraftforge.client.model.TRSRTransformation; import net.minecraftforge.client.model.b3d.B3DLoader; import net.minecraftforge.client.model.obj.OBJLoader; import net.minecraftforge.client.model.obj.OBJModel; import net.minecraftforge.client.model.obj.OBJModel.OBJBakedModel; +import net.minecraftforge.common.model.TRSRTransformation; import net.minecraftforge.common.property.ExtendedBlockState; import net.minecraftforge.common.property.IExtendedBlockState; import net.minecraftforge.common.property.IUnlistedProperty;