Advertisement
Guest User

Untitled

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