diff --git a/pom.xml b/pom.xml index 703906c..f800c25 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ me.totalfreedom totalfreedom - 5.0.1 + 5.0.2 jar @@ -77,13 +77,13 @@ org.projectlombok lombok - 1.16.6 + 1.16.16 org.spigotmc spigot-api - 1.12-pre5-SNAPSHOT + 1.13-R0.1-SNAPSHOT compile diff --git a/src/main/java/me/totalfreedom/totalfreedommod/FrontDoor.java b/src/main/java/me/totalfreedom/totalfreedommod/FrontDoor.java index 3e16820..56c0ae0 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/FrontDoor.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/FrontDoor.java @@ -463,7 +463,7 @@ public class FrontDoor extends FreedomService continue; } - block.setType(Material.SIGN_POST); + block.setType(Material.SIGN); org.bukkit.block.Sign sign = (org.bukkit.block.Sign) block.getState(); org.bukkit.material.Sign signData = (org.bukkit.material.Sign) sign.getData(); @@ -541,7 +541,8 @@ public class FrontDoor extends FreedomService FUtil.adminAction("FrontDoor", "Caging " + player.getName() + " in PURE_DARTH", true); Location targetPos = player.getLocation().clone().add(0, 1, 0); - playerdata.getCageData().cage(targetPos, Material.SKULL, Material.AIR); + playerdata.getCageData().cage(targetPos, Material.SKELETON_SKULL, Material.AIR); + break; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/ServerInterface.java b/src/main/java/me/totalfreedom/totalfreedommod/ServerInterface.java index 90df9ed..117eda5 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/ServerInterface.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/ServerInterface.java @@ -6,7 +6,7 @@ import me.totalfreedom.totalfreedommod.util.FUtil; public class ServerInterface extends FreedomService { - public static final String COMPILE_NMS_VERSION = "v1_12_R1"; + public static final String COMPILE_NMS_VERSION = "v1_13_R1"; public ServerInterface(TotalFreedomMod plugin) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/blocking/BlockBlocker.java b/src/main/java/me/totalfreedom/totalfreedommod/blocking/BlockBlocker.java index bd469ed..ede4374 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/blocking/BlockBlocker.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/blocking/BlockBlocker.java @@ -39,7 +39,6 @@ public class BlockBlocker extends FreedomService switch (event.getBlockPlaced().getType()) { case LAVA: - case STATIONARY_LAVA: { if (ConfigEntry.ALLOW_LAVA_PLACE.getBoolean()) { @@ -57,7 +56,6 @@ public class BlockBlocker extends FreedomService break; } case WATER: - case STATIONARY_WATER: { if (ConfigEntry.ALLOW_WATER_PLACE.getBoolean()) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/blocking/InteractBlocker.java b/src/main/java/me/totalfreedom/totalfreedommod/blocking/InteractBlocker.java index 30dec0d..bf58627 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/blocking/InteractBlocker.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/blocking/InteractBlocker.java @@ -83,7 +83,7 @@ public class InteractBlocker extends FreedomService break; } - case EXPLOSIVE_MINECART: + case TNT_MINECART: { if (ConfigEntry.ALLOW_TNT_MINECARTS.getBoolean()) { @@ -97,7 +97,6 @@ public class InteractBlocker extends FreedomService } case SIGN: - case SIGN_POST: case WALL_SIGN: { player.sendMessage(ChatColor.GRAY + "Sign interaction is currently disabled."); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/caging/CageData.java b/src/main/java/me/totalfreedom/totalfreedommod/caging/CageData.java index 53e4c90..3aa515c 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/caging/CageData.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/caging/CageData.java @@ -165,7 +165,7 @@ public class CageData final Block block = center.getRelative(xOffset, yOffset, zOffset); - if (material != Material.SKULL) + if (material != Material.SKELETON_SKULL) { // Glowstone light if (material != Material.GLASS && xOffset == 0 && yOffset == 2 && zOffset == 0) @@ -184,7 +184,7 @@ public class CageData continue; } - block.setType(Material.SKULL); + block.setType(Material.SKELETON_SKULL); final Skull skull = (Skull) block.getState(); skull.setSkullType(SkullType.PLAYER); skull.setOwner("Prozza"); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java index 3c2d466..a981223 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java @@ -70,7 +70,7 @@ public class Command_cage extends FreedomCommand { if ("darth".equalsIgnoreCase(args[1])) { - outerMaterial = Material.SKULL; + outerMaterial = Material.SKELETON_SKULL; } else if (Material.matchMaterial(args[1]) != null) { @@ -79,24 +79,12 @@ public class Command_cage extends FreedomCommand } } - if (args.length >= 3) - { - if (args[2].equalsIgnoreCase("water")) - { - innerMaterial = Material.STATIONARY_WATER; - } - else if (args[2].equalsIgnoreCase("lava")) - { - innerMaterial = Material.STATIONARY_LAVA; - } - } - Location targetPos = player.getLocation().clone().add(0, 1, 0); playerdata.getCageData().cage(targetPos, outerMaterial, innerMaterial); player.setGameMode(GameMode.SURVIVAL); - if (outerMaterial != Material.SKULL) + if (outerMaterial != Material.SKELETON_SKULL) { FUtil.adminAction(sender.getName(), "Caging " + player.getName(), true); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_dispfill.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_dispfill.java index 8d0e12e..d877b05 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_dispfill.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_dispfill.java @@ -44,16 +44,7 @@ public class Command_dispfill extends FreedomCommand for (final String searchItem : itemsRaw) { Material material = Material.matchMaterial(searchItem); - if (material == null) - { - try - { - material = DepreciationAggregator.getMaterial(Integer.parseInt(searchItem)); - } - catch (NumberFormatException ex) - { - } - } + if (material != null) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_mp44.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_mp44.java index 97cf6ee..6f34ab2 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_mp44.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_mp44.java @@ -38,7 +38,7 @@ public class Command_mp44 extends FreedomCommand msg("mp44 is ARMED! Left click with gunpowder to start firing, left click again to quit.", ChatColor.GREEN); msg("Type /mp44 sling to disable. -by Madgeek1450", ChatColor.GREEN); - playerSender.getEquipment().setItemInMainHand(new ItemStack(Material.SULPHUR, 1)); + playerSender.getEquipment().setItemInMainHand(new ItemStack(Material.GUNPOWDER, 1)); } else { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ro.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ro.java index 40cdb49..202a920 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ro.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ro.java @@ -33,16 +33,7 @@ public class Command_ro extends FreedomCommand for (String materialName : StringUtils.split(args[0], ",")) { Material fromMaterial = Material.matchMaterial(materialName); - if (fromMaterial == null) - { - try - { - fromMaterial = DepreciationAggregator.getMaterial(Integer.parseInt(materialName)); - } - catch (NumberFormatException ex) - { - } - } + if (fromMaterial == null || fromMaterial == Material.AIR || !fromMaterial.isBlock()) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setlever.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setlever.java index 27df9e0..3abfb5e 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setlever.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setlever.java @@ -7,9 +7,11 @@ import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.World; import org.bukkit.block.Block; +import org.bukkit.block.BlockState; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.bukkit.material.Lever; @CommandPermissions(level = Rank.NON_OP, source = SourceType.BOTH) @CommandParameters(description = "Set the on/off state of the lever at position x, y, z in world 'worldname'.", usage = "/ ") @@ -63,10 +65,11 @@ public class Command_setlever extends FreedomCommand if (targetBlock.getType() == Material.LEVER) { - org.bukkit.material.Lever lever = DepreciationAggregator.makeLeverWithData(DepreciationAggregator.getData_Block(targetBlock)); + BlockState state = targetBlock.getState(); + Lever lever = (Lever) state.getData(); lever.setPowered(leverOn); - DepreciationAggregator.setData_Block(targetBlock, DepreciationAggregator.getData_MaterialData(lever)); - targetBlock.getState().update(); + state.setData(lever); + state.update(); } else { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_whohas.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_whohas.java index 9cc2e25..a4dac85 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_whohas.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_whohas.java @@ -3,7 +3,6 @@ package me.totalfreedom.totalfreedommod.command; import java.util.ArrayList; import java.util.List; import me.totalfreedom.totalfreedommod.rank.Rank; -import me.totalfreedom.totalfreedommod.util.DepreciationAggregator; import org.apache.commons.lang3.StringUtils; import org.bukkit.ChatColor; import org.bukkit.Material; @@ -28,20 +27,10 @@ public class Command_whohas extends FreedomCommand final String materialName = args[0]; Material material = Material.matchMaterial(materialName); - if (material == null) - { - try - { - material = DepreciationAggregator.getMaterial(Integer.parseInt(materialName)); - } - catch (NumberFormatException ex) - { - } - } if (material == null) { - msg("Invalid block: " + materialName, ChatColor.RED); + msg("Invalid item: " + materialName, ChatColor.RED); return true; } @@ -70,4 +59,4 @@ public class Command_whohas extends FreedomCommand return true; } -} +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java b/src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java index 076e3ae..ce995ea 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java @@ -56,7 +56,7 @@ public class ItemFun extends FreedomService switch (event.getMaterial()) { - case RAW_FISH: + case TROPICAL_FISH: { final int RADIUS_HIT = 5; final int STRENGTH = 4; @@ -77,7 +77,7 @@ public class ItemFun extends FreedomService } player.sendMessage(msg.toString()); - player.getEquipment().getItemInMainHand().setType(Material.POTATO_ITEM); + player.getEquipment().getItemInMainHand().setType(Material.POTATO); break; } @@ -126,7 +126,7 @@ public class ItemFun extends FreedomService break; } - case CARROT_ITEM: + case CARROT: { if (!ConfigEntry.ALLOW_EXPLOSIONS.getBoolean()) { @@ -209,7 +209,7 @@ public class ItemFun extends FreedomService break; } - case SULPHUR: + case GUNPOWDER: { if (!fPlayer.isMP44Armed()) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/fun/Jumppads.java b/src/main/java/me/totalfreedom/totalfreedommod/fun/Jumppads.java index 2385bd2..a9063de 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/fun/Jumppads.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/fun/Jumppads.java @@ -16,7 +16,7 @@ import org.bukkit.util.Vector; public class Jumppads extends FreedomService { - public static final Material BLOCK_ID = Material.WOOL; + public static final Material BLOCK_ID = Material.WHITE_WOOL; public static final double DAMPING_COEFFICIENT = 0.8; // private final Map pushMap = Maps.newHashMap(); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/fun/Trailer.java b/src/main/java/me/totalfreedom/totalfreedommod/fun/Trailer.java index 78e2627..033f3c4 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/fun/Trailer.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/fun/Trailer.java @@ -7,7 +7,7 @@ import java.util.Set; import me.totalfreedom.totalfreedommod.FreedomService; import me.totalfreedom.totalfreedommod.TotalFreedomMod; import me.totalfreedom.totalfreedommod.util.DepreciationAggregator; -import org.bukkit.Material; +import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.block.Block; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -60,8 +60,7 @@ public class Trailer extends FreedomService return; } - fromBlock.setType(Material.WOOL); - DepreciationAggregator.setData_Block(fromBlock, (byte) random.nextInt(16)); + fromBlock.setType(FUtil.WOOL_COLORS.get(random.nextInt(FUtil.WOOL_COLORS.size()))); } public void remove(Player player) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/rollback/RollbackEntry.java b/src/main/java/me/totalfreedom/totalfreedommod/rollback/RollbackEntry.java index fc4dcc3..8af0ac5 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/rollback/RollbackEntry.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/rollback/RollbackEntry.java @@ -5,6 +5,7 @@ import me.totalfreedom.totalfreedommod.util.FLog; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; +import org.bukkit.block.data.BlockData; import org.bukkit.block.Block; public class RollbackEntry @@ -16,7 +17,7 @@ public class RollbackEntry public final int x; public final short y; public final int z; - public final byte data; + public final BlockData data; public final Material blockMaterial; private final boolean isBreak; @@ -33,13 +34,13 @@ public class RollbackEntry if (entryType == EntryType.BLOCK_BREAK) { this.blockMaterial = block.getType(); - this.data = DepreciationAggregator.getData_Block(block); + this.data = block.getBlockData(); this.isBreak = true; } else { this.blockMaterial = block.getType(); - this.data = DepreciationAggregator.getData_Block(block); + this.data = block.getBlockData(); this.isBreak = false; } } @@ -73,7 +74,7 @@ public class RollbackEntry if (isBreak) { block.setType(getMaterial()); - DepreciationAggregator.setData_Block(block, data); + block.setBlockData(data); } else { @@ -92,7 +93,7 @@ public class RollbackEntry else { block.setType(getMaterial()); - DepreciationAggregator.setData_Block(block, data); + block.setBlockData(data); } } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/rollback/RollbackManager.java b/src/main/java/me/totalfreedom/totalfreedommod/rollback/RollbackManager.java index 4161dfd..9b6e1e9 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/rollback/RollbackManager.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/rollback/RollbackManager.java @@ -248,7 +248,7 @@ public class RollbackManager extends FreedomService for (RollbackEntry entry : entries) { FUtil.playerMsg(player, " - " + ChatColor.BLUE + entry.author + " " + entry.getType() + " " - + StringUtils.capitalize(entry.getMaterial().toString().toLowerCase()) + (entry.data == 0 ? "" : ":" + entry.data)); + + StringUtils.capitalize(entry.getMaterial().toString().toLowerCase()) + (entry.data == null ? "" : ":" + entry.data)); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/util/DepreciationAggregator.java b/src/main/java/me/totalfreedom/totalfreedommod/util/DepreciationAggregator.java index a404dea..a75d00b 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/util/DepreciationAggregator.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/util/DepreciationAggregator.java @@ -1,6 +1,7 @@ package me.totalfreedom.totalfreedommod.util; import java.util.HashSet; +import java.util.UUID; import org.bukkit.Material; import org.bukkit.OfflinePlayer; import org.bukkit.Server; @@ -13,7 +14,7 @@ import org.bukkit.material.MaterialData; public class DepreciationAggregator { - public static Block getTargetBlock(LivingEntity entity, HashSet transparent, int maxDistance) + public static Block getTargetBlock(LivingEntity entity, HashSet transparent, int maxDistance) { return entity.getTargetBlock(transparent, maxDistance); } @@ -23,11 +24,6 @@ public class DepreciationAggregator return server.getOfflinePlayer(name); } - public static Material getMaterial(int id) - { - return Material.getMaterial(id); - } - public static byte getData_MaterialData(MaterialData md) { return md.getData(); @@ -43,23 +39,13 @@ public class DepreciationAggregator return block.getData(); } - public static void setData_Block(Block block, byte data) - { - block.setData(data); - } - public static org.bukkit.material.Lever makeLeverWithData(byte data) { return new org.bukkit.material.Lever(Material.LEVER, data); } - public static int getTypeId_Block(Block block) - { - return block.getTypeId(); - } - public static String getName_EntityType(EntityType et) { return et.getName(); } -} +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java b/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java index 5a32729..c74059e 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java @@ -24,6 +24,7 @@ import org.apache.commons.lang3.StringUtils; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Location; +import org.bukkit.Material; import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -400,4 +401,22 @@ public class FUtil return packageName.substring(packageName.lastIndexOf('.') + 1); } + public static final List WOOL_COLORS = Arrays.asList( + Material.WHITE_WOOL, + Material.RED_WOOL, + Material.ORANGE_WOOL, + Material.YELLOW_WOOL, + Material.GREEN_WOOL, + Material.LIME_WOOL, + Material.LIGHT_BLUE_WOOL, + Material.CYAN_WOOL, + Material.BLUE_WOOL, + Material.PURPLE_WOOL, + Material.MAGENTA_WOOL, + Material.PINK_WOOL, + Material.BROWN_WOOL, + Material.GRAY_WOOL, + Material.LIGHT_GRAY_WOOL, + Material.BLACK_WOOL); + } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/world/AdminWorld.java b/src/main/java/me/totalfreedom/totalfreedommod/world/AdminWorld.java index 671e5a1..a396a07 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/world/AdminWorld.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/world/AdminWorld.java @@ -68,7 +68,7 @@ public final class AdminWorld extends CustomWorld world.setSpawnLocation(0, 50, 0); final Block welcomeSignBlock = world.getBlockAt(0, 50, 0); - welcomeSignBlock.setType(Material.SIGN_POST); + welcomeSignBlock.setType(Material.SIGN); org.bukkit.block.Sign welcomeSign = (org.bukkit.block.Sign) welcomeSignBlock.getState(); org.bukkit.material.Sign signData = (org.bukkit.material.Sign) welcomeSign.getData(); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/world/CleanroomBlockPopulator.java b/src/main/java/me/totalfreedom/totalfreedommod/world/CleanroomBlockPopulator.java deleted file mode 100644 index 4fed4c7..0000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/world/CleanroomBlockPopulator.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Cleanroom Generator - * Copyright (C) 2011-2012 nvx - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ -package me.totalfreedom.totalfreedommod.world; - -import java.util.Random; -import org.bukkit.Chunk; -import org.bukkit.World; -import org.bukkit.generator.BlockPopulator; - -@SuppressWarnings("deprecation") -public class CleanroomBlockPopulator extends BlockPopulator -{ - - byte[] layerDataValues; - - protected CleanroomBlockPopulator(byte[] layerDataValues) - { - this.layerDataValues = layerDataValues; - } - - @Override - public void populate(World world, Random random, Chunk chunk) - { - if (layerDataValues != null) - { - int x = chunk.getX() << 4; - int z = chunk.getZ() << 4; - - for (int y = 0; y < layerDataValues.length; y++) - { - byte dataValue = layerDataValues[y]; - if (dataValue == 0) - { - continue; - } - for (int xx = 0; xx < 16; xx++) - { - for (int zz = 0; zz < 16; zz++) - { - world.getBlockAt(x + xx, y, z + zz).setData(dataValue); - } - } - } - } - } -} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/world/CleanroomChunkGenerator.java b/src/main/java/me/totalfreedom/totalfreedommod/world/CleanroomChunkGenerator.java index 21bad07..04641fe 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/world/CleanroomChunkGenerator.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/world/CleanroomChunkGenerator.java @@ -15,210 +15,127 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ + package me.totalfreedom.totalfreedommod.world; -import static java.lang.System.arraycopy; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Random; -import java.util.logging.Logger; -import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.World; -import org.bukkit.generator.BlockPopulator; import org.bukkit.generator.ChunkGenerator; -@SuppressWarnings("deprecation") +import java.util.Arrays; +import java.util.Random; +import java.util.logging.Logger; + +import static java.lang.System.arraycopy; + public class CleanroomChunkGenerator extends ChunkGenerator { + private Logger log = Logger.getLogger("Minecraft"); - private static final Logger log = Bukkit.getLogger(); - private short[] layer; - private byte[] layerDataValues; + private Material[] materials; public CleanroomChunkGenerator() { this("64,stone"); } - public CleanroomChunkGenerator(String id) - { - if (id != null) - { - try - { + public CleanroomChunkGenerator(String id) { + if (id != null) { + try { int y = 0; - layer = new short[128]; // Default to 128, will be resized later if required - layerDataValues = null; + materials = new Material[128]; // Default to 128, will be resized later if required - if ((id.length() > 0) && (id.charAt(0) == '.')) // Is the first character a '.'? If so, skip bedrock generation. - { + if ((id.length() > 0) && (id.charAt(0) == '.')) { + // Is the first character a '.'? If so, skip bedrock generation. id = id.substring(1); // Skip bedrock then and remove the . - } - else // Guess not, bedrock at layer0 it is then. - { - layer[y++] = (short) Material.BEDROCK.getId(); + } else { + // Guess not, bedrock at layer0 it is then. + materials[y++] = Material.BEDROCK; } - if (id.length() > 0) - { + if (id.length() > 0) { String tokens[] = id.split("[,]"); - if ((tokens.length % 2) != 0) - { - throw new Exception(); - } + if ((tokens.length % 2) != 0) throw new Exception(); - for (int i = 0; i < tokens.length; i += 2) - { + for (int i = 0; i < tokens.length; i += 2) { int height = Integer.parseInt(tokens[i]); - if (height <= 0) - { + if (height <= 0) { log.warning("[CleanroomGenerator] Invalid height '" + tokens[i] + "'. Using 64 instead."); height = 64; } String materialTokens[] = tokens[i + 1].split("[:]", 2); - byte dataValue = 0; - if (materialTokens.length == 2) - { - try - { - // Lets try to read the data value - dataValue = Byte.parseByte(materialTokens[1]); - } - catch (Exception e) - { - log.warning("[CleanroomGenerator] Invalid Data Value '" + materialTokens[1] + "'. Defaulting to 0."); - dataValue = 0; - } + + if (materialTokens.length == 2) { + log.warning("[CleanroomGenerator] Data values are no longer supported in 1.13. Defaulting to the base material for " + materialTokens[0]); } + Material mat = Material.matchMaterial(materialTokens[0]); - if (mat == null) - { - try - { - // Mabe it's an integer? - mat = Material.getMaterial(Integer.parseInt(materialTokens[0])); - } - catch (Exception e) - { - // Well, I guess it wasn't an integer after all... Awkward... - } - - if (mat == null) - { - log.warning("[CleanroomGenerator] Invalid Block ID '" + materialTokens[0] + "'. Defaulting to stone."); - mat = Material.STONE; - } + if (mat == null) { + log.warning("[CleanroomGenerator] Invalid Block ID '" + materialTokens[0] + "'. Defaulting to stone. (Integer IDs were removed in 1.13)"); + mat = Material.STONE; } - if (!mat.isBlock()) - { + if (!mat.isBlock()) { log.warning("[CleanroomGenerator] Error, '" + materialTokens[0] + "' is not a block. Defaulting to stone."); mat = Material.STONE; } - if (y + height > layer.length) - { - short[] newLayer = new short[Math.max(y + height, layer.length * 2)]; - arraycopy(layer, 0, newLayer, 0, y); - layer = newLayer; - if (layerDataValues != null) - { - byte[] newLayerDataValues = new byte[Math.max(y + height, layerDataValues.length * 2)]; - arraycopy(layerDataValues, 0, newLayerDataValues, 0, y); - layerDataValues = newLayerDataValues; - } + if (y + height > materials.length) { + Material[] newMaterials = new Material[Math.max(y + height, materials.length * 2)]; + + arraycopy(materials, 0, newMaterials, 0, y); + materials = newMaterials; } - Arrays.fill(layer, y, y + height, (short) mat.getId()); - if (dataValue != 0) - { - if (layerDataValues == null) - { - layerDataValues = new byte[layer.length]; - } - Arrays.fill(layerDataValues, y, y + height, dataValue); - } + Arrays.fill(materials, y, y + height, mat); y += height; } } // Trim to size - if (layer.length > y) - { - short[] newLayer = new short[y]; - arraycopy(layer, 0, newLayer, 0, y); - layer = newLayer; + if (materials.length > y) { + Material[] newMaterials = new Material[y]; + arraycopy(materials, 0, newMaterials, 0, y); + materials = newMaterials; } - if (layerDataValues != null && layerDataValues.length > y) - { - byte[] newLayerDataValues = new byte[y]; - arraycopy(layerDataValues, 0, newLayerDataValues, 0, y); - layerDataValues = newLayerDataValues; - } - } - catch (Exception e) - { + } catch (Exception e) { log.severe("[CleanroomGenerator] Error parsing CleanroomGenerator ID '" + id + "'. using defaults '64,1': " + e.toString()); e.printStackTrace(); - layerDataValues = null; - layer = new short[65]; - layer[0] = (short) Material.BEDROCK.getId(); - Arrays.fill(layer, 1, 65, (short) Material.STONE.getId()); + + materials = new Material[65]; + materials[0] = Material.BEDROCK; + Arrays.fill(materials, 1, 65, Material.STONE); } - } - else - { - layerDataValues = null; - layer = new short[65]; - layer[0] = (short) Material.BEDROCK.getId(); - Arrays.fill(layer, 1, 65, (short) Material.STONE.getId()); + } else { + materials = new Material[65]; + materials[0] = Material.BEDROCK; + Arrays.fill(materials, 1, 65, Material.STONE); } } @Override - public short[][] generateExtBlockSections(World world, Random random, int x, int z, BiomeGrid biomes) - { + public ChunkData generateChunkData(World world, Random random, int x, int z, BiomeGrid biome) { int maxHeight = world.getMaxHeight(); - if (layer.length > maxHeight) - { - log.warning("[CleanroomGenerator] Error, chunk height " + layer.length + " is greater than the world max height (" + maxHeight + "). Trimming to world max height."); - short[] newLayer = new short[maxHeight]; - arraycopy(layer, 0, newLayer, 0, maxHeight); - layer = newLayer; + if (materials.length > maxHeight) { + log.warning("[CleanroomGenerator] Error, chunk height " + materials.length + " is greater than the world max height (" + maxHeight + "). Trimming to world max height."); + Material[] newMaterials = new Material[maxHeight]; + arraycopy(materials, 0, newMaterials, 0, maxHeight); + materials = newMaterials; } - short[][] result = new short[maxHeight / 16][]; // 16x16x16 chunks - for (int i = 0; i < layer.length; i += 16) - { - result[i >> 4] = new short[4096]; - for (int y = 0; y < Math.min(16, layer.length - i); y++) - { - Arrays.fill(result[i >> 4], y * 16 * 16, (y + 1) * 16 * 16, layer[i + y]); - } + + ChunkData result = createChunkData(world); + + for (int i = 0; i < materials.length; i++) { + result.setRegion(0, i, 0, 15, i, 15, materials[i]); } return result; } - @Override - public List getDefaultPopulators(World world) - { - if (layerDataValues != null) - { - return Arrays.asList((BlockPopulator) new CleanroomBlockPopulator(layerDataValues)); - } - else - { - // This is the default, but just in case default populators change to stock minecraft populators by default... - return new ArrayList<>(); - } - } - @Override public Location getFixedSpawnLocation(World world, Random random) { @@ -234,4 +151,4 @@ public class CleanroomChunkGenerator extends ChunkGenerator return new Location(world, 0, world.getHighestBlockYAt(0, 0), 0); } -} +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/world/Flatlands.java b/src/main/java/me/totalfreedom/totalfreedommod/world/Flatlands.java index 6d66010..9b5955b 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/world/Flatlands.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/world/Flatlands.java @@ -3,7 +3,6 @@ package me.totalfreedom.totalfreedommod.world; import java.io.File; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.util.FLog; -import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.io.FileUtils; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -46,7 +45,7 @@ public class Flatlands extends CustomWorld world.setSpawnLocation(0, 50, 0); final Block welcomeSignBlock = world.getBlockAt(0, 50, 0); - welcomeSignBlock.setType(Material.SIGN_POST); + welcomeSignBlock.setType(Material.SIGN); org.bukkit.block.Sign welcomeSign = (org.bukkit.block.Sign) welcomeSignBlock.getState(); org.bukkit.material.Sign signData = (org.bukkit.material.Sign) welcomeSign.getData(); diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index cebffe6..1ca0186 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,7 @@ name: TotalFreedomMod main: me.totalfreedom.totalfreedommod.TotalFreedomMod version: ${tfm.build.version} +api-version: 1.13 description: Plugin for the Total Freedom server. depend: [Aero, WorldEdit] softdepend: [BukkitTelnet, Essentials, LibsDisguises]