From bfc9aea863e5878efffe1df59d5b4e660174d2a7 Mon Sep 17 00:00:00 2001 From: Jonas Lateur Date: Tue, 30 Apr 2019 13:46:21 +0200 Subject: [PATCH 1/3] 1.14 --- API/pom.xml | 2 +- Plugin/pom.xml | 10 +- pom.xml | 5 + v1_14_R1/pom.xml | 46 ++ .../orebfuscator/nms/v1_14_R1/BlockInfo.java | 65 ++ .../orebfuscator/nms/v1_14_R1/ChunkCache.java | 99 +++ .../lishid/orebfuscator/nms/v1_14_R1/NBT.java | 65 ++ .../orebfuscator/nms/v1_14_R1/NmsManager.java | 589 ++++++++++++++++++ 8 files changed, 879 insertions(+), 2 deletions(-) create mode 100644 v1_14_R1/pom.xml create mode 100644 v1_14_R1/src/main/java/com/lishid/orebfuscator/nms/v1_14_R1/BlockInfo.java create mode 100644 v1_14_R1/src/main/java/com/lishid/orebfuscator/nms/v1_14_R1/ChunkCache.java create mode 100644 v1_14_R1/src/main/java/com/lishid/orebfuscator/nms/v1_14_R1/NBT.java create mode 100644 v1_14_R1/src/main/java/com/lishid/orebfuscator/nms/v1_14_R1/NmsManager.java diff --git a/API/pom.xml b/API/pom.xml index 161f47ce9..59181ceba 100644 --- a/API/pom.xml +++ b/API/pom.xml @@ -31,7 +31,7 @@ org.spigotmc spigot-api - 1.13.2-R0.1-SNAPSHOT + 1.14-R0.1-SNAPSHOT provided true diff --git a/Plugin/pom.xml b/Plugin/pom.xml index 515458fa0..399a775c3 100644 --- a/Plugin/pom.xml +++ b/Plugin/pom.xml @@ -20,7 +20,7 @@ org.spigotmc spigot-api - 1.13.2-R0.1-SNAPSHOT + 1.14-R0.1-SNAPSHOT provided true @@ -105,6 +105,14 @@ compile true + + com.lishid + orebfuscator-v1_14_R1 + v1_14_R1 + jar + compile + true + diff --git a/pom.xml b/pom.xml index c1b532309..4864cc86c 100644 --- a/pom.xml +++ b/pom.xml @@ -27,6 +27,10 @@ techcable-repo https://repo.techcable.net/content/groups/public/ + + spigot-plugins + https://repo.aikar.co/nexus/content/repositories/aikar/ + @@ -38,6 +42,7 @@ v1_12_R1 v1_13_R1 v1_13_R2 + v1_14_R1 Plugin diff --git a/v1_14_R1/pom.xml b/v1_14_R1/pom.xml new file mode 100644 index 000000000..677968303 --- /dev/null +++ b/v1_14_R1/pom.xml @@ -0,0 +1,46 @@ + + 4.0.0 + com.lishid + orebfuscator-v1_14_R1 + v1_14_R1 + jar + Orebfuscator4 v1_14_R1 + + + com.lishid.parent + orebfuscator-parent + parent + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.1 + + 1.8 + 1.8 + + + + + + + + org.spigotmc + spigot + 1.14-R0.1-SNAPSHOT + provided + true + + + com.lishid + orebfuscator-api + API + jar + + + + diff --git a/v1_14_R1/src/main/java/com/lishid/orebfuscator/nms/v1_14_R1/BlockInfo.java b/v1_14_R1/src/main/java/com/lishid/orebfuscator/nms/v1_14_R1/BlockInfo.java new file mode 100644 index 000000000..161037439 --- /dev/null +++ b/v1_14_R1/src/main/java/com/lishid/orebfuscator/nms/v1_14_R1/BlockInfo.java @@ -0,0 +1,65 @@ +/** + * @author Aleksey Terzi + * + */ + +package com.lishid.orebfuscator.nms.v1_14_R1; + +import net.minecraft.server.v1_14_R1.Block; +import net.minecraft.server.v1_14_R1.IBlockData; + +import com.lishid.orebfuscator.nms.IBlockInfo; + +public class BlockInfo implements IBlockInfo { + private int x; + private int y; + private int z; + private IBlockData blockData; + + public BlockInfo(int x, int y, int z, IBlockData blockData) { + this.x = x; + this.y = y; + this.z = z; + this.blockData = blockData; + } + + public int getX() { + return this.x; + } + + public int getY() { + return this.y; + } + + public int getZ() { + return this.z; + } + + public int getCombinedId() { + return Block.getCombinedId(this.blockData); + } + + public IBlockData getBlockData() { + return this.blockData; + } + + @Override + public boolean equals(Object other) { + if (other == null || !(other instanceof BlockInfo)) { + return false; + } + BlockInfo object = (BlockInfo) other; + + return this.x == object.x && this.y == object.y && this.z == object.z; + } + + @Override + public int hashCode() { + return this.x ^ this.y ^ this.z; + } + + @Override + public String toString() { + return this.x + " " + this.y + " " + this.z; + } +} diff --git a/v1_14_R1/src/main/java/com/lishid/orebfuscator/nms/v1_14_R1/ChunkCache.java b/v1_14_R1/src/main/java/com/lishid/orebfuscator/nms/v1_14_R1/ChunkCache.java new file mode 100644 index 000000000..e34b1b143 --- /dev/null +++ b/v1_14_R1/src/main/java/com/lishid/orebfuscator/nms/v1_14_R1/ChunkCache.java @@ -0,0 +1,99 @@ +/** + * @author lishid + * @author Aleksey Terzi + * + */ + +package com.lishid.orebfuscator.nms.v1_14_R1; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.File; +import java.lang.reflect.Method; +import java.util.HashMap; + +import net.minecraft.server.v1_14_R1.ChunkCoordIntPair; +import net.minecraft.server.v1_14_R1.RegionFile; + +import com.lishid.orebfuscator.nms.IChunkCache; + +public class ChunkCache implements IChunkCache { + private static final HashMap cachedRegionFiles = new HashMap(); + + private int maxLoadedCacheFiles; + + public ChunkCache(int maxLoadedCacheFiles) { + this.maxLoadedCacheFiles = maxLoadedCacheFiles; + } + + public DataInputStream getInputStream(File folder, int x, int z) { + RegionFile regionFile = getRegionFile(folder, x, z); + return regionFile.a(new ChunkCoordIntPair(x & 0x1F, z & 0x1F)); + } + + public DataOutputStream getOutputStream(File folder, int x, int z) { + RegionFile regionFile = getRegionFile(folder, x, z); + return regionFile.c(new ChunkCoordIntPair(x & 0x1F, z & 0x1F)); + } + + public void closeCacheFiles() { + closeCacheFilesInternal(); + } + + private synchronized RegionFile getRegionFile(File folder, int x, int z) { + File path = new File(folder, "region"); + File file = new File(path, "r." + (x >> 5) + "." + (z >> 5) + ".mcr"); + try { + RegionFile regionFile = cachedRegionFiles.get(file); + if (regionFile != null) { + return regionFile; + } + + if (!path.exists()) { + path.mkdirs(); + } + + if (cachedRegionFiles.size() >= this.maxLoadedCacheFiles) { + closeCacheFiles(); + } + + regionFile = new RegionFile(file); + cachedRegionFiles.put(file, regionFile); + + return regionFile; + } + catch (Exception e) { + try { + file.delete(); + } + catch (Exception e2) { + } + } + return null; + } + + private synchronized void closeCacheFilesInternal() { + for (RegionFile regionFile : cachedRegionFiles.values()) { + try { + if (regionFile != null) { + // This lovely piece of work is due to an NMS change in Spigot 1.13.2 without an R increase. + try { + Method c = regionFile.getClass().getDeclaredMethod("c"); + c.invoke(regionFile); + } catch (NoSuchMethodException nsme) { + try { + Method close = regionFile.getClass().getDeclaredMethod("close"); + close.invoke(regionFile); + } catch (NoSuchMethodException nsme2) { + + } + } + } + } + catch (Exception e) { + e.printStackTrace(); + } + } + cachedRegionFiles.clear(); + } +} diff --git a/v1_14_R1/src/main/java/com/lishid/orebfuscator/nms/v1_14_R1/NBT.java b/v1_14_R1/src/main/java/com/lishid/orebfuscator/nms/v1_14_R1/NBT.java new file mode 100644 index 000000000..b9cd48ce7 --- /dev/null +++ b/v1_14_R1/src/main/java/com/lishid/orebfuscator/nms/v1_14_R1/NBT.java @@ -0,0 +1,65 @@ +/** + * @author lishid + * @author Aleksey Terzi + * + */ + +package com.lishid.orebfuscator.nms.v1_14_R1; + +import java.io.DataInput; +import java.io.DataInputStream; +import java.io.DataOutput; +import java.io.IOException; + +import net.minecraft.server.v1_14_R1.NBTCompressedStreamTools; +import net.minecraft.server.v1_14_R1.NBTTagCompound; + +import com.lishid.orebfuscator.nms.INBT; + +public class NBT implements INBT { + NBTTagCompound nbt = new NBTTagCompound(); + + public void reset() { + nbt = new NBTTagCompound(); + } + + public void setInt(String tag, int value) { + nbt.setInt(tag, value); + } + + public void setLong(String tag, long value) { + nbt.setLong(tag, value); + } + + public void setByteArray(String tag, byte[] value) { + nbt.setByteArray(tag, value); + } + + public void setIntArray(String tag, int[] value) { + nbt.setIntArray(tag, value); + } + + public int getInt(String tag) { + return nbt.getInt(tag); + } + + public long getLong(String tag) { + return nbt.getLong(tag); + } + + public byte[] getByteArray(String tag) { + return nbt.getByteArray(tag); + } + + public int[] getIntArray(String tag) { + return nbt.getIntArray(tag); + } + + public void Read(DataInput stream) throws IOException { + nbt = NBTCompressedStreamTools.a((DataInputStream) stream); + } + + public void Write(DataOutput stream) throws IOException { + NBTCompressedStreamTools.a(nbt, stream); + } +} diff --git a/v1_14_R1/src/main/java/com/lishid/orebfuscator/nms/v1_14_R1/NmsManager.java b/v1_14_R1/src/main/java/com/lishid/orebfuscator/nms/v1_14_R1/NmsManager.java new file mode 100644 index 000000000..17b89b195 --- /dev/null +++ b/v1_14_R1/src/main/java/com/lishid/orebfuscator/nms/v1_14_R1/NmsManager.java @@ -0,0 +1,589 @@ +/** + * @author lishid + * @author Aleksey Terzi + * + */ + +package com.lishid.orebfuscator.nms.v1_14_R1; + +import com.lishid.orebfuscator.types.ConfigDefaults; +import net.minecraft.server.v1_14_R1.*; + +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.World; +import org.bukkit.entity.Player; + +import org.bukkit.craftbukkit.v1_14_R1.CraftWorld; +import org.bukkit.craftbukkit.v1_14_R1.block.CraftBlock; +import org.bukkit.craftbukkit.v1_14_R1.block.data.CraftBlockData; +import org.bukkit.craftbukkit.v1_14_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_14_R1.util.CraftChatMessage; + +import com.lishid.orebfuscator.nms.IBlockInfo; +import com.lishid.orebfuscator.nms.IChunkCache; +import com.lishid.orebfuscator.nms.INBT; +import com.lishid.orebfuscator.nms.INmsManager; +import com.lishid.orebfuscator.types.BlockCoord; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Set; + +public class NmsManager implements INmsManager { + private static final int BITS_PER_BLOCK = 14; + + private int BLOCK_ID_CAVE_AIR; + private Set BLOCK_ID_AIRS; + private Set BLOCK_ID_SIGNS; + + private ConfigDefaults configDefaults; + private int maxLoadedCacheFiles; + private Material[] extraTransparentBlocks; + private HashMap> materialIds; + + public NmsManager() { + initBlockIds(); + + this.BLOCK_ID_CAVE_AIR = getMaterialIds(Material.CAVE_AIR).iterator().next(); + this.BLOCK_ID_AIRS = convertMaterialsToSet(new Material[] { Material.AIR, Material.CAVE_AIR, Material.VOID_AIR }); + this.BLOCK_ID_SIGNS = convertMaterialsToSet(new Material[] { Material.LEGACY_SIGN, Material.LEGACY_WALL_SIGN }); + + this.configDefaults = new ConfigDefaults(); + + // Default World + + this.configDefaults.defaultProximityHiderBlockIds = convertMaterialsToIds(new Material[] { + Material.DISPENSER, + Material.SPAWNER, + Material.CHEST, + Material.HOPPER, + Material.CRAFTING_TABLE, + Material.FURNACE, + Material.ENCHANTING_TABLE, + Material.EMERALD_ORE, + Material.ENDER_CHEST, + Material.ANVIL, + Material.CHIPPED_ANVIL, + Material.DAMAGED_ANVIL, + Material.TRAPPED_CHEST, + Material.DIAMOND_ORE + }); + + this.configDefaults.defaultDarknessBlockIds = convertMaterialsToIds(new Material[] { + Material.SPAWNER, + Material.CHEST + }); + + this.configDefaults.defaultMode1BlockId = getMaterialIds(Material.STONE).iterator().next(); + this.configDefaults.defaultProximityHiderSpecialBlockId = getMaterialIds(Material.STONE).iterator().next(); + + // The End + + this.configDefaults.endWorldRandomBlockIds = convertMaterialsToIds(new Material[] { + Material.BEDROCK, + Material.OBSIDIAN, + Material.END_STONE, + Material.PURPUR_BLOCK, + Material.END_STONE_BRICKS + }); + + this.configDefaults.endWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] { + Material.END_STONE + }); + + this.configDefaults.endWorldMode1BlockId = getMaterialIds(Material.END_STONE).iterator().next(); + this.configDefaults.endWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] { Material.END_STONE }); + + // Nether World + + this.configDefaults.netherWorldRandomBlockIds = convertMaterialsToIds(new Material[] { + Material.GRAVEL, + Material.NETHERRACK, + Material.SOUL_SAND, + Material.NETHER_BRICKS, + Material.NETHER_QUARTZ_ORE + }); + + this.configDefaults.netherWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] { + Material.NETHERRACK, + Material.NETHER_QUARTZ_ORE + }); + + this.configDefaults.netherWorldMode1BlockId = getMaterialIds(Material.NETHERRACK).iterator().next(); + + this.configDefaults.netherWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] { + Material.NETHERRACK + }); + + // Normal World + + this.configDefaults.normalWorldRandomBlockIds = convertMaterialsToIds(new Material[] { + Material.STONE, + Material.COBBLESTONE, + Material.OAK_PLANKS, + Material.GOLD_ORE, + Material.IRON_ORE, + Material.COAL_ORE, + Material.LAPIS_ORE, + Material.TNT, + Material.MOSSY_COBBLESTONE, + Material.OBSIDIAN, + Material.DIAMOND_ORE, + Material.REDSTONE_ORE, + Material.CLAY, + Material.EMERALD_ORE + }); + + this.configDefaults.normalWorldObfuscateBlockIds = convertMaterialsToIds(new Material[] { + Material.GOLD_ORE, + Material.IRON_ORE, + Material.COAL_ORE, + Material.LAPIS_ORE, + Material.CHEST, + Material.DIAMOND_ORE, + Material.ENDER_CHEST, + Material.REDSTONE_ORE, + Material.CLAY, + Material.EMERALD_ORE + }); + + this.configDefaults.normalWorldMode1BlockId = getMaterialIds(Material.STONE).iterator().next(); + + this.configDefaults.normalWorldRequiredObfuscateBlockIds = convertMaterialsToIds(new Material[] { + Material.STONE + }); + + // Extra transparent blocks + + this.extraTransparentBlocks = new Material[] { + Material.ACACIA_DOOR, + Material.ACACIA_FENCE, + Material.ACACIA_FENCE_GATE, + Material.ACACIA_LEAVES, + Material.ACACIA_PRESSURE_PLATE, + Material.ACACIA_SLAB, + Material.ACACIA_STAIRS, + Material.ACACIA_TRAPDOOR, + Material.ANVIL, + Material.BEACON, + Material.BIRCH_DOOR, + Material.BIRCH_FENCE, + Material.BIRCH_FENCE_GATE, + Material.BIRCH_LEAVES, + Material.BIRCH_PRESSURE_PLATE, + Material.BIRCH_SLAB, + Material.BIRCH_STAIRS, + Material.BIRCH_TRAPDOOR, + Material.BLACK_BANNER, + Material.BLACK_BED, + Material.BLACK_STAINED_GLASS, + Material.BLACK_STAINED_GLASS_PANE, + Material.BLACK_WALL_BANNER, + Material.BLUE_BANNER, + Material.BLUE_BED, + Material.BLUE_ICE, + Material.BLUE_STAINED_GLASS, + Material.BLUE_STAINED_GLASS_PANE, + Material.BLUE_WALL_BANNER, + Material.BREWING_STAND, + Material.BRICK_SLAB, + Material.BRICK_STAIRS, + Material.BRAIN_CORAL, + Material.BRAIN_CORAL_FAN, + Material.BRAIN_CORAL_WALL_FAN, + Material.BROWN_BANNER, + Material.BROWN_BED, + Material.BROWN_STAINED_GLASS, + Material.BROWN_STAINED_GLASS_PANE, + Material.BROWN_WALL_BANNER, + Material.BUBBLE_COLUMN, + Material.BUBBLE_CORAL, + Material.BUBBLE_CORAL_FAN, + Material.BUBBLE_CORAL_WALL_FAN, + Material.CACTUS, + Material.CAKE, + Material.CAULDRON, + Material.CHIPPED_ANVIL, + Material.COBBLESTONE_SLAB, + Material.COBBLESTONE_STAIRS, + Material.COBBLESTONE_WALL, + Material.COBWEB, + Material.CONDUIT, + Material.CYAN_BANNER, + Material.CYAN_BED, + Material.CYAN_STAINED_GLASS, + Material.CYAN_STAINED_GLASS_PANE, + Material.CYAN_WALL_BANNER, + Material.DAMAGED_ANVIL, + Material.DARK_OAK_DOOR, + Material.DARK_OAK_FENCE, + Material.DARK_OAK_FENCE_GATE, + Material.DARK_OAK_LEAVES, + Material.DARK_OAK_PRESSURE_PLATE, + Material.DARK_OAK_SLAB, + Material.DARK_OAK_STAIRS, + Material.DARK_OAK_TRAPDOOR, + Material.DARK_PRISMARINE_SLAB, + Material.DARK_PRISMARINE_STAIRS, + Material.DAYLIGHT_DETECTOR, + Material.DEAD_BRAIN_CORAL, + Material.DEAD_BRAIN_CORAL_FAN, + Material.DEAD_BRAIN_CORAL_WALL_FAN, + Material.DEAD_BUBBLE_CORAL, + Material.DEAD_BUBBLE_CORAL_FAN, + Material.DEAD_BUBBLE_CORAL_WALL_FAN, + Material.DEAD_FIRE_CORAL, + Material.DEAD_FIRE_CORAL_FAN, + Material.DEAD_FIRE_CORAL_WALL_FAN, + Material.DEAD_HORN_CORAL, + Material.DEAD_HORN_CORAL_FAN, + Material.DEAD_HORN_CORAL_WALL_FAN, + Material.DEAD_TUBE_CORAL, + Material.DEAD_TUBE_CORAL_FAN, + Material.DEAD_TUBE_CORAL_WALL_FAN, + Material.DRAGON_EGG, + Material.FARMLAND, + Material.FIRE_CORAL, + Material.FIRE_CORAL_FAN, + Material.FIRE_CORAL_WALL_FAN, + Material.FROSTED_ICE, + Material.GLASS, + Material.GLASS_PANE, + Material.GRAY_BANNER, + Material.GRAY_BED, + Material.GRAY_STAINED_GLASS, + Material.GRAY_STAINED_GLASS_PANE, + Material.GRAY_WALL_BANNER, + Material.GREEN_BANNER, + Material.GREEN_BED, + Material.GREEN_STAINED_GLASS, + Material.GREEN_STAINED_GLASS_PANE, + Material.GREEN_WALL_BANNER, + Material.HEAVY_WEIGHTED_PRESSURE_PLATE, + Material.HOPPER, + Material.HORN_CORAL, + Material.HORN_CORAL_FAN, + Material.HORN_CORAL_WALL_FAN, + Material.ICE, + Material.IRON_BARS, + Material.IRON_DOOR, + Material.IRON_TRAPDOOR, + Material.JUNGLE_DOOR, + Material.JUNGLE_FENCE, + Material.JUNGLE_FENCE_GATE, + Material.JUNGLE_LEAVES, + Material.JUNGLE_PRESSURE_PLATE, + Material.JUNGLE_SLAB, + Material.JUNGLE_STAIRS, + Material.JUNGLE_TRAPDOOR, + Material.KELP, + Material.KELP_PLANT, + Material.LIGHT_BLUE_BANNER, + Material.LIGHT_BLUE_BED, + Material.LIGHT_BLUE_STAINED_GLASS, + Material.LIGHT_BLUE_STAINED_GLASS_PANE, + Material.LIGHT_BLUE_WALL_BANNER, + Material.LIGHT_GRAY_BANNER, + Material.LIGHT_GRAY_BED, + Material.LIGHT_GRAY_STAINED_GLASS, + Material.LIGHT_GRAY_STAINED_GLASS_PANE, + Material.LIGHT_GRAY_WALL_BANNER, + Material.LIGHT_WEIGHTED_PRESSURE_PLATE, + Material.LIME_BANNER, + Material.LIME_BED, + Material.LIME_STAINED_GLASS, + Material.LIME_STAINED_GLASS_PANE, + Material.LIME_WALL_BANNER, + Material.MAGENTA_BANNER, + Material.MAGENTA_BED, + Material.MAGENTA_STAINED_GLASS, + Material.MAGENTA_STAINED_GLASS_PANE, + Material.MAGENTA_WALL_BANNER, + Material.MOSSY_COBBLESTONE_WALL, + Material.MOVING_PISTON, + Material.NETHER_BRICK_FENCE, + Material.NETHER_BRICK_SLAB, + Material.NETHER_BRICK_STAIRS, + Material.OAK_DOOR, + Material.OAK_FENCE, + Material.OAK_FENCE_GATE, + Material.OAK_LEAVES, + Material.OAK_PRESSURE_PLATE, + Material.OAK_SLAB, + Material.OAK_STAIRS, + Material.OAK_TRAPDOOR, + Material.ORANGE_BANNER, + Material.ORANGE_BED, + Material.ORANGE_STAINED_GLASS, + Material.ORANGE_STAINED_GLASS_PANE, + Material.ORANGE_WALL_BANNER, + Material.PACKED_ICE, + Material.PETRIFIED_OAK_SLAB, + Material.PINK_BANNER, + Material.PINK_BED, + Material.PINK_STAINED_GLASS, + Material.PINK_STAINED_GLASS_PANE, + Material.PINK_WALL_BANNER, + Material.PISTON, + Material.PISTON_HEAD, + Material.PRISMARINE_BRICK_SLAB, + Material.PRISMARINE_BRICK_STAIRS, + Material.PRISMARINE_SLAB, + Material.PRISMARINE_STAIRS, + Material.PURPLE_BANNER, + Material.PURPLE_BED, + Material.PURPLE_STAINED_GLASS, + Material.PURPLE_STAINED_GLASS_PANE, + Material.PURPLE_WALL_BANNER, + Material.PURPUR_SLAB, + Material.PURPUR_STAIRS, + Material.QUARTZ_SLAB, + Material.QUARTZ_STAIRS, + Material.RED_BANNER, + Material.RED_BED, + Material.RED_SANDSTONE_SLAB, + Material.RED_SANDSTONE_STAIRS, + Material.RED_STAINED_GLASS, + Material.RED_STAINED_GLASS_PANE, + Material.RED_WALL_BANNER, + Material.SANDSTONE_SLAB, + Material.SANDSTONE_STAIRS, + Material.SEAGRASS, + Material.SEA_PICKLE, + Material.LEGACY_SIGN, + Material.SLIME_BLOCK, + Material.SPAWNER, + Material.SPRUCE_DOOR, + Material.SPRUCE_FENCE, + Material.SPRUCE_FENCE_GATE, + Material.SPRUCE_LEAVES, + Material.SPRUCE_PRESSURE_PLATE, + Material.SPRUCE_SLAB, + Material.SPRUCE_STAIRS, + Material.SPRUCE_TRAPDOOR, + Material.STICKY_PISTON, + Material.STONE_BRICK_SLAB, + Material.STONE_BRICK_STAIRS, + Material.STONE_PRESSURE_PLATE, + Material.STONE_SLAB, + Material.TALL_SEAGRASS, + Material.TUBE_CORAL, + Material.TUBE_CORAL_FAN, + Material.TUBE_CORAL_WALL_FAN, + Material.TURTLE_EGG, + Material.LEGACY_WALL_SIGN, + Material.WATER, + Material.WHITE_BANNER, + Material.WHITE_BED, + Material.WHITE_STAINED_GLASS, + Material.WHITE_STAINED_GLASS_PANE, + Material.WHITE_WALL_BANNER, + Material.YELLOW_BANNER, + Material.YELLOW_BED, + Material.YELLOW_STAINED_GLASS, + Material.YELLOW_STAINED_GLASS_PANE, + Material.YELLOW_WALL_BANNER + }; + } + + private void initBlockIds() { + this.materialIds = new HashMap<>(); + + Block.REGISTRY_ID.iterator().forEachRemaining(blockData -> { + Material material = CraftBlockData.fromData(blockData).getMaterial(); + + if(material.isBlock()) { + int materialId = Block.REGISTRY_ID.getId(blockData); + + Set ids = this.materialIds.get(material); + + if (ids == null) { + this.materialIds.put(material, ids = new HashSet<>()); + } + + ids.add(materialId); + } + }); + } + + public Material[] getExtraTransparentBlocks() { + return this.extraTransparentBlocks; + } + + public ConfigDefaults getConfigDefaults() { + return this.configDefaults; + } + + public void setMaxLoadedCacheFiles(int value) { + this.maxLoadedCacheFiles = value; + } + + public INBT createNBT() { + return new NBT(); + } + + public IChunkCache createChunkCache() { + return new ChunkCache(this.maxLoadedCacheFiles); + } + + public void updateBlockTileEntity(BlockCoord blockCoord, Player player) { + CraftWorld world = (CraftWorld)player.getWorld(); + // 1.13.2 has made this quite a bit different in later builds. + TileEntity tileEntity = null; + try { + Method getTileEntityAt = world.getClass().getMethod("getTileEntityAt", int.class, int.class, int.class); + tileEntity = (TileEntity) getTileEntityAt.invoke(world, blockCoord.x, blockCoord.y, blockCoord.z); + } catch (NoSuchMethodException nsme) { + tileEntity = world.getHandle().getTileEntity(new BlockPosition(blockCoord.x, blockCoord.y, blockCoord.z)); + } catch (Exception e) { + return; + } + + if (tileEntity == null) { + return; + } + + Packet packet = tileEntity.getUpdatePacket(); + + if (packet != null) { + CraftPlayer player2 = (CraftPlayer)player; + player2.getHandle().playerConnection.sendPacket(packet); + } + } + + public void notifyBlockChange(World world, IBlockInfo blockInfo) { + BlockPosition blockPosition = new BlockPosition(blockInfo.getX(), blockInfo.getY(), blockInfo.getZ()); + IBlockData blockData = ((BlockInfo)blockInfo).getBlockData(); + + ((CraftWorld)world).getHandle().notify(blockPosition, blockData, blockData, 0); + } + + public int getBlockLightLevel(World world, int x, int y, int z) { + return ((CraftWorld)world).getHandle().getLightLevel(new BlockPosition(x, y, z)); + } + + public IBlockInfo getBlockInfo(World world, int x, int y, int z) { + IBlockData blockData = getBlockData(world, x, y, z, false); + + return blockData != null + ? new BlockInfo(x, y, z, blockData) + : null; + } + + public int loadChunkAndGetBlockId(World world, int x, int y, int z) { + IBlockData blockData = getBlockData(world, x, y, z, true); + return blockData != null ? Block.getCombinedId(blockData): -1; + } + + public String getTextFromChatComponent(String json) { + IChatBaseComponent component = IChatBaseComponent.ChatSerializer.a(json); + return CraftChatMessage.fromComponent(component); + } + + public boolean isHoe(Material item) { + return item == Material.WOODEN_HOE + || item == Material.IRON_HOE + || item == Material.GOLDEN_HOE + || item == Material.DIAMOND_HOE; + } + + public boolean isSign(int combinedBlockId) { + return BLOCK_ID_SIGNS.contains(combinedBlockId); + } + + public boolean isAir(int combinedBlockId) { + return BLOCK_ID_AIRS.contains(combinedBlockId); + } + + public boolean isTileEntity(int combinedBlockId) { + return Block.getByCombinedId(combinedBlockId).getBlock().isTileEntity(); + } + + public int getCaveAirBlockId() { + return BLOCK_ID_CAVE_AIR; + } + + public int getBitsPerBlock() { + return BITS_PER_BLOCK; + } + + public boolean canApplyPhysics(Material blockMaterial) { + return blockMaterial == Material.AIR + || blockMaterial == Material.CAVE_AIR + || blockMaterial == Material.VOID_AIR + || blockMaterial == Material.FIRE + || blockMaterial == Material.WATER + || blockMaterial == Material.LAVA; + } + + public Set getMaterialIds(Material material) { + return this.materialIds.get(material); + } + + public boolean sendBlockChange(Player player, Location blockLocation) { + IBlockData blockData = getBlockData(blockLocation.getWorld(), blockLocation.getBlockX(), blockLocation.getBlockY(), blockLocation.getBlockZ(), false); + + if(blockData == null) return false; + + CraftBlockData craftBlockData = CraftBlockData.fromData(blockData); + + player.sendBlockChange(blockLocation, craftBlockData); + + return true; + } + + private static IBlockData getBlockData(World world, int x, int y, int z, boolean loadChunk) { + int chunkX = x >> 4; + int chunkZ = z >> 4; + + WorldServer worldServer = ((CraftWorld)world).getHandle(); + // like in ChunkCache, NMS change without R increment. + ChunkProviderServer chunkProviderServer = null; + try { + Method getChunkProviderServer = worldServer.getClass().getDeclaredMethod("getChunkProviderServer"); + chunkProviderServer = (ChunkProviderServer) getChunkProviderServer.invoke(worldServer); + } catch (NoSuchMethodException nmfe) { + try { + Method getChunkProvider = worldServer.getClass().getDeclaredMethod("getChunkProvider"); + chunkProviderServer = (ChunkProviderServer) getChunkProvider.invoke(worldServer); + } catch (NoSuchMethodException nsme) { + return null; // oops + } catch (Exception e) { + return null; + } + } catch (Exception e) { + return null; + } + if(!loadChunk && !chunkProviderServer.isLoaded(chunkX, chunkZ)) return null; + + IChunkAccess chunk = chunkProviderServer.getChunkAt(chunkX, chunkZ, ChunkStatus.FULL, true); + + return chunk != null ? chunk.getType(new BlockPosition(x,y,z)) : null; + } + + private Set convertMaterialsToSet(Material[] materials) { + Set ids = new HashSet<>(); + + for(Material material : materials) { + ids.addAll(getMaterialIds(material)); + } + + return ids; + } + + private int[] convertMaterialsToIds(Material[] materials) { + Set ids = convertMaterialsToSet(materials); + + int[] result = new int[ids.size()]; + int index = 0; + + for(int id : ids) { + result[index++] = id; + } + + return result; + } +} \ No newline at end of file From 6af9133be404809ac0a0119285f9ea508a711326 Mon Sep 17 00:00:00 2001 From: Jonas Lateur Date: Sat, 22 Jun 2019 09:07:35 +0200 Subject: [PATCH 2/3] - Adding 1.14.2 to the main class - Removing repo that interfere with building in IntelliJ - Adding new blocks that needs to be hidden. --- .../com/lishid/orebfuscator/Orebfuscator.java | 5 +- pom.xml | 10 +- v1_14_R1/pom.xml | 8 +- .../orebfuscator/nms/v1_14_R1/NmsManager.java | 112 ++++++++++++++++-- 4 files changed, 119 insertions(+), 16 deletions(-) diff --git a/Plugin/src/main/java/com/lishid/orebfuscator/Orebfuscator.java b/Plugin/src/main/java/com/lishid/orebfuscator/Orebfuscator.java index a9fa4894f..ee6e4ca07 100644 --- a/Plugin/src/main/java/com/lishid/orebfuscator/Orebfuscator.java +++ b/Plugin/src/main/java/com/lishid/orebfuscator/Orebfuscator.java @@ -142,8 +142,11 @@ public void reloadOrebfuscatorConfig() { private static INmsManager createNmsManager() { String serverVersion = org.bukkit.Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3]; + System.out.println(serverVersion); - if(serverVersion.equals("v1_13_R2")) { + if(serverVersion.equals("v1_14_R1")) { + return new com.lishid.orebfuscator.nms.v1_14_R1.NmsManager(); + }else if(serverVersion.equals("v1_13_R2")) { return new com.lishid.orebfuscator.nms.v1_13_R2.NmsManager(); } else if(serverVersion.equals("v1_13_R1")) { diff --git a/pom.xml b/pom.xml index 4864cc86c..d9638a9ab 100644 --- a/pom.xml +++ b/pom.xml @@ -27,10 +27,10 @@ techcable-repo https://repo.techcable.net/content/groups/public/ - + @@ -51,9 +51,9 @@ - scm:git:git://github.com/lishid/Orebfuscator.git - scm:git:git@github.com:lishid/Orebfuscator.git - https://github.com/lishid/Orebfuscator + scm:git:git://github.com/JayJay1989/Orebfuscator.git + scm:git:git@github.com:JayJay1989/Orebfuscator.git + https://github.com/JayJay1989/Orebfuscator diff --git a/v1_14_R1/pom.xml b/v1_14_R1/pom.xml index 677968303..b6c6b8b84 100644 --- a/v1_14_R1/pom.xml +++ b/v1_14_R1/pom.xml @@ -31,7 +31,7 @@ org.spigotmc spigot - 1.14-R0.1-SNAPSHOT + 1.14.2-R0.1-SNAPSHOT provided true @@ -41,6 +41,12 @@ API jar + + org.jetbrains + annotations + RELEASE + compile + diff --git a/v1_14_R1/src/main/java/com/lishid/orebfuscator/nms/v1_14_R1/NmsManager.java b/v1_14_R1/src/main/java/com/lishid/orebfuscator/nms/v1_14_R1/NmsManager.java index 17b89b195..d6f1009ae 100644 --- a/v1_14_R1/src/main/java/com/lishid/orebfuscator/nms/v1_14_R1/NmsManager.java +++ b/v1_14_R1/src/main/java/com/lishid/orebfuscator/nms/v1_14_R1/NmsManager.java @@ -1,7 +1,7 @@ /** * @author lishid * @author Aleksey Terzi - * + * @author JayJay1989BE */ package com.lishid.orebfuscator.nms.v1_14_R1; @@ -15,7 +15,6 @@ import org.bukkit.entity.Player; import org.bukkit.craftbukkit.v1_14_R1.CraftWorld; -import org.bukkit.craftbukkit.v1_14_R1.block.CraftBlock; import org.bukkit.craftbukkit.v1_14_R1.block.data.CraftBlockData; import org.bukkit.craftbukkit.v1_14_R1.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_14_R1.util.CraftChatMessage; @@ -26,7 +25,6 @@ import com.lishid.orebfuscator.nms.INmsManager; import com.lishid.orebfuscator.types.BlockCoord; -import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.HashMap; import java.util.HashSet; @@ -48,8 +46,25 @@ public NmsManager() { initBlockIds(); this.BLOCK_ID_CAVE_AIR = getMaterialIds(Material.CAVE_AIR).iterator().next(); - this.BLOCK_ID_AIRS = convertMaterialsToSet(new Material[] { Material.AIR, Material.CAVE_AIR, Material.VOID_AIR }); - this.BLOCK_ID_SIGNS = convertMaterialsToSet(new Material[] { Material.LEGACY_SIGN, Material.LEGACY_WALL_SIGN }); + this.BLOCK_ID_AIRS = convertMaterialsToSet(new Material[] { + Material.AIR, + Material.CAVE_AIR, + Material.VOID_AIR + }); + + this.BLOCK_ID_SIGNS = convertMaterialsToSet(new Material[] { + Material.ACACIA_SIGN, + Material.ACACIA_WALL_SIGN, + Material.DARK_OAK_SIGN, + Material.DARK_OAK_WALL_SIGN, + Material.JUNGLE_SIGN, + Material.JUNGLE_WALL_SIGN, + Material.OAK_SIGN, + Material.OAK_WALL_SIGN, + Material.SPRUCE_SIGN, + Material.SPRUCE_WALL_SIGN + + }); this.configDefaults = new ConfigDefaults(); @@ -69,7 +84,21 @@ public NmsManager() { Material.CHIPPED_ANVIL, Material.DAMAGED_ANVIL, Material.TRAPPED_CHEST, - Material.DIAMOND_ORE + Material.DIAMOND_ORE, + Material.BARREL, + Material.BLAST_FURNACE, + Material.CAMPFIRE, + Material.CARTOGRAPHY_TABLE, + Material.COMPOSTER, + Material.FLETCHING_TABLE, + Material.GRINDSTONE, + Material.JIGSAW, + Material.LECTERN, + Material.LOOM, + Material.SMITHING_TABLE, + Material.SMOKER, + Material.STONECUTTER, + }); this.configDefaults.defaultDarknessBlockIds = convertMaterialsToIds(new Material[] { @@ -167,8 +196,15 @@ public NmsManager() { Material.ACACIA_SLAB, Material.ACACIA_STAIRS, Material.ACACIA_TRAPDOOR, + Material.ACACIA_SIGN, + Material.ACACIA_WALL_SIGN, + Material.ANDESITE_SLAB, + Material.ANDESITE_STAIRS, + Material.ANDESITE_WALL, Material.ANVIL, + Material.BARREL, Material.BEACON, + Material.BLAST_FURNACE, Material.BIRCH_DOOR, Material.BIRCH_FENCE, Material.BIRCH_FENCE_GATE, @@ -177,6 +213,8 @@ public NmsManager() { Material.BIRCH_SLAB, Material.BIRCH_STAIRS, Material.BIRCH_TRAPDOOR, + Material.BIRCH_SIGN, + Material.BIRCH_WALL_SIGN, Material.BLACK_BANNER, Material.BLACK_BED, Material.BLACK_STAINED_GLASS, @@ -191,6 +229,7 @@ public NmsManager() { Material.BREWING_STAND, Material.BRICK_SLAB, Material.BRICK_STAIRS, + Material.BRICK_WALL, Material.BRAIN_CORAL, Material.BRAIN_CORAL_FAN, Material.BRAIN_CORAL_WALL_FAN, @@ -205,13 +244,21 @@ public NmsManager() { Material.BUBBLE_CORAL_WALL_FAN, Material.CACTUS, Material.CAKE, + Material.CAMPFIRE, + Material.CARTOGRAPHY_TABLE, Material.CAULDRON, Material.CHIPPED_ANVIL, Material.COBBLESTONE_SLAB, Material.COBBLESTONE_STAIRS, Material.COBBLESTONE_WALL, Material.COBWEB, + Material.COMPOSTER, Material.CONDUIT, + Material.CRAFTING_TABLE, + Material.CUT_RED_SANDSTONE, + Material.CUT_RED_SANDSTONE_SLAB, + Material.CUT_SANDSTONE, + Material.CUT_SANDSTONE_SLAB, Material.CYAN_BANNER, Material.CYAN_BED, Material.CYAN_STAINED_GLASS, @@ -226,6 +273,8 @@ public NmsManager() { Material.DARK_OAK_SLAB, Material.DARK_OAK_STAIRS, Material.DARK_OAK_TRAPDOOR, + Material.DARK_OAK_SIGN, + Material.DARK_OAK_WALL_SIGN, Material.DARK_PRISMARINE_SLAB, Material.DARK_PRISMARINE_STAIRS, Material.DAYLIGHT_DETECTOR, @@ -244,14 +293,24 @@ public NmsManager() { Material.DEAD_TUBE_CORAL, Material.DEAD_TUBE_CORAL_FAN, Material.DEAD_TUBE_CORAL_WALL_FAN, + Material.DIORITE_SLAB, + Material.DIORITE_STAIRS, + Material.DIORITE_WALL, Material.DRAGON_EGG, + Material.END_STONE_BRICK_SLAB, + Material.END_STONE_BRICK_STAIRS, + Material.END_STONE_BRICK_WALL, Material.FARMLAND, Material.FIRE_CORAL, Material.FIRE_CORAL_FAN, Material.FIRE_CORAL_WALL_FAN, + Material.FLETCHING_TABLE, Material.FROSTED_ICE, Material.GLASS, Material.GLASS_PANE, + Material.GRANITE_SLAB, + Material.GRANITE_STAIRS, + Material.GRANITE_WALL, Material.GRAY_BANNER, Material.GRAY_BED, Material.GRAY_STAINED_GLASS, @@ -262,6 +321,7 @@ public NmsManager() { Material.GREEN_STAINED_GLASS, Material.GREEN_STAINED_GLASS_PANE, Material.GREEN_WALL_BANNER, + Material.GRINDSTONE, Material.HEAVY_WEIGHTED_PRESSURE_PLATE, Material.HOPPER, Material.HORN_CORAL, @@ -271,6 +331,7 @@ public NmsManager() { Material.IRON_BARS, Material.IRON_DOOR, Material.IRON_TRAPDOOR, + Material.JIGSAW, Material.JUNGLE_DOOR, Material.JUNGLE_FENCE, Material.JUNGLE_FENCE_GATE, @@ -279,6 +340,8 @@ public NmsManager() { Material.JUNGLE_SLAB, Material.JUNGLE_STAIRS, Material.JUNGLE_TRAPDOOR, + Material.JUNGLE_SIGN, + Material.JUNGLE_WALL_SIGN, Material.KELP, Material.KELP_PLANT, Material.LIGHT_BLUE_BANNER, @@ -297,16 +360,23 @@ public NmsManager() { Material.LIME_STAINED_GLASS, Material.LIME_STAINED_GLASS_PANE, Material.LIME_WALL_BANNER, + Material.LOOM, Material.MAGENTA_BANNER, Material.MAGENTA_BED, Material.MAGENTA_STAINED_GLASS, Material.MAGENTA_STAINED_GLASS_PANE, Material.MAGENTA_WALL_BANNER, + Material.MOSSY_COBBLESTONE_SLAB, + Material.MOSSY_COBBLESTONE_STAIRS, Material.MOSSY_COBBLESTONE_WALL, + Material.MOSSY_STONE_BRICK_SLAB, + Material.MOSSY_STONE_BRICK_STAIRS, + Material.MOSSY_STONE_BRICK_WALL, Material.MOVING_PISTON, Material.NETHER_BRICK_FENCE, Material.NETHER_BRICK_SLAB, Material.NETHER_BRICK_STAIRS, + Material.NETHER_BRICK_WALL, Material.OAK_DOOR, Material.OAK_FENCE, Material.OAK_FENCE_GATE, @@ -315,6 +385,8 @@ public NmsManager() { Material.OAK_SLAB, Material.OAK_STAIRS, Material.OAK_TRAPDOOR, + Material.OAK_SIGN, + Material.OAK_WALL_SIGN, Material.ORANGE_BANNER, Material.ORANGE_BED, Material.ORANGE_STAINED_GLASS, @@ -333,6 +405,12 @@ public NmsManager() { Material.PRISMARINE_BRICK_STAIRS, Material.PRISMARINE_SLAB, Material.PRISMARINE_STAIRS, + Material.POLISHED_ANDESITE_SLAB, + Material.POLISHED_ANDESITE_STAIRS, + Material.POLISHED_DIORITE_SLAB, + Material.POLISHED_DIORITE_STAIRS, + Material.POLISHED_GRANITE_SLAB, + Material.POLISHED_GRANITE_STAIRS, Material.PURPLE_BANNER, Material.PURPLE_BED, Material.PURPLE_STAINED_GLASS, @@ -344,6 +422,9 @@ public NmsManager() { Material.QUARTZ_STAIRS, Material.RED_BANNER, Material.RED_BED, + Material.RED_NETHER_BRICK_SLAB, + Material.RED_NETHER_BRICK_STAIRS, + Material.RED_NETHER_BRICK_WALL, Material.RED_SANDSTONE_SLAB, Material.RED_SANDSTONE_STAIRS, Material.RED_STAINED_GLASS, @@ -351,10 +432,20 @@ public NmsManager() { Material.RED_WALL_BANNER, Material.SANDSTONE_SLAB, Material.SANDSTONE_STAIRS, + Material.SANDSTONE_WALL, + Material.SCAFFOLDING, Material.SEAGRASS, Material.SEA_PICKLE, - Material.LEGACY_SIGN, Material.SLIME_BLOCK, + Material.SMITHING_TABLE, + Material.SMOKER, + Material.SMOOTH_QUARTZ_SLAB, + Material.SMOOTH_QUARTZ_STAIRS, + Material.SMOOTH_RED_SANDSTONE_SLAB, + Material.SMOOTH_RED_SANDSTONE_STAIRS, + Material.SMOOTH_SANDSTONE_SLAB, + Material.SMOOTH_SANDSTONE_STAIRS, + Material.SMOOTH_STONE_SLAB, Material.SPAWNER, Material.SPRUCE_DOOR, Material.SPRUCE_FENCE, @@ -364,17 +455,21 @@ public NmsManager() { Material.SPRUCE_SLAB, Material.SPRUCE_STAIRS, Material.SPRUCE_TRAPDOOR, + Material.SPRUCE_SIGN, + Material.SPRUCE_WALL_SIGN, Material.STICKY_PISTON, + Material.STONECUTTER, Material.STONE_BRICK_SLAB, Material.STONE_BRICK_STAIRS, + Material.STONE_BRICK_WALL, Material.STONE_PRESSURE_PLATE, Material.STONE_SLAB, + Material.STONE_STAIRS, Material.TALL_SEAGRASS, Material.TUBE_CORAL, Material.TUBE_CORAL_FAN, Material.TUBE_CORAL_WALL_FAN, Material.TURTLE_EGG, - Material.LEGACY_WALL_SIGN, Material.WATER, Material.WHITE_BANNER, Material.WHITE_BED, @@ -560,7 +655,6 @@ private static IBlockData getBlockData(World world, int x, int y, int z, boolean if(!loadChunk && !chunkProviderServer.isLoaded(chunkX, chunkZ)) return null; IChunkAccess chunk = chunkProviderServer.getChunkAt(chunkX, chunkZ, ChunkStatus.FULL, true); - return chunk != null ? chunk.getType(new BlockPosition(x,y,z)) : null; } From 433e7272efd94565af952014fe0e33fa611556b7 Mon Sep 17 00:00:00 2001 From: Jonas Lateur Date: Sun, 23 Jun 2019 12:28:29 +0200 Subject: [PATCH 3/3] Changes: - update source to 4.4.4 --- API/pom.xml | 2 +- Plugin/pom.xml | 20 ++++++++--------- .../com/lishid/orebfuscator/Orebfuscator.java | 4 ++-- .../orebfuscator/nms/v1_13_R2/ChunkCache.java | 9 ++------ .../orebfuscator/nms/v1_13_R2/NmsManager.java | 22 ++++--------------- .../orebfuscator/nms/v1_14_R1/ChunkCache.java | 19 ++++++---------- .../orebfuscator/nms/v1_14_R1/NmsManager.java | 20 +++++------------ 7 files changed, 31 insertions(+), 65 deletions(-) diff --git a/API/pom.xml b/API/pom.xml index 59181ceba..184830aee 100644 --- a/API/pom.xml +++ b/API/pom.xml @@ -31,7 +31,7 @@ org.spigotmc spigot-api - 1.14-R0.1-SNAPSHOT + 1.14.2-R0.1-SNAPSHOT provided true diff --git a/Plugin/pom.xml b/Plugin/pom.xml index 399a775c3..20fc28f43 100644 --- a/Plugin/pom.xml +++ b/Plugin/pom.xml @@ -4,7 +4,7 @@ com.lishid orebfuscator - 4.4.3-SNAPSHOT + 4.4.4 jar Orebfuscator4 @@ -20,7 +20,7 @@ org.spigotmc spigot-api - 1.14-R0.1-SNAPSHOT + 1.13.2-R0.1-SNAPSHOT provided true @@ -105,14 +105,14 @@ compile true - - com.lishid - orebfuscator-v1_14_R1 - v1_14_R1 - jar - compile - true - + + com.lishid + orebfuscator-v1_14_R1 + v1_14_R1 + jar + compile + true + diff --git a/Plugin/src/main/java/com/lishid/orebfuscator/Orebfuscator.java b/Plugin/src/main/java/com/lishid/orebfuscator/Orebfuscator.java index ee6e4ca07..6121f1d42 100644 --- a/Plugin/src/main/java/com/lishid/orebfuscator/Orebfuscator.java +++ b/Plugin/src/main/java/com/lishid/orebfuscator/Orebfuscator.java @@ -142,11 +142,11 @@ public void reloadOrebfuscatorConfig() { private static INmsManager createNmsManager() { String serverVersion = org.bukkit.Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3]; - System.out.println(serverVersion); if(serverVersion.equals("v1_14_R1")) { return new com.lishid.orebfuscator.nms.v1_14_R1.NmsManager(); - }else if(serverVersion.equals("v1_13_R2")) { + } + else if(serverVersion.equals("v1_13_R2")) { return new com.lishid.orebfuscator.nms.v1_13_R2.NmsManager(); } else if(serverVersion.equals("v1_13_R1")) { diff --git a/v1_13_R2/src/main/java/com/lishid/orebfuscator/nms/v1_13_R2/ChunkCache.java b/v1_13_R2/src/main/java/com/lishid/orebfuscator/nms/v1_13_R2/ChunkCache.java index 714b996ef..c8e1e1782 100644 --- a/v1_13_R2/src/main/java/com/lishid/orebfuscator/nms/v1_13_R2/ChunkCache.java +++ b/v1_13_R2/src/main/java/com/lishid/orebfuscator/nms/v1_13_R2/ChunkCache.java @@ -79,13 +79,8 @@ private synchronized void closeCacheFilesInternal() { try { Method c = regionFile.getClass().getDeclaredMethod("c"); c.invoke(regionFile); - } catch (NoSuchMethodException nsme) { - try { - Method close = regionFile.getClass().getDeclaredMethod("close"); - close.invoke(regionFile); - } catch (NoSuchMethodException nsme2) { - - } + } catch (Exception nsme) { + regionFile.close(); } } } diff --git a/v1_13_R2/src/main/java/com/lishid/orebfuscator/nms/v1_13_R2/NmsManager.java b/v1_13_R2/src/main/java/com/lishid/orebfuscator/nms/v1_13_R2/NmsManager.java index 3048c3a68..96a744f83 100644 --- a/v1_13_R2/src/main/java/com/lishid/orebfuscator/nms/v1_13_R2/NmsManager.java +++ b/v1_13_R2/src/main/java/com/lishid/orebfuscator/nms/v1_13_R2/NmsManager.java @@ -433,12 +433,9 @@ public void updateBlockTileEntity(BlockCoord blockCoord, Player player) { // 1.13.2 has made this quite a bit different in later builds. TileEntity tileEntity = null; try { - Method getTileEntityAt = world.getClass().getMethod("getTileEntityAt", int.class, int.class, int.class); - tileEntity = (TileEntity) getTileEntityAt.invoke(world, blockCoord.x, blockCoord.y, blockCoord.z); - } catch (NoSuchMethodException nsme) { + // hasty hf introduced issue due to getDeclaredMethod, it's not declared in WorldServer but in World tileEntity = world.getHandle().getTileEntity(new BlockPosition(blockCoord.x, blockCoord.y, blockCoord.z)); - } catch (Exception e) { - return; + } catch (Exception nsme) { } if (tileEntity == null) { @@ -542,19 +539,8 @@ private static IBlockData getBlockData(World world, int x, int y, int z, boolean // like in ChunkCache, NMS change without R increment. ChunkProviderServer chunkProviderServer = null; try { - Method getChunkProviderServer = worldServer.getClass().getDeclaredMethod("getChunkProviderServer"); - chunkProviderServer = (ChunkProviderServer) getChunkProviderServer.invoke(worldServer); - } catch (NoSuchMethodException nmfe) { - try { - Method getChunkProvider = worldServer.getClass().getDeclaredMethod("getChunkProvider"); - chunkProviderServer = (ChunkProviderServer) getChunkProvider.invoke(worldServer); - } catch (NoSuchMethodException nsme) { - return null; // oops - } catch (Exception e) { - return null; - } - } catch (Exception e) { - return null; + chunkProviderServer = worldServer.getChunkProvider(); + } catch (Exception nmfe) { } if(!loadChunk && !chunkProviderServer.isLoaded(chunkX, chunkZ)) return null; diff --git a/v1_14_R1/src/main/java/com/lishid/orebfuscator/nms/v1_14_R1/ChunkCache.java b/v1_14_R1/src/main/java/com/lishid/orebfuscator/nms/v1_14_R1/ChunkCache.java index e34b1b143..12fc5c9ad 100644 --- a/v1_14_R1/src/main/java/com/lishid/orebfuscator/nms/v1_14_R1/ChunkCache.java +++ b/v1_14_R1/src/main/java/com/lishid/orebfuscator/nms/v1_14_R1/ChunkCache.java @@ -76,18 +76,13 @@ private synchronized void closeCacheFilesInternal() { for (RegionFile regionFile : cachedRegionFiles.values()) { try { if (regionFile != null) { - // This lovely piece of work is due to an NMS change in Spigot 1.13.2 without an R increase. - try { - Method c = regionFile.getClass().getDeclaredMethod("c"); - c.invoke(regionFile); - } catch (NoSuchMethodException nsme) { - try { - Method close = regionFile.getClass().getDeclaredMethod("close"); - close.invoke(regionFile); - } catch (NoSuchMethodException nsme2) { - - } - } + // This lovely piece of work is due to an NMS change in Spigot 1.13.2 without an R increase. + try { + Method c = regionFile.getClass().getDeclaredMethod("c"); + c.invoke(regionFile); + } catch (Exception nsme) { + regionFile.close(); + } } } catch (Exception e) { diff --git a/v1_14_R1/src/main/java/com/lishid/orebfuscator/nms/v1_14_R1/NmsManager.java b/v1_14_R1/src/main/java/com/lishid/orebfuscator/nms/v1_14_R1/NmsManager.java index d6f1009ae..1de5e92f8 100644 --- a/v1_14_R1/src/main/java/com/lishid/orebfuscator/nms/v1_14_R1/NmsManager.java +++ b/v1_14_R1/src/main/java/com/lishid/orebfuscator/nms/v1_14_R1/NmsManager.java @@ -527,7 +527,7 @@ public IChunkCache createChunkCache() { public void updateBlockTileEntity(BlockCoord blockCoord, Player player) { CraftWorld world = (CraftWorld)player.getWorld(); // 1.13.2 has made this quite a bit different in later builds. - TileEntity tileEntity = null; + TileEntity tileEntity; try { Method getTileEntityAt = world.getClass().getMethod("getTileEntityAt", int.class, int.class, int.class); tileEntity = (TileEntity) getTileEntityAt.invoke(world, blockCoord.x, blockCoord.y, blockCoord.z); @@ -638,23 +638,13 @@ private static IBlockData getBlockData(World world, int x, int y, int z, boolean // like in ChunkCache, NMS change without R increment. ChunkProviderServer chunkProviderServer = null; try { - Method getChunkProviderServer = worldServer.getClass().getDeclaredMethod("getChunkProviderServer"); - chunkProviderServer = (ChunkProviderServer) getChunkProviderServer.invoke(worldServer); - } catch (NoSuchMethodException nmfe) { - try { - Method getChunkProvider = worldServer.getClass().getDeclaredMethod("getChunkProvider"); - chunkProviderServer = (ChunkProviderServer) getChunkProvider.invoke(worldServer); - } catch (NoSuchMethodException nsme) { - return null; // oops - } catch (Exception e) { - return null; - } - } catch (Exception e) { - return null; + chunkProviderServer = worldServer.getChunkProvider(); + } catch (Exception nmfe) { } + if(!loadChunk && !chunkProviderServer.isLoaded(chunkX, chunkZ)) return null; - IChunkAccess chunk = chunkProviderServer.getChunkAt(chunkX, chunkZ, ChunkStatus.FULL, true); + Chunk chunk = (Chunk) chunkProviderServer.getChunkAt(chunkX, chunkZ, ChunkStatus.FULL, true); return chunk != null ? chunk.getType(new BlockPosition(x,y,z)) : null; }