Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class CapabilityListener{
- private static final ResourceLocation RLToolTrack = new ResourceLocation(RoW.modID, "capToolTrack");
- @SubscribeEvent
- public void on(AttachCapabilitiesEvent<Entity> event){
- if(event.getObject() instanceof EntityPlayer)
- event.addCapability(RLToolTrack, new ToolTrackProvider());
- }
- @SubscribeEvent
- public void on(PlayerInteractEvent.RightClickBlock event){
- if(event.getHand() == EnumHand.OFF_HAND || event.getItemStack() == null || !(event.getItemStack().getItem() instanceof ItemTrackTool))
- return;
- EntityPlayer player = event.getEntityPlayer();
- World world = player.world;
- ItemStack stack = player.getHeldItemMainhand();
- if(player != null && player.hasCapability(ToolTrackProvider.CAP_TOOL_TRACK, null)){
- event.setCanceled(true);
- CapabilityToolTrack.IToolTrackCapability cap = player.getCapability(ToolTrackProvider.CAP_TOOL_TRACK, null);
- int raise = cap.scalarB();
- if(!cap.doneFirst()){
- //if(!world.isRemote){
- cap.setDone(true);
- if(world.getBlockState(event.getPos()).getBlock().isReplaceable(world, event.getPos()))
- cap.setPos(event.getPos());
- else
- cap.setPos(event.getPos().up());
- //}
- }else{
- BlockPos p1 = cap.getOrigin();
- BlockPos p2 = event.getPos();
- if(!world.getBlockState(p2).getBlock().isReplaceable(world, p2)) p2 = p2.up();
- if(p2.getY() != p1.getY()) return;
- /* ----- block placement code (!isRemote check for placement in other classes) ----- */
- //if(!world.isRemote){
- cap.setDone(false);
- cap.setScalarB(0);
- cap.setInverse(false);
- //}
- }
- }
- }
- @SideOnly(Side.CLIENT)
- @SubscribeEvent
- public void on(RenderWorldLastEvent event){
- if(FMLClientHandler.instance().getClient().gameSettings.thirdPersonView == 0)
- render(FMLClientHandler.instance().getClientPlayerEntity(), event.getPartialTicks());
- }
- @SideOnly(Side.CLIENT)
- @SubscribeEvent
- public void on(RenderPlayerEvent.Pre event){
- render(event.getEntityPlayer(), event.getPartialRenderTick());
- }
- @SideOnly(Side.CLIENT)
- private static void render(EntityPlayer player, float tick){
- World world = player.world;
- Minecraft m = Minecraft.getMinecraft();
- ItemStack stack = player.getHeldItemMainhand();
- if(m.player != player) return;
- if(player.getRidingEntity() == null
- && stack != null
- && stack.getItem() instanceof ItemTrackTool
- && player.hasCapability(ToolTrackProvider.CAP_TOOL_TRACK, null)){
- CapabilityToolTrack.IToolTrackCapability cap = player.getCapability(ToolTrackProvider.CAP_TOOL_TRACK, null);
- if(!cap.doneFirst()) return;
- BlockPos p1 = cap.getOrigin();
- int raise = cap.scalarB();
- if(m.objectMouseOver != null && m.objectMouseOver.typeOfHit == RayTraceResult.Type.BLOCK && m.objectMouseOver.getBlockPos() != null){
- BlockPos p2 = m.objectMouseOver.getBlockPos();
- /* ----- render code ----- */
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement