From 30a4c20822fa83b4f2094eaa83bffb68e7d97405 Mon Sep 17 00:00:00 2001 From: Mark Hughes Date: Thu, 18 Aug 2016 16:42:24 +1000 Subject: [PATCH] =?UTF-8?q?Forge=20Support=20=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nms/NmsItemStackCreate17R4P.java | 5 +++ .../massivecore/nms/ServerType.java | 36 +++++++++++++++++++ .../particleeffect/ReflectionUtils.java | 4 ++- 3 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 src/com/massivecraft/massivecore/nms/ServerType.java diff --git a/src/com/massivecraft/massivecore/nms/NmsItemStackCreate17R4P.java b/src/com/massivecraft/massivecore/nms/NmsItemStackCreate17R4P.java index 8746d60e..fb380196 100644 --- a/src/com/massivecraft/massivecore/nms/NmsItemStackCreate17R4P.java +++ b/src/com/massivecraft/massivecore/nms/NmsItemStackCreate17R4P.java @@ -56,6 +56,11 @@ public class NmsItemStackCreate17R4P extends NmsItemStackCreate public static Class getClassCraftItemStack() throws ClassNotFoundException { + if (ServerType.get() == ServerType.FORGE) + { + return PackageType.MINECRAFT_ITEM.getClass("ItemStack"); + } + return PackageType.MINECRAFT_SERVER.getClass("ItemStack"); } diff --git a/src/com/massivecraft/massivecore/nms/ServerType.java b/src/com/massivecraft/massivecore/nms/ServerType.java new file mode 100644 index 00000000..a57fe1f1 --- /dev/null +++ b/src/com/massivecraft/massivecore/nms/ServerType.java @@ -0,0 +1,36 @@ +package com.massivecraft.massivecore.nms; + +public enum ServerType +{ + // -------------------------------------------- // + // ENUM + // -------------------------------------------- // + + BUKKIT, + FORGE, + + ; + + // -------------------------------------------- // + // STATIC + // -------------------------------------------- // + + private static final ServerType type = determineType(); + + public static ServerType get() { return type; } + + private static ServerType determineType() + { + try + { + // this is a class used by ALL forge based servers + Class.forName("cpw.mods.fml.common.FMLCommonHandler"); + return FORGE; + } + catch (Exception e) + { + return BUKKIT; + } + } + +} diff --git a/src/com/massivecraft/massivecore/particleeffect/ReflectionUtils.java b/src/com/massivecraft/massivecore/particleeffect/ReflectionUtils.java index 4bbddc89..222db68c 100644 --- a/src/com/massivecraft/massivecore/particleeffect/ReflectionUtils.java +++ b/src/com/massivecraft/massivecore/particleeffect/ReflectionUtils.java @@ -352,7 +352,9 @@ public final class ReflectionUtils { * @since 1.0 */ public enum PackageType { - MINECRAFT_SERVER("net.minecraft.server." + getServerVersion()), + MINECRAFT("net.minecraft"), + MINECRAFT_ITEM(MINECRAFT, "item"), + MINECRAFT_SERVER(MINECRAFT, "server." + getServerVersion()), CRAFTBUKKIT("org.bukkit.craftbukkit." + getServerVersion()), CRAFTBUKKIT_BLOCK(CRAFTBUKKIT, "block"), CRAFTBUKKIT_CHUNKIO(CRAFTBUKKIT, "chunkio"),