Guest User

Untitled

a guest
Apr 17th, 2016
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.86 KB | None | 0 0
  1. package com.webs.legouni_craft.lucmod;
  2.  
  3. import java.util.Collection;
  4. import java.util.HashMap;
  5. import java.util.List;
  6. import java.util.Map;
  7.  
  8. import com.google.common.base.Function;
  9. import com.google.common.collect.ImmutableList;
  10.  
  11. import net.minecraft.block.state.IBlockState;
  12. import net.minecraft.client.Minecraft;
  13. import net.minecraft.client.renderer.ItemModelMesher;
  14. import net.minecraft.client.renderer.block.model.BakedQuad;
  15. import net.minecraft.client.renderer.block.model.IBakedModel;
  16. import net.minecraft.client.renderer.block.model.ItemCameraTransforms;
  17. import net.minecraft.client.renderer.block.model.ItemOverride;
  18. import net.minecraft.client.renderer.block.model.ItemOverrideList;
  19. import net.minecraft.client.renderer.block.model.ModelManager;
  20. import net.minecraft.client.renderer.texture.TextureAtlasSprite;
  21. import net.minecraft.client.renderer.vertex.VertexFormat;
  22. import net.minecraft.client.resources.IResourceManager;
  23. import net.minecraft.entity.EntityLivingBase;
  24. import net.minecraft.item.Item;
  25. import net.minecraft.item.ItemStack;
  26. import net.minecraft.util.EnumFacing;
  27. import net.minecraft.util.ResourceLocation;
  28. import net.minecraft.world.World;
  29. import net.minecraftforge.client.MinecraftForgeClient;
  30. import net.minecraftforge.client.model.ICustomModelLoader;
  31. import net.minecraftforge.client.model.IModel;
  32. import net.minecraftforge.client.model.ModelLoader;
  33. import net.minecraftforge.client.model.ModelLoaderRegistry;
  34. import net.minecraftforge.common.MinecraftForge;
  35. import net.minecraftforge.common.model.IModelState;
  36. import net.minecraftforge.common.model.TRSRTransformation;
  37.  
  38. public class CustomModelLoader implements ICustomModelLoader {
  39.  
  40.     @Override
  41.     public void onResourceManagerReload(IResourceManager resourceManager) {
  42.  
  43.     }
  44.  
  45.     @Override
  46.     public boolean accepts(ResourceLocation modelLocation) {
  47.         if (modelLocation.getResourcePath().equals("models/item/diamond_sword"))
  48.             return true;
  49.         // System.out.println(modelLocation.getResourcePath());
  50.         return false;
  51.     }
  52.  
  53.     @Override
  54.     public IModel loadModel(ResourceLocation modelLocation) throws Exception {
  55.         return new TestModel();
  56.     }
  57.  
  58.     public static class TestModel implements IModel {
  59.  
  60.         private IBakedModel getDummyModel() {
  61.             return new DummyBakedModel(Item.getByNameOrId("minecraft:diamond_sword"), new TestBakedModel());
  62.         }
  63.  
  64.         private IModel getItemModel() {
  65.             try {
  66.                 return ModelLoaderRegistry.getModel(new ResourceLocation("models/item/diamond_sword"));
  67.             } catch (Exception e) {
  68.                 // TODO Auto-generated catch block
  69.                 e.printStackTrace();
  70.             }
  71.             return null;
  72.         }
  73.  
  74.         @Override
  75.         public Collection<ResourceLocation> getDependencies() {
  76.             return ImmutableList.<ResourceLocation>of();
  77.         }
  78.  
  79.         @Override
  80.         public Collection<ResourceLocation> getTextures() {
  81.             return ImmutableList.<ResourceLocation>of();
  82.         }
  83.  
  84.         @Override
  85.         public IBakedModel bake(IModelState state, VertexFormat format,
  86.                 Function<ResourceLocation, TextureAtlasSprite> bakedTextureGetter) {
  87.             return getDummyModel();
  88.         }
  89.  
  90.         @Override
  91.         public IModelState getDefaultState() {
  92.             return TRSRTransformation.identity();
  93.         }
  94.     }
  95.    
  96.     public static class DummyBakedModel implements IBakedModel {
  97.  
  98.         private Item original;
  99.         private IBakedModel originalModel;
  100.         private ItemOverrideList overrides;
  101.  
  102.         public DummyBakedModel(Item original, ItemOverrideList overrides) {
  103.             this.original = original;
  104.             this.overrides = overrides;
  105.         }
  106.  
  107.         @Override
  108.         public List<BakedQuad> getQuads(IBlockState state, EnumFacing side, long rand) {
  109.             checkForModelNull();
  110.             return originalModel.getQuads(state, side, rand);
  111.         }
  112.  
  113.         private void checkForModelNull() {
  114.             if (originalModel != null)
  115.                 return;
  116.             ItemModelMesher mesher = Minecraft.getMinecraft().getRenderItem().getItemModelMesher();
  117.             originalModel = mesher.getItemModel(new ItemStack(original));
  118.         }
  119.  
  120.         @Override
  121.         public boolean isAmbientOcclusion() {
  122.             return false;
  123.         }
  124.  
  125.         @Override
  126.         public boolean isGui3d() {
  127.             return false;
  128.         }
  129.  
  130.         @Override
  131.         public boolean isBuiltInRenderer() {
  132.             checkForModelNull();
  133.             return originalModel.isBuiltInRenderer();
  134.         }
  135.  
  136.         @Override
  137.         public TextureAtlasSprite getParticleTexture() {
  138.             checkForModelNull();
  139.             return originalModel.getParticleTexture();
  140.         }
  141.  
  142.         @SuppressWarnings("deprecation")
  143.         @Override
  144.         public ItemCameraTransforms getItemCameraTransforms() {
  145.             return null;
  146.         }
  147.  
  148.         @Override
  149.         public ItemOverrideList getOverrides() {
  150.             checkForModelNull();
  151.             return overrides;
  152.         }
  153.     }
  154.  
  155.     public static class TestBakedModel extends ItemOverrideList {
  156.  
  157.         public TestBakedModel() {
  158.             super(ImmutableList.<ItemOverride> of());
  159.         }
  160.  
  161.         @Override
  162.         public IBakedModel handleItemState(IBakedModel originalModel, ItemStack stack, World world,
  163.                 EntityLivingBase entity) {
  164.             if (stack.getDisplayName().equals("Apple")) {
  165.                 /*
  166.                  * OBJModel model; try { model = (OBJModel)
  167.                  * OBJLoader.INSTANCE.loadModel(new ResourceLocation("apple"));
  168.                  * VertexFormat format = new VertexFormat(); model.bake(null,
  169.                  * format, Functions.forMap(getTextures())); } catch (Exception
  170.                  * e) { // TODO Auto-generated catch block e.printStackTrace();
  171.                  * }
  172.                  */
  173.  
  174.                 try {
  175.                     ItemModelMesher mesher = LUCMod.getMesher();
  176.                     return mesher.getItemModel(new ItemStack(Item.getByNameOrId("minecraft:apple")));
  177.                 } catch (Exception e) {
  178.                     // TODO Auto-generated catch block
  179.                     e.printStackTrace();
  180.                 }
  181.             } else {
  182.                 try {
  183.                     ItemModelMesher mesher = LUCMod.getMesher();
  184.                     return mesher.getItemModel(new ItemStack(Item.getByNameOrId("minecraft:potato")));
  185.                 } catch (Exception e) {
  186.                     e.printStackTrace();
  187.                 }
  188.             }
  189.  
  190.             return null;
  191.         }
  192.  
  193.         public Map<ResourceLocation, TextureAtlasSprite> getTextures() {
  194.             Map<ResourceLocation, TextureAtlasSprite> textures = new HashMap<ResourceLocation, TextureAtlasSprite>();
  195.             return textures;
  196.         }
  197.     }
  198. }
Advertisement
Add Comment
Please, Sign In to add comment