From 5aaa09f392f85c6962ab6c6e92466973af872651 Mon Sep 17 00:00:00 2001 From: Ste3et_C0st Date: Thu, 19 Dec 2019 01:30:35 +0100 Subject: [PATCH] Add Camera Functionality for 1.9,1.10,1.11,1.12 --- .../Furniture/Camera/Utils/GetBlocks.java | 41 +++++++++------ .../Camera/Utils/MinecraftBlockColor.java | 13 +++++ .../Camera/Utils/v1_10/BlockColor.java | 50 +++++++++++++++++++ .../Camera/Utils/v1_11/BlockColor.java | 50 +++++++++++++++++++ .../Camera/Utils/v1_12/BlockColor.java | 50 +++++++++++++++++++ .../Camera/Utils/v1_13/BlockColor.java | 35 +++++++++++++ .../Camera/Utils/v1_14/BlockColor.java | 35 +++++++++++++ .../Camera/Utils/v1_15/BlockColor.java | 35 +++++++++++++ .../Camera/Utils/v1_9/BlockColor.java | 50 +++++++++++++++++++ .../Furniture/Objects/electric/camera.java | 16 +++--- 10 files changed, 350 insertions(+), 25 deletions(-) create mode 100644 src/de/Ste3et_C0st/Furniture/Camera/Utils/MinecraftBlockColor.java create mode 100644 src/de/Ste3et_C0st/Furniture/Camera/Utils/v1_10/BlockColor.java create mode 100644 src/de/Ste3et_C0st/Furniture/Camera/Utils/v1_11/BlockColor.java create mode 100644 src/de/Ste3et_C0st/Furniture/Camera/Utils/v1_12/BlockColor.java create mode 100644 src/de/Ste3et_C0st/Furniture/Camera/Utils/v1_13/BlockColor.java create mode 100644 src/de/Ste3et_C0st/Furniture/Camera/Utils/v1_14/BlockColor.java create mode 100644 src/de/Ste3et_C0st/Furniture/Camera/Utils/v1_15/BlockColor.java create mode 100644 src/de/Ste3et_C0st/Furniture/Camera/Utils/v1_9/BlockColor.java diff --git a/src/de/Ste3et_C0st/Furniture/Camera/Utils/GetBlocks.java b/src/de/Ste3et_C0st/Furniture/Camera/Utils/GetBlocks.java index 0d8c598..fc89c8e 100644 --- a/src/de/Ste3et_C0st/Furniture/Camera/Utils/GetBlocks.java +++ b/src/de/Ste3et_C0st/Furniture/Camera/Utils/GetBlocks.java @@ -2,27 +2,37 @@ package de.Ste3et_C0st.Furniture.Camera.Utils; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.Random; -import org.apache.commons.lang.reflect.MethodUtils; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import de.Ste3et_C0st.Furniture.Main.main; import de.Ste3et_C0st.FurnitureLib.Utilitis.Relative; -import de.Ste3et_C0st.FurnitureLib.main.FurnitureLib; public class GetBlocks { - //Class CraftBlockClass = null; - Class CraftMagicNumbersClass = null; + public static MinecraftBlockColor colorBlock; + + static { + try { + Class color = Class.forName("de.Ste3et_C0st.Furniture.Camera.Utils." + MinecraftBlockColor.getMainVersion() + ".BlockColor"); + if(Objects.nonNull(color)) { + colorBlock = (MinecraftBlockColor) color.newInstance(); + }else { + colorBlock = de.Ste3et_C0st.Furniture.Camera.Utils.v1_13.BlockColor.class.newInstance(); + } + }catch (Exception e) { + e.printStackTrace(); + } + } + public String getBukkitVersion() {return Bukkit.getServer().getClass().getPackage().getName().replace(".", ",").split(",")[3];} public List returnBlocks(Location startLocation, int width, int heigt, int depth, int offsetZ){ try{ - this.CraftMagicNumbersClass = Class.forName("org.bukkit.craftbukkit."+getBukkitVersion()+".util.CraftMagicNumbers"); - BlockFace face = main.getLocationUtil().yawToFace(startLocation.getYaw()).getOppositeFace(); List layerList = new ArrayList(); for(int i = depth; i>=0; i--){ @@ -46,15 +56,16 @@ public class GetBlocks { public Byte getByteFromBlock(Block b){ try { - Object nmsBlock = CraftMagicNumbersClass.getMethod("getBlock", org.bukkit.Material.class).invoke(null, b.getType()); - Object iBlockData = nmsBlock.getClass().getMethod("getBlockData").invoke(nmsBlock); - Object Material = MethodUtils.invokeMethod(iBlockData, "getMaterial", null); - Object MaterialMapColor = MethodUtils.invokeMethod(Material, "i", null); - int color = MaterialMapColor.getClass().getField("ac").getInt(MaterialMapColor) * 4; -// if(color == 28){ -// color += randInt(0, 3); -// } - return (byte) color; + return colorBlock.getBlockColor(b); +// Object nmsBlock = CraftMagicNumbersClass.getMethod("getBlock", org.bukkit.Material.class).invoke(null, b.getType()); +// Object iBlockData = nmsBlock.getClass().getMethod("getBlockData").invoke(nmsBlock); +// Object Material = MethodUtils.invokeMethod(iBlockData, "getMaterial", null); +// Object MaterialMapColor = MethodUtils.invokeMethod(Material, "i", null); +// int color = MaterialMapColor.getClass().getField("ac").getInt(MaterialMapColor) * 4; +//// if(color == 28){ +//// color += randInt(0, 3); +//// } +// return (byte) color; } catch (Exception e) { //e.printStackTrace(); return 0; diff --git a/src/de/Ste3et_C0st/Furniture/Camera/Utils/MinecraftBlockColor.java b/src/de/Ste3et_C0st/Furniture/Camera/Utils/MinecraftBlockColor.java new file mode 100644 index 0000000..805ea61 --- /dev/null +++ b/src/de/Ste3et_C0st/Furniture/Camera/Utils/MinecraftBlockColor.java @@ -0,0 +1,13 @@ +package de.Ste3et_C0st.Furniture.Camera.Utils; + +import org.bukkit.Bukkit; +import org.bukkit.block.Block; + +public abstract class MinecraftBlockColor { + + public abstract Byte getBlockColor(Block b); + + public static String getBukkitVersion() {return Bukkit.getServer().getClass().getPackage().getName().replace(".", ",").split(",")[3];} + public static String getMainVersion() {return "v1_" + getBukkitVersion().split("_")[1];} + +} diff --git a/src/de/Ste3et_C0st/Furniture/Camera/Utils/v1_10/BlockColor.java b/src/de/Ste3et_C0st/Furniture/Camera/Utils/v1_10/BlockColor.java new file mode 100644 index 0000000..3160e0f --- /dev/null +++ b/src/de/Ste3et_C0st/Furniture/Camera/Utils/v1_10/BlockColor.java @@ -0,0 +1,50 @@ +package de.Ste3et_C0st.Furniture.Camera.Utils.v1_10; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; + +import org.bukkit.block.Block; + +import de.Ste3et_C0st.Furniture.Camera.Utils.MinecraftBlockColor; + +public class BlockColor extends MinecraftBlockColor{ + + private static Class iBlockDataClazz,BlockClazz, MaterialMapColorClazz; + + static { + try { + BlockClazz = Class.forName("net.minecraft.server." + getBukkitVersion() + ".Block"); + iBlockDataClazz = Class.forName("net.minecraft.server." + getBukkitVersion() + ".IBlockData"); + MaterialMapColorClazz = Class.forName("net.minecraft.server." + getBukkitVersion() + ".MaterialMapColor"); + }catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public Byte getBlockColor(Block b) { + try { + int combined = b.getType().getId() + (b.getData() << 12); + + Method iBlockDataMethod = BlockClazz.getDeclaredMethod("getByCombinedId", int.class); + Object iblockData = iBlockDataMethod.invoke(null, combined); + + Method getBlockMethod = iBlockDataClazz.getMethod("getBlock"); + Object nmsBlock = getBlockMethod.invoke(iblockData); + + Field BlockFieldy = BlockClazz.getDeclaredField("y"); + BlockFieldy.setAccessible(true); + Object materialMapColor = BlockFieldy.get(nmsBlock); + + Field MaterialMapColorFieldM = MaterialMapColorClazz.getDeclaredField("M"); + MaterialMapColorFieldM.setAccessible(true); + int color = MaterialMapColorFieldM.getInt(materialMapColor) * 4; + + return (byte) color; + }catch (Exception e) { + e.printStackTrace(); + } + return null; + } + +} diff --git a/src/de/Ste3et_C0st/Furniture/Camera/Utils/v1_11/BlockColor.java b/src/de/Ste3et_C0st/Furniture/Camera/Utils/v1_11/BlockColor.java new file mode 100644 index 0000000..f705a7f --- /dev/null +++ b/src/de/Ste3et_C0st/Furniture/Camera/Utils/v1_11/BlockColor.java @@ -0,0 +1,50 @@ +package de.Ste3et_C0st.Furniture.Camera.Utils.v1_11; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; + +import org.bukkit.block.Block; + +import de.Ste3et_C0st.Furniture.Camera.Utils.MinecraftBlockColor; + +public class BlockColor extends MinecraftBlockColor{ + + private static Class iBlockDataClazz,BlockClazz, MaterialMapColorClazz; + + static { + try { + BlockClazz = Class.forName("net.minecraft.server." + getBukkitVersion() + ".Block"); + iBlockDataClazz = Class.forName("net.minecraft.server." + getBukkitVersion() + ".IBlockData"); + MaterialMapColorClazz = Class.forName("net.minecraft.server." + getBukkitVersion() + ".MaterialMapColor"); + }catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public Byte getBlockColor(Block b) { + try { + int combined = b.getType().getId() + (b.getData() << 12); + + Method iBlockDataMethod = BlockClazz.getDeclaredMethod("getByCombinedId", int.class); + Object iblockData = iBlockDataMethod.invoke(null, combined); + + Method getBlockMethod = iBlockDataClazz.getMethod("getBlock"); + Object nmsBlock = getBlockMethod.invoke(iblockData); + + Field BlockFieldy = BlockClazz.getDeclaredField("y"); + BlockFieldy.setAccessible(true); + Object materialMapColor = BlockFieldy.get(nmsBlock); + + Field MaterialMapColorFieldM = MaterialMapColorClazz.getDeclaredField("M"); + MaterialMapColorFieldM.setAccessible(true); + int color = MaterialMapColorFieldM.getInt(materialMapColor) * 4; + + return (byte) color; + }catch (Exception e) { + e.printStackTrace(); + } + return null; + } + +} diff --git a/src/de/Ste3et_C0st/Furniture/Camera/Utils/v1_12/BlockColor.java b/src/de/Ste3et_C0st/Furniture/Camera/Utils/v1_12/BlockColor.java new file mode 100644 index 0000000..a08d11f --- /dev/null +++ b/src/de/Ste3et_C0st/Furniture/Camera/Utils/v1_12/BlockColor.java @@ -0,0 +1,50 @@ +package de.Ste3et_C0st.Furniture.Camera.Utils.v1_12; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; + +import org.bukkit.block.Block; + +import de.Ste3et_C0st.Furniture.Camera.Utils.MinecraftBlockColor; + +public class BlockColor extends MinecraftBlockColor{ + + private static Class iBlockDataClazz,BlockClazz, MaterialMapColorClazz; + + static { + try { + BlockClazz = Class.forName("net.minecraft.server." + getBukkitVersion() + ".Block"); + iBlockDataClazz = Class.forName("net.minecraft.server." + getBukkitVersion() + ".IBlockData"); + MaterialMapColorClazz = Class.forName("net.minecraft.server." + getBukkitVersion() + ".MaterialMapColor"); + }catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public Byte getBlockColor(Block b) { + try { + int combined = b.getType().getId() + (b.getData() << 12); + + Method iBlockDataMethod = BlockClazz.getDeclaredMethod("getByCombinedId", int.class); + Object iblockData = iBlockDataMethod.invoke(null, combined); + + Method getBlockMethod = iBlockDataClazz.getMethod("getBlock"); + Object nmsBlock = getBlockMethod.invoke(iblockData); + + Field BlockFieldy = BlockClazz.getDeclaredField("y"); + BlockFieldy.setAccessible(true); + Object materialMapColor = BlockFieldy.get(nmsBlock); + + Field MaterialMapColorFieldM = MaterialMapColorClazz.getDeclaredField("ad"); + MaterialMapColorFieldM.setAccessible(true); + int color = MaterialMapColorFieldM.getInt(materialMapColor) * 4; + + return (byte) color; + }catch (Exception e) { + e.printStackTrace(); + } + return null; + } + +} diff --git a/src/de/Ste3et_C0st/Furniture/Camera/Utils/v1_13/BlockColor.java b/src/de/Ste3et_C0st/Furniture/Camera/Utils/v1_13/BlockColor.java new file mode 100644 index 0000000..7acc674 --- /dev/null +++ b/src/de/Ste3et_C0st/Furniture/Camera/Utils/v1_13/BlockColor.java @@ -0,0 +1,35 @@ +package de.Ste3et_C0st.Furniture.Camera.Utils.v1_13; + +import org.apache.commons.lang.reflect.MethodUtils; +import org.bukkit.block.Block; + +import de.Ste3et_C0st.Furniture.Camera.Utils.MinecraftBlockColor; + +public class BlockColor extends MinecraftBlockColor{ + + private static Class CraftMagicNumbersClass; + + static { + try { + CraftMagicNumbersClass = Class.forName("org.bukkit.craftbukkit." + getBukkitVersion() + ".util.CraftMagicNumbers"); + }catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public Byte getBlockColor(Block b) { + try { + Object nmsBlock = CraftMagicNumbersClass.getMethod("getBlock", org.bukkit.Material.class).invoke(null, b.getType()); + Object iBlockData = nmsBlock.getClass().getMethod("getBlockData").invoke(nmsBlock); + Object Material = MethodUtils.invokeMethod(iBlockData, "getMaterial", null); + Object MaterialMapColor = MethodUtils.invokeMethod(Material, "i", null); + int color = MaterialMapColor.getClass().getField("ac").getInt(MaterialMapColor) * 4; + return (byte) color; + }catch (Exception e) { + e.printStackTrace(); + } + return null; + } + +} diff --git a/src/de/Ste3et_C0st/Furniture/Camera/Utils/v1_14/BlockColor.java b/src/de/Ste3et_C0st/Furniture/Camera/Utils/v1_14/BlockColor.java new file mode 100644 index 0000000..bd9e2d4 --- /dev/null +++ b/src/de/Ste3et_C0st/Furniture/Camera/Utils/v1_14/BlockColor.java @@ -0,0 +1,35 @@ +package de.Ste3et_C0st.Furniture.Camera.Utils.v1_14; + +import org.apache.commons.lang.reflect.MethodUtils; +import org.bukkit.block.Block; + +import de.Ste3et_C0st.Furniture.Camera.Utils.MinecraftBlockColor; + +public class BlockColor extends MinecraftBlockColor{ + + private static Class CraftMagicNumbersClass; + + static { + try { + CraftMagicNumbersClass = Class.forName("org.bukkit.craftbukkit." + getBukkitVersion() + ".util.CraftMagicNumbers"); + }catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public Byte getBlockColor(Block b) { + try { + Object nmsBlock = CraftMagicNumbersClass.getMethod("getBlock", org.bukkit.Material.class).invoke(null, b.getType()); + Object iBlockData = nmsBlock.getClass().getMethod("getBlockData").invoke(nmsBlock); + Object Material = MethodUtils.invokeMethod(iBlockData, "getMaterial", null); + Object MaterialMapColor = MethodUtils.invokeMethod(Material, "i", null); + int color = MaterialMapColor.getClass().getField("ac").getInt(MaterialMapColor) * 4; + return (byte) color; + }catch (Exception e) { + e.printStackTrace(); + } + return null; + } + +} diff --git a/src/de/Ste3et_C0st/Furniture/Camera/Utils/v1_15/BlockColor.java b/src/de/Ste3et_C0st/Furniture/Camera/Utils/v1_15/BlockColor.java new file mode 100644 index 0000000..fbd8ae6 --- /dev/null +++ b/src/de/Ste3et_C0st/Furniture/Camera/Utils/v1_15/BlockColor.java @@ -0,0 +1,35 @@ +package de.Ste3et_C0st.Furniture.Camera.Utils.v1_15; + +import org.apache.commons.lang.reflect.MethodUtils; +import org.bukkit.block.Block; + +import de.Ste3et_C0st.Furniture.Camera.Utils.MinecraftBlockColor; + +public class BlockColor extends MinecraftBlockColor{ + + private static Class CraftMagicNumbersClass; + + static { + try { + CraftMagicNumbersClass = Class.forName("org.bukkit.craftbukkit." + getBukkitVersion() + ".util.CraftMagicNumbers"); + }catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public Byte getBlockColor(Block b) { + try { + Object nmsBlock = CraftMagicNumbersClass.getMethod("getBlock", org.bukkit.Material.class).invoke(null, b.getType()); + Object iBlockData = nmsBlock.getClass().getMethod("getBlockData").invoke(nmsBlock); + Object Material = MethodUtils.invokeMethod(iBlockData, "getMaterial", null); + Object MaterialMapColor = MethodUtils.invokeMethod(Material, "i", null); + int color = MaterialMapColor.getClass().getField("ac").getInt(MaterialMapColor) * 4; + return (byte) color; + }catch (Exception e) { + e.printStackTrace(); + } + return null; + } + +} diff --git a/src/de/Ste3et_C0st/Furniture/Camera/Utils/v1_9/BlockColor.java b/src/de/Ste3et_C0st/Furniture/Camera/Utils/v1_9/BlockColor.java new file mode 100644 index 0000000..f2aba32 --- /dev/null +++ b/src/de/Ste3et_C0st/Furniture/Camera/Utils/v1_9/BlockColor.java @@ -0,0 +1,50 @@ +package de.Ste3et_C0st.Furniture.Camera.Utils.v1_9; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; + +import org.bukkit.block.Block; + +import de.Ste3et_C0st.Furniture.Camera.Utils.MinecraftBlockColor; + +public class BlockColor extends MinecraftBlockColor{ + + private static Class iBlockDataClazz,BlockClazz, MaterialMapColorClazz; + + static { + try { + BlockClazz = Class.forName("net.minecraft.server." + getBukkitVersion() + ".Block"); + iBlockDataClazz = Class.forName("net.minecraft.server." + getBukkitVersion() + ".IBlockData"); + MaterialMapColorClazz = Class.forName("net.minecraft.server." + getBukkitVersion() + ".MaterialMapColor"); + }catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public Byte getBlockColor(Block b) { + try { + int combined = b.getType().getId() + (b.getData() << 12); + + Method iBlockDataMethod = BlockClazz.getDeclaredMethod("getByCombinedId", int.class); + Object iblockData = iBlockDataMethod.invoke(null, combined); + + Method getBlockMethod = iBlockDataClazz.getMethod("getBlock"); + Object nmsBlock = getBlockMethod.invoke(iblockData); + + Field BlockFieldy = BlockClazz.getDeclaredField("y"); + BlockFieldy.setAccessible(true); + Object materialMapColor = BlockFieldy.get(nmsBlock); + + Field MaterialMapColorFieldM = MaterialMapColorClazz.getDeclaredField("M"); + MaterialMapColorFieldM.setAccessible(true); + int color = MaterialMapColorFieldM.getInt(materialMapColor) * 4; + + return (byte) color; + }catch (Exception e) { + e.printStackTrace(); + } + return null; + } + +} diff --git a/src/de/Ste3et_C0st/Furniture/Objects/electric/camera.java b/src/de/Ste3et_C0st/Furniture/Objects/electric/camera.java index 7f3029f..10100c5 100644 --- a/src/de/Ste3et_C0st/Furniture/Objects/electric/camera.java +++ b/src/de/Ste3et_C0st/Furniture/Objects/electric/camera.java @@ -26,25 +26,22 @@ public class camera extends Furniture{ super(id); boolean b = false; for(fEntity stand : id.getPacketList()){ + if(stand.isCustomNameVisible()) { + b = true; + stand.setNameVasibility(false); + } if(stand.getCustomName().startsWith("#ZOOM")){ - if(stand.isCustomNameVisible()){ - stand.setNameVasibility(false); - b = true; - } this.entity2 = stand; zoom = stand.getCustomName(); } + if(stand.getItemInMainHand() != null){ if(stand.getItemInMainHand().getType().equals(Material.TRIPWIRE_HOOK)){ this.entity = stand; } } - - } - - if(b){ - update(); } + if(b) update(); } public void setZoom(){ @@ -79,7 +76,6 @@ public class camera extends Furniture{ if(getObjID() == null) return; if(getObjID().getSQLAction().equals(SQLAction.REMOVE)) return; if(player == null) return; - player.sendMessage("test"); Location pLocation = getLutil().getRelativ(player.getLocation().getBlock().getLocation(), getBlockFace(), -1D, 0D).clone(); Location locCopy = getLocation().getBlock().getLocation().clone(); pLocation.setYaw(locCopy.getYaw());