/** * @param player multi-player player * * @return block reach distance of player */ private double getBlockReachDistance_server( final EntityPlayerMP player ) { return player.interactionManager.getBlockReachDistance(); } }
@Override public boolean hasPermission(EntityPlayerMP player, String permission) { ForgeConfiguration configuration = platform.getConfiguration(); return configuration.cheatMode || FMLCommonHandler.instance().getMinecraftServerInstance().getPlayerList().canSendCommands(player.getGameProfile()) || (configuration.creativeEnable && player.interactionManager.getGameType() == GameType.CREATIVE); }
public void extendRange(Entity entity, double amount) { if (entity instanceof EntityPlayerMP) { PlayerInteractionManager mgr = ((EntityPlayerMP) entity).interactionManager; double reach = mgr.getBlockReachDistance(); mgr.setBlockReachDistance(reach + amount); } }
public static void transferPlayerToDimension(EntityPlayerMP player, double x, double y, double z, int dimension, PlayerList manager) { int oldDim = player.dimension; WorldServer worldserver = manager.getServerInstance().getWorld(player.dimension); player.dimension = dimension; WorldServer worldserver1 = manager.getServerInstance().getWorld(player.dimension); player.connection.sendPacket(new SPacketRespawn(player.dimension, player.world.getDifficulty(), player.world.getWorldInfo().getTerrainType(), player.interactionManager.getGameType())); worldserver.removeEntityDangerously(player); if (player.isBeingRidden()) { player.removePassengers(); } if (player.isRiding()) { player.dismountRidingEntity(); } player.isDead = false; transferEntityToWorld(player, worldserver, worldserver1); manager.preparePlayer(player, worldserver); player.connection.setPlayerLocation(x, y, z, player.rotationYaw, player.rotationPitch); player.interactionManager.setWorld(worldserver1); manager.updateTimeAndWeatherForPlayer(player, worldserver1); manager.syncPlayerInventory(player); for (PotionEffect potioneffect : player.getActivePotionEffects()) { player.connection.sendPacket(new SPacketEntityEffect(player.getEntityId(), potioneffect)); } FMLCommonHandler.instance().firePlayerChangedDimensionEvent(player, oldDim, dimension); }
public static boolean placeBlock(@Nonnull World world, @Nonnull BlockPos pos, @Nullable EnumFacing facing, @Nonnull ItemStack stack) { if (!world.isBlockLoaded(pos)) return false; FakePlayer player = new FakePlayer((WorldServer) world, placer); player.setPosition(pos.getX(), pos.getY(), pos.getZ()); player.setHeldItem(EnumHand.MAIN_HAND, stack); player.setSneaking(true); if (!hasEditPermission(pos, player)) return false; if (!world.isBlockLoaded(pos)) return false; if (world.getTileEntity(pos) == null) { if (facing == null) { for (EnumFacing enumFacing : EnumFacing.VALUES) { EnumActionResult result = player.interactionManager.processRightClickBlock( player, world, stack, EnumHand.MAIN_HAND, pos, enumFacing, 0, 0, 0); if (result != EnumActionResult.FAIL) return true; } } else { EnumActionResult result = player.interactionManager.processRightClickBlock( player, world, stack, EnumHand.MAIN_HAND, pos, facing, 0, 0, 0); return result != EnumActionResult.FAIL; } } return false; }
resetProgress(targetPos); if (fakePlayer.get() != null) { return fakePlayer.get().interactionManager.tryHarvestBlock(targetPos);
@Override public void handleServerMessage(EntityPlayerMP player, PacketDigBlock message, MessageContext ctx) { WorldServer world = player.getServer().getWorld(player.dimension); IBlockState state = world.getBlockState(message.pos); switch (message.type) { case CLICK: if (!player.getServer().isBlockProtected(world, message.pos, player)) { player.interactionManager.onBlockClicked(message.pos, message.side); } else { player.connection.sendPacket(new SPacketBlockChange(world, message.pos)); } break; case HARVEST: player.interactionManager.tryHarvestBlock(message.pos); if (state.getMaterial() != Material.AIR) { player.connection.sendPacket(new SPacketBlockChange(world, message.pos)); } break; case CANCEL: player.interactionManager.cancelDestroyingBlock(); if (state.getMaterial() != Material.AIR) { player.connection.sendPacket(new SPacketBlockChange(world, message.pos)); } break; } } }
boolean wasEmpty = fakePlayer.get().getHeldItemMainhand().isEmpty(); EnumActionResult result = fakePlayer.get().interactionManager.processRightClickBlock(fakePlayer.get(), world, fakePlayer.get().getHeldItemMainhand(), EnumHand.MAIN_HAND, targetPos, EnumFacing.UP, .5F, .5F, .5F); result = fakePlayer.get().interactionManager.processRightClick(fakePlayer.get(), world, fakePlayer.get().getHeldItemMainhand(), EnumHand.MAIN_HAND); if (fakePlayer.get().getHeldItemMainhand().getCount() == 0) {
for (int i = 0; i < 10; i++) { if (currentDamageState == -1) { manager.onBlockClicked(pos, direction.getOpposite()); currentDamageState = manager.durabilityRemainingOnBlock; } else { manager.tryHarvestBlock(pos);
@Redirect(method = "processPacket", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/play/INetHandlerPlayServer;processUpdateSign(Lnet/minecraft/network/play/client/CPacketUpdateSign;)V")) public void handleUpdateSignPacket(INetHandlerPlayServer server, CPacketUpdateSign packetIn) { EntityPlayerMP player = ((NetHandlerPlayServer) server).player; INHPServerVW vw = (INHPServerVW) (NetHandlerPlayServer) server; BlockPos packetPos = packetIn.getPosition(); PlayerDataBackup playerBackup = new PlayerDataBackup(player); PhysicsWrapperEntity wrapper = ValkyrienWarfareMod.physicsManager.getObjectManagingPos(player.world, packetPos); if (player.interactionManager.getBlockReachDistance() != vw.dummyBlockReachDist()) { vw.lastGoodBlockReachDist(player.interactionManager.getBlockReachDistance()); } if (wrapper != null) { player.interactionManager.setBlockReachDistance(vw.dummyBlockReachDist()); } if (wrapper != null && wrapper.wrapping.coordTransform != null) { RotationMatrices.applyTransform(wrapper.wrapping.coordTransform.wToLTransform, wrapper.wrapping.coordTransform.wToLRotation, player); server.processUpdateSign(packetIn); RotationMatrices.applyTransform(wrapper.wrapping.coordTransform.lToWTransform, wrapper.wrapping.coordTransform.lToWRotation, player); playerBackup.restorePlayerToBackup(); } else { server.processUpdateSign(packetIn); } player.interactionManager.setBlockReachDistance(vw.lastGoodBlockReachDist()); } }
public static void transferPlayerToDimension(EntityPlayerMP player, int dimension, PlayerList manager) { int oldDim = player.dimension; WorldServer worldserver = manager.getServerInstance().getWorld(player.dimension); player.dimension = dimension; WorldServer worldserver1 = manager.getServerInstance().getWorld(player.dimension); player.connection.sendPacket(new SPacketRespawn(player.dimension, player.world.getDifficulty(), player.world.getWorldInfo().getTerrainType(), player.interactionManager.getGameType())); worldserver.removeEntityDangerously(player); if (player.isBeingRidden()) { player.removePassengers(); } if (player.isRiding()) { player.dismountRidingEntity(); } player.isDead = false; transferEntityToWorld(player, worldserver, worldserver1); manager.preparePlayer(player, worldserver); player.connection.setPlayerLocation(player.posX, player.posY, player.posZ, player.rotationYaw, player.rotationPitch); player.interactionManager.setWorld(worldserver1); manager.updateTimeAndWeatherForPlayer(player, worldserver1); manager.syncPlayerInventory(player); for (PotionEffect potioneffect : player.getActivePotionEffects()) { player.connection.sendPacket(new SPacketEntityEffect(player.getEntityId(), potioneffect)); } FMLCommonHandler.instance().firePlayerChangedDimensionEvent(player, oldDim, dimension); }
private void updatePlantSaplings() { ItemStack sapling = this.getStackInSlot(0); if (this.isSaplingValid(sapling) && targetPos.getY() == this.pos.getY() //only at same level as machine && world.isAirBlock(this.targetPos) && world.isSideSolid(targetPos.down(), EnumFacing.UP)) { if (fakePlayer.get().getHeldItemOffhand().isEmpty()) { fakePlayer.get().setHeldItem(EnumHand.OFF_HAND, sapling); } //player uses the sapling with offhand fakePlayer.get().interactionManager.processRightClickBlock(fakePlayer.get(), world, sapling, EnumHand.OFF_HAND, this.targetPos.down(), EnumFacing.UP, 0.5F, 0.5F, 0.5F); } }
public static int applyMultiBreak(World world, BlockPos blockPos, EntityPlayer harvester, ToolBase self, int size) { int conversions = 0; ItemStack selfStack = harvester.getHeldItem(EnumHand.MAIN_HAND); for (int i = -size; i <= size; i++) { for (int j = -size; j <= size; j++) { for (int k = -size; k <= size; k++) { if(i == 0 && j == 0 && k == 0) continue; BlockPos block = blockPos.add(i, j, k); if(!self.isMinableBlock(world.getBlockState(block), selfStack) || !world.canMineBlockBody(harvester, block) || !((EntityPlayerMP) harvester).interactionManager.tryHarvestBlock(block)) continue; conversions++; } } } return conversions; }
float hitZ = (float) hit.hitVec.z - (float) pos.getZ(); EnumActionResult result = player.interactionManager.processRightClickBlock(player, world, stack, hand, pos, hit.sideHit, hitX, hitY, hitZ); if (result == EnumActionResult.SUCCESS) return MethodResult.result(true, "block"); result = player.interactionManager.processRightClickBlock(player, world, stack, hand, pos, hit.sideHit.getOpposite(), hitX, hitY, hitZ); if (result == EnumActionResult.SUCCESS) return MethodResult.result(true, "block"); EnumActionResult result = player.interactionManager.processRightClick(player, world, stack, hand); if (result == EnumActionResult.SUCCESS) { ItemStack active = player.getActiveItemStack();
protected RayTraceResult raytraceFromEntity(World worldIn, EntityPlayer playerIn, boolean useLiquids) { float f = playerIn.rotationPitch; float f1 = playerIn.rotationYaw; double d0 = playerIn.posX; double d1 = playerIn.posY + (double) playerIn.getEyeHeight(); double d2 = playerIn.posZ; Vec3d vec3d = new Vec3d(d0, d1, d2); float f2 = MathHelper.cos(-f1 * 0.017453292F - (float) Math.PI); float f3 = MathHelper.sin(-f1 * 0.017453292F - (float) Math.PI); float f4 = -MathHelper.cos(-f * 0.017453292F); float f5 = MathHelper.sin(-f * 0.017453292F); float f6 = f3 * f4; float f7 = f2 * f4; double d3 = 5.0D; if(playerIn instanceof net.minecraft.entity.player.EntityPlayerMP) { d3 = ((net.minecraft.entity.player.EntityPlayerMP) playerIn).interactionManager.getBlockReachDistance(); } Vec3d vec3d1 = vec3d.add((double) f6 * d3, (double) f5 * d3, (double) f7 * d3); return worldIn.rayTraceBlocks(vec3d, vec3d1, useLiquids, !useLiquids, false); }
void onFire(ItemStack bow, EntityLivingBase living, boolean infinity, EntityArrow arrow) { if(living instanceof EntityPlayerMP) { ToolCommons.damageItem(bow, 1, living, MANA_PER_DAMAGE); if(((EntityPlayerMP) living).interactionManager.getGameType().isSurvivalOrAdventure() && !infinity) PlayerHelper.consumeAmmo((EntityPlayerMP) living, AMMO_FUNC); } }
@Redirect(method = "processPacket", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/play/INetHandlerPlayServer;processPlayerDigging(Lnet/minecraft/network/play/client/CPacketPlayerDigging;)V")) public void handleDiggingPacket(INetHandlerPlayServer server, CPacketPlayerDigging packetIn) { INHPServerVW vw = (INHPServerVW) (NetHandlerPlayServer) server; vw.checkForPacketEnqueueTrap(packetIn); EntityPlayerMP player = vw.getEntityPlayerFromHandler(); BlockPos packetPos = packetIn.getPosition(); PlayerDataBackup playerBackup = new PlayerDataBackup(player); PhysicsWrapperEntity wrapper = ValkyrienWarfareMod.physicsManager.getObjectManagingPos(player.world, packetPos); if (player.interactionManager.getBlockReachDistance() != vw.dummyBlockReachDist()) { vw.lastGoodBlockReachDist(player.interactionManager.getBlockReachDistance()); } if (wrapper != null) { player.interactionManager.setBlockReachDistance(vw.dummyBlockReachDist()); } if (wrapper != null && wrapper.wrapping.coordTransform != null) { RotationMatrices.applyTransform(wrapper.wrapping.coordTransform.wToLTransform, wrapper.wrapping.coordTransform.wToLRotation, player); server.processPlayerDigging(packetIn); RotationMatrices.applyTransform(wrapper.wrapping.coordTransform.lToWTransform, wrapper.wrapping.coordTransform.lToWRotation, player); playerBackup.restorePlayerToBackup(); } else { server.processPlayerDigging(packetIn); } player.interactionManager.setBlockReachDistance(vw.lastGoodBlockReachDist()); }
player.connection.sendPacket(new SPacketRespawn(player.dimension, player.world.getDifficulty(), player.world.getWorldInfo().getTerrainType(), player.interactionManager.getGameType())); worldOld.removeEntityDangerously(player); playerData.preparePlayer(player, worldOld); player.connection.setPlayerLocation(player.posX, player.posY, player.posZ, player.rotationYaw, player.rotationPitch); player.interactionManager.setWorld(worldNew); playerData.updateTimeAndWeatherForPlayer(player, worldNew); playerData.syncPlayerInventory(player);
@Override public IHarvestResult harvestBlock(@Nonnull IFarmer farm, @Nonnull final BlockPos pos, @Nonnull IBlockState state) { if (!canHarvest(farm, pos, state) || !farm.checkAction(FarmingAction.HARVEST, FarmingTool.HOE)) { return null; } if (!farm.hasTool(FarmingTool.HOE)) { farm.setNotification(FarmNotification.NO_HOE); return null; } final HarvestResult result = new HarvestResult(); final World world = farm.getWorld(); EntityPlayerMP joe = farm.startUsingItem(FarmingTool.HOE); joe.interactionManager.processRightClickBlock(joe, joe.world, joe.getHeldItemMainhand(), EnumHand.MAIN_HAND, pos, EnumFacing.DOWN, 0, 0, 0); NNList.wrap(farm.endUsingItem(FarmingTool.HOE)).apply(new Callback<ItemStack>() { @Override public void apply(@Nonnull ItemStack drop) { result.getDrops().add(new EntityItem(world, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, drop.copy())); } }); farm.registerAction(FarmingAction.HARVEST, FarmingTool.HOE, state, pos); result.getHarvestedBlocks().add(pos); return result; }
resetProgress(targetPos); if (fakePlayer.get() != null) { return fakePlayer.get().interactionManager.tryHarvestBlock(targetPos);