public static void applyShape( IShape shape, EntityPlayer player, ArrayList<NBTTagCompound> blockDataNbtList, byte baseRotation) { try { ArrayList<BlockData> blockDataList = new ArrayList<>(); for (NBTTagCompound compound : blockDataNbtList) { BlockData blockData = new BlockData(compound); for (int i = 0; i <= blockData.weight; i++) blockDataList.add(blockData); } int x = Helper.round(player.posX), y = Helper.round(player.posY + 1), z = Helper.round(player.posZ); Collection<PointI> points = shape .rotate(baseRotation) .rotate(baseRotation == -1 ? -1 : Helper.getHeading(player)) .move(x, y, z) .getPoints(); for (PointI p : points) { if (!shape.getReplaceableOnly() || player .worldObj .getBlock(p.getX(), p.getY(), p.getZ()) .isReplaceable(player.worldObj, p.getX(), p.getY(), p.getZ())) { BlockData block = blockDataList.size() == 1 ? blockDataList.get(0) : Helper.getRandomFromSet(blockDataList); Block block1 = Block.getBlockById(block.id); player.worldObj.setBlock(p.getX(), p.getY(), p.getZ(), block1, block.meta, 2); if (block.te != null) { TileEntity tileEntity = TileEntity.createAndLoadEntity(block.te); tileEntity.setWorldObj(player.worldObj); tileEntity.xCoord = p.getX(); tileEntity.yCoord = p.getY(); tileEntity.zCoord = p.getZ(); player.worldObj.setTileEntity(p.getX(), p.getY(), p.getZ(), tileEntity); } } } } catch (BlockData.BannedBlockException e) { ((EntityPlayerMP) player).playerNetServerHandler.kickPlayerFromServer(e.getMessage()); } catch (Exception e) { e.printStackTrace(); Pay2Spawn.getLogger().warn("Error spawning in shape."); Pay2Spawn.getLogger().warn("Shape: " + shape.toString()); Pay2Spawn.getLogger().warn("Player: " + player); Pay2Spawn.getLogger() .warn("BlockData array: " + Arrays.deepToString(blockDataNbtList.toArray())); } }
@SubscribeEvent public void disconnect(FMLNetworkEvent.ClientDisconnectionFromServerEvent event) { Pay2Spawn.reloadDB(); StatusMessage.resetServerStatus(); new Timer() .schedule( new TimerTask() { @Override public void run() { if (!StatusMessage.doesServerHaveMod()) Helper.msg( EnumChatFormatting.RED + NAME + " isn't on the server. No rewards will spawn!"); } }, 5 * 1000); }
@SubscribeEvent public void connectionReceived(FMLNetworkEvent.ServerConnectionFromClientEvent event) { if (!event.isLocal && Pay2Spawn.getConfig().forceP2S) { final String username = ((NetHandlerPlayServer) event.handler).playerEntity.getCommandSenderName(); new Timer() .schedule( new TimerTask() { @Override public void run() { if (!StatusMessage.doesPlayerHaveValidConfig(username)) MinecraftServer.getServer() .getConfigurationManager() .func_152612_a(username) .playerNetServerHandler .kickPlayerFromServer( "Pay2Spawn is required on this server.\nIt needs to be configured properly."); } }, 5 * 1000); } }
private File getFile() { return new File(Pay2Spawn.getFolder(), "Permissions.json"); }