Advertisement
Guest User

ClientProxy

a guest
Apr 2nd, 2016
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.39 KB | None | 0 0
  1. package destinyspork.appliedautomation.proxy;
  2.  
  3. import java.io.IOException;
  4.  
  5. import org.apache.commons.lang3.tuple.Pair;
  6.  
  7. import com.google.common.collect.ImmutableMap;
  8.  
  9. import destinyspork.appliedautomation.AppliedAutomation;
  10. import destinyspork.appliedautomation.client.render.blocks.BlockRenderRegister;
  11. import destinyspork.appliedautomation.client.render.items.ItemRenderRegister;
  12. import destinyspork.appliedautomation.machines.pumpjack.TEPumpJack;
  13. import destinyspork.appliedautomation.machines.pumpjack.TESRPumpJack;
  14. import destinyspork.appliedautomation.override.VanillaOverride;
  15. import destinyspork.appliedautomation.tileentity.EntityChest;
  16. import destinyspork.appliedautomation.tileentity.ITileEntityChest;
  17. import net.minecraft.client.renderer.entity.Render;
  18. import net.minecraft.client.renderer.entity.RenderLiving;
  19. import net.minecraft.client.renderer.entity.RenderManager;
  20. import net.minecraft.client.renderer.texture.TextureMap;
  21. import net.minecraft.util.ResourceLocation;
  22. import net.minecraftforge.client.model.IModel;
  23. import net.minecraftforge.client.model.IModelState;
  24. import net.minecraftforge.client.model.IRetexturableModel;
  25. import net.minecraftforge.client.model.ModelLoaderRegistry;
  26. import net.minecraftforge.client.model.MultiModel;
  27. import net.minecraftforge.client.model.TRSRTransformation;
  28. import net.minecraftforge.client.model.animation.Animation;
  29. import net.minecraftforge.client.model.animation.AnimationModelBase;
  30. import net.minecraftforge.client.model.animation.AnimationTESR;
  31. import net.minecraftforge.client.model.animation.Event;
  32. import net.minecraftforge.client.model.animation.ITimeValue;
  33. import net.minecraftforge.client.model.pipeline.VertexLighterSmoothAo;
  34. import net.minecraftforge.common.MinecraftForge;
  35. import net.minecraftforge.common.model.animation.IAnimationStateMachine;
  36. import net.minecraftforge.fml.client.registry.ClientRegistry;
  37. import net.minecraftforge.fml.client.registry.IRenderFactory;
  38. import net.minecraftforge.fml.client.registry.RenderingRegistry;
  39. import net.minecraftforge.fml.common.Mod.EventHandler;
  40. import net.minecraftforge.fml.common.event.FMLInitializationEvent;
  41. import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
  42. import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
  43. import net.minecraftforge.fml.common.registry.EntityRegistry;
  44.  
  45. public class ClientProxy extends CommonProxy {
  46.  
  47.     @Override
  48.     @EventHandler
  49.     public void preInit(FMLPreInitializationEvent e) {
  50.         super.preInit(e);
  51.        
  52.         ClientRegistry.bindTileEntitySpecialRenderer(ITileEntityChest.class, new AnimationTESR<ITileEntityChest>()
  53.             {
  54.                 @Override
  55.                 public void handleEvents(ITileEntityChest chest, float time, Iterable<Event> pastEvents){
  56.                     chest.handleEvents(time, pastEvents);
  57.                 }
  58.             }
  59.                 );
  60.         String entityName = "appliedautomation:entity_chest";
  61.         EntityRegistry.registerModEntity(EntityChest.class, entityName, 0, AppliedAutomation.instance, 64, 20, true, 0xFFAAAA00, 0xFFDDDD00);
  62.         RenderingRegistry.registerEntityRenderingHandler(EntityChest.class, new IRenderFactory<EntityChest>(){
  63.             public Render<EntityChest> createRenderFor(RenderManager manager){
  64.                 try {
  65.                     IModel base = ModelLoaderRegistry.getModel(new ResourceLocation("appliedautomation", "block/engine"));
  66.                     IModel ring = ModelLoaderRegistry.getModel(new ResourceLocation("appliedautomation", "block/engine_ring"));
  67.                     ImmutableMap<String, String> textures = ImmutableMap.of(
  68.                             "base", "blocks/stone",
  69.                             "front", "blocks/log_oak",
  70.                             "chamber", "blocks/redstone_block",
  71.                             "trunk", "blocks/end_stone"
  72.                             );
  73.                     if(base instanceof IRetexturableModel){
  74.                         base = ((IRetexturableModel)base).retexture(textures);
  75.                     }
  76.                     if(ring instanceof IRetexturableModel){
  77.                         ring = ((IRetexturableModel)ring).retexture(textures);
  78.                     }
  79.                     IModel model = new MultiModel(
  80.                             new ResourceLocation("appliedautomation", "builtin/engine"),
  81.                             ring,
  82.                             TRSRTransformation.identity(),
  83.                             ImmutableMap.of(
  84.                                     "base", Pair.<IModel, IModelState>of(base, TRSRTransformation.identity())
  85.                                     )
  86.                             );
  87.                     return new RenderLiving<EntityChest>(manager, new AnimationModelBase<EntityChest>(model, new VertexLighterSmoothAo()){
  88.                         @Override
  89.                         public void handleEvents(EntityChest chest, float time,Iterable<Event> pastEvents){
  90.                             chest.handleEvents(time, pastEvents);
  91.                         }
  92.                     }, 0.5f){
  93.                         protected ResourceLocation getEntityTexture(EntityChest entity){
  94.                             return TextureMap.locationBlocksTexture;
  95.                         }
  96.                     };
  97.                 }
  98.                 catch(IOException e){
  99.                     String i = new ResourceLocation("appliedautomation", "block/engine").getResourceDomain();
  100.                     System.out.println(i);
  101.                     throw new RuntimeException(e);
  102.                 }
  103.             }
  104.         });    
  105.     }
  106.    
  107.     public static IAnimationStateMachine load(ResourceLocation location, ImmutableMap<String, ITimeValue> parameters){
  108.         return Animation.INSTANCE.load(location, parameters);
  109.     }
  110.    
  111.  
  112.     @Override
  113.     public void init(FMLInitializationEvent e) {
  114.         super.init(e);
  115.  
  116.         // register block & item registers
  117.         ItemRenderRegister.registerItemRenderer();
  118.         BlockRenderRegister.registerBlockRenderer();
  119.  
  120.         // register TileEntities
  121.         ClientRegistry.bindTileEntitySpecialRenderer(TEPumpJack.class, new TESRPumpJack());
  122.         MinecraftForge.EVENT_BUS.register(new VanillaOverride());
  123.        
  124.     }
  125.  
  126.     @Override
  127.     public void postInit(FMLPostInitializationEvent e) {
  128.         super.postInit(e);
  129.  
  130.     }
  131. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement