Advertisement
Naitenne

ModelTrackDebug

Jul 31st, 2016
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.38 KB | None | 0 0
  1. package net.railsofwar.row.tracks;
  2.  
  3.  
  4. import com.google.common.base.Function;
  5. import com.google.common.collect.ImmutableMap;
  6. import com.google.common.collect.Lists;
  7. import net.minecraft.block.state.IBlockState;
  8. import net.minecraft.client.Minecraft;
  9. import net.minecraft.client.renderer.block.model.*;
  10. import net.minecraft.client.renderer.texture.TextureAtlasSprite;
  11. import net.minecraft.util.EnumFacing;
  12. import net.minecraft.util.ResourceLocation;
  13. import net.minecraftforge.client.model.*;
  14. import net.minecraftforge.client.model.obj.OBJModel;
  15. import net.minecraftforge.common.model.IModelState;
  16. import net.minecraftforge.common.model.TRSRTransformation;
  17. import net.minecraftforge.common.property.IExtendedBlockState;
  18.  
  19. import javax.annotation.Nullable;
  20. import javax.vecmath.Quat4f;
  21. import javax.vecmath.Vector3f;
  22. import java.util.Collections;
  23. import java.util.List;
  24.  
  25. public class ModelTrack implements IBakedModel {
  26.  
  27.     private IBakedModel defaultModel;
  28.     public static final ModelResourceLocation modelResourceLocation
  29.             = new ModelResourceLocation("row:blockTrack");
  30.  
  31.     public ModelTrack(IBakedModel defaultModel) {
  32.         super();
  33.         this.defaultModel = defaultModel;
  34.     }
  35.  
  36.     public final float[][] states = new float[][]{{0.5F, 0.0F, 0.5F}};
  37.  
  38.     @Override
  39.     public List<BakedQuad> getQuads(@Nullable IBlockState blockState, @Nullable EnumFacing side, long rand) {
  40.         if (side != null) return Collections.emptyList();
  41.         assert IExtendedBlockState.class.isAssignableFrom(blockState.getClass());
  42.         IModel model = null;
  43.         try {
  44.             model = ModelLoaderRegistry.getModel(new ResourceLocation("row:block/blockTrack.obj"));
  45.             model = ((IRetexturableModel)model)
  46.                     .retexture(ImmutableMap.of("#None", "row:block/blockTrack"));
  47.             //model = ((IRetexturableModel) ((IModelCustomData) model).process(ImmutableMap.of("flip-v", "true")))
  48.             //      .retexture(ImmutableMap.of("#None", "row:block/blockTrack"));
  49.             System.out.println("OLOLO ROW TEXTURE = " + Minecraft.getMinecraft().getTextureMapBlocks().getAtlasSprite("row:block/blockTrack"));
  50.             //model = ((IModelCustomData) model).process(ImmutableMap.of("ambientocclusion", "false"));
  51.         } catch (Exception e) {
  52.             e.printStackTrace();
  53.         }
  54.  
  55.         float ang1 = (float) Math.toRadians(90F);
  56.         float a1 = (float) Math.sin(ang1 / 2.0F);
  57.         float w1 = (float) Math.cos(ang1 / 2.0F);
  58.         IModelState modelState = new OBJModel.OBJState(
  59.                 Lists.newArrayList(OBJModel.Group.ALL),
  60.                 true,
  61.                 new TRSRTransformation(
  62.                         new Vector3f(.5F, 0F, .5F),
  63.                         new Quat4f(0F * a1, 1F * a1, 0F * a1, w1),
  64.                         new Vector3f(1.0F, 1.0F, 1.0F),
  65.                         null));
  66.  
  67.         for (ResourceLocation loc : model.getTextures()){
  68.             System.out.println("ROW LOADED MODEL TEXTURES " + Minecraft.getMinecraft().getTextureMapBlocks().getAtlasSprite(loc.toString()));
  69.         }
  70.         System.out.println("ROW DEFAULT MODEL TEXTURE " + defaultModel.getParticleTexture().toString());
  71.  
  72.  
  73.         if (model == null)
  74.             return Collections.emptyList();
  75.         else{
  76.  
  77.             IBakedModel bakedModel = model.bake(modelState, Attributes.DEFAULT_BAKED_FORMAT, ModelLoader.defaultTextureGetter());
  78.             List<BakedQuad> quads = bakedModel.getQuads(blockState, side, rand);
  79.             List<BakedQuad> defaultQuads = defaultModel.getQuads(blockState, side, rand);
  80.             for (BakedQuad quad : quads){
  81.                 System.out.println("ROW LOADED QUADS TEXTURES " + quad.getSprite());
  82.             }
  83.             for (BakedQuad quad : defaultQuads){
  84.                 System.out.println("ROW DEFAULT QUADS TEXTURES " + quad.getSprite());
  85.             }
  86.             //return defaultModel.getQuads(blockState, side, rand);
  87.             return quads;
  88.             /*
  89.             return model.bake(modelState, Attributes.DEFAULT_BAKED_FORMAT, new Function<ResourceLocation, TextureAtlasSprite>() {
  90.  
  91.                 @Override
  92.                 public TextureAtlasSprite apply(ResourceLocation location) {
  93.                     Minecraft mc = Minecraft.getMinecraft();
  94.                     return mc.getTextureMapBlocks().getAtlasSprite(location.toString());
  95.                 }
  96.  
  97.             }).getQuads(blockState, side, rand);
  98.             */
  99.         }
  100.     }
  101.  
  102.     @Override
  103.     public TextureAtlasSprite getParticleTexture() {
  104.         return defaultModel.getParticleTexture();
  105.     }
  106.  
  107.     @Override
  108.     public boolean isAmbientOcclusion() {
  109.         return false;
  110.     }
  111.  
  112.     @Override
  113.     public boolean isGui3d() {
  114.         return false;
  115.     }
  116.  
  117.     @Override
  118.     public boolean isBuiltInRenderer() {
  119.         return false;
  120.     }
  121.  
  122.     @Override
  123.     public ItemCameraTransforms getItemCameraTransforms() {
  124.         return null;
  125.     }
  126.  
  127.     @Override
  128.     public ItemOverrideList getOverrides() {
  129.         return null;
  130.     }
  131. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement