Advertisement
Naitenne

Untitled

Dec 25th, 2018
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.90 KB | None | 0 0
  1. public class CapabilityListener{
  2.     private static final ResourceLocation RLToolTrack = new ResourceLocation(RoW.modID, "capToolTrack");
  3.  
  4.     @SubscribeEvent
  5.     public void on(AttachCapabilitiesEvent<Entity> event){
  6.         if(event.getObject() instanceof EntityPlayer)
  7.             event.addCapability(RLToolTrack, new ToolTrackProvider());
  8.     }
  9.  
  10.     @SubscribeEvent
  11.     public void on(PlayerInteractEvent.RightClickBlock event){
  12.         if(event.getHand() == EnumHand.OFF_HAND || event.getItemStack() == null || !(event.getItemStack().getItem() instanceof ItemTrackTool))
  13.             return;
  14.         EntityPlayer player = event.getEntityPlayer();
  15.         World world = player.world;
  16.         ItemStack stack = player.getHeldItemMainhand();
  17.         if(player != null && player.hasCapability(ToolTrackProvider.CAP_TOOL_TRACK, null)){
  18.             event.setCanceled(true);
  19.             CapabilityToolTrack.IToolTrackCapability cap = player.getCapability(ToolTrackProvider.CAP_TOOL_TRACK, null);
  20.             int raise = cap.scalarB();
  21.             if(!cap.doneFirst()){
  22.                 //if(!world.isRemote){
  23.                     cap.setDone(true);
  24.                     if(world.getBlockState(event.getPos()).getBlock().isReplaceable(world, event.getPos()))
  25.                         cap.setPos(event.getPos());
  26.                     else
  27.                         cap.setPos(event.getPos().up());
  28.                 //}
  29.             }else{
  30.                 BlockPos p1 = cap.getOrigin();
  31.                 BlockPos p2 = event.getPos();
  32.                 if(!world.getBlockState(p2).getBlock().isReplaceable(world, p2)) p2 = p2.up();
  33.                 if(p2.getY() != p1.getY()) return;
  34.                 /* ----- block placement code (!isRemote check for placement in other classes) ----- */
  35.                 //if(!world.isRemote){
  36.                     cap.setDone(false);
  37.                     cap.setScalarB(0);
  38.                     cap.setInverse(false);
  39.                 //}
  40.             }
  41.         }
  42.     }
  43.  
  44.     @SideOnly(Side.CLIENT)
  45.     @SubscribeEvent
  46.     public void on(RenderWorldLastEvent event){
  47.         if(FMLClientHandler.instance().getClient().gameSettings.thirdPersonView == 0)
  48.             render(FMLClientHandler.instance().getClientPlayerEntity(), event.getPartialTicks());
  49.     }
  50.  
  51.     @SideOnly(Side.CLIENT)
  52.     @SubscribeEvent
  53.     public void on(RenderPlayerEvent.Pre event){
  54.         render(event.getEntityPlayer(), event.getPartialRenderTick());
  55.     }
  56.  
  57.     @SideOnly(Side.CLIENT)
  58.     private static void render(EntityPlayer player, float tick){
  59.         World world = player.world;
  60.         Minecraft m = Minecraft.getMinecraft();
  61.         ItemStack stack = player.getHeldItemMainhand();
  62.         if(m.player != player) return;
  63.         if(player.getRidingEntity() == null
  64.                 && stack != null
  65.                 && stack.getItem() instanceof ItemTrackTool
  66.                 && player.hasCapability(ToolTrackProvider.CAP_TOOL_TRACK, null)){
  67.             CapabilityToolTrack.IToolTrackCapability cap = player.getCapability(ToolTrackProvider.CAP_TOOL_TRACK, null);
  68.             if(!cap.doneFirst()) return;
  69.             BlockPos p1 = cap.getOrigin();
  70.             int raise = cap.scalarB();
  71.             if(m.objectMouseOver != null && m.objectMouseOver.typeOfHit == RayTraceResult.Type.BLOCK && m.objectMouseOver.getBlockPos() != null){
  72.                 BlockPos p2 = m.objectMouseOver.getBlockPos();
  73.                 /* ----- render code ----- */
  74.             }
  75.         }
  76.     }
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement