mirror of
https://github.com/songoda/EpicHoppers.git
synced 2025-02-10 00:41:35 +01:00
Fix for missing class in legacy versions & incompatible material
This commit is contained in:
parent
1b7df845b8
commit
36583c25e8
@ -4,7 +4,7 @@ stages:
|
||||
variables:
|
||||
name: "EpicHoppers"
|
||||
path: "/builds/$CI_PROJECT_PATH"
|
||||
version: "4-pre-release-1"
|
||||
version: "4-pre-release-1-B2"
|
||||
|
||||
build:
|
||||
stage: build
|
||||
|
@ -8,6 +8,7 @@ import com.songoda.epichoppers.hopper.levels.modules.Module;
|
||||
import com.songoda.epichoppers.player.SyncType;
|
||||
import com.songoda.epichoppers.utils.CostType;
|
||||
import com.songoda.epichoppers.utils.Methods;
|
||||
import com.songoda.epichoppers.utils.ServerVersion;
|
||||
import com.songoda.epichoppers.utils.TeleportTrigger;
|
||||
import com.songoda.epichoppers.utils.gui.AbstractGUI;
|
||||
import org.bukkit.Bukkit;
|
||||
@ -63,7 +64,7 @@ public class GUIOverview extends AbstractGUI {
|
||||
perlmeta.setLore(loreperl);
|
||||
perl.setItemMeta(perlmeta);
|
||||
|
||||
ItemStack filter = new ItemStack(Material.COMPARATOR, 1);
|
||||
ItemStack filter = new ItemStack(plugin.isServerVersionAtLeast(ServerVersion.V1_13) ? Material.COMPARATOR : Material.valueOf("REDSTONE_COMPARATR"), 1);
|
||||
ItemMeta filtermeta = filter.getItemMeta();
|
||||
filtermeta.setDisplayName(plugin.getLocale().getMessage("interface.hopper.filtertitle"));
|
||||
ArrayList<String> lorefilter = new ArrayList<>();
|
||||
|
@ -309,7 +309,7 @@ public class HopTask extends BukkitRunnable {
|
||||
}
|
||||
|
||||
private Class<?> clazzCraftWorld, clazzCraftBlock, clazzBlockPosition;
|
||||
private Method getHandle, updateAdjacentComparators, getNMS, getBlock;
|
||||
private Method getHandle, updateAdjacentComparators, getNMSBlock;
|
||||
|
||||
private void updateAdjacentComparators(Location location) {
|
||||
try {
|
||||
@ -320,26 +320,23 @@ public class HopTask extends BukkitRunnable {
|
||||
clazzCraftBlock = Class.forName("org.bukkit.craftbukkit." + ver + ".block.CraftBlock");
|
||||
clazzBlockPosition = Class.forName("net.minecraft.server." + ver + ".BlockPosition");
|
||||
Class<?> clazzWorld = Class.forName("net.minecraft.server." + ver + ".World");
|
||||
Class<?> clazzIBlockData = Class.forName("net.minecraft.server." + ver + ".IBlockData");
|
||||
Class<?> clazzBlock = Class.forName("net.minecraft.server." + ver + ".Block");
|
||||
|
||||
getHandle = clazzCraftWorld.getMethod("getHandle");
|
||||
updateAdjacentComparators = clazzWorld.getMethod("updateAdjacentComparators", clazzBlockPosition, clazzBlock);
|
||||
getNMS = clazzCraftBlock.getMethod("getNMS");
|
||||
getBlock = clazzIBlockData.getMethod("getBlock");
|
||||
getNMSBlock = clazzCraftBlock.getMethod("getNMSBlock");
|
||||
}
|
||||
|
||||
// invoke and cast objects.
|
||||
Object craftWorld = clazzCraftWorld.cast(location.getWorld());
|
||||
Object world = getHandle.invoke(craftWorld);
|
||||
Object craftBlock = clazzCraftBlock.cast(location.getBlock());
|
||||
Object iBlockData = getNMS.invoke(craftBlock);
|
||||
|
||||
// Invoke final method.
|
||||
updateAdjacentComparators
|
||||
.invoke(world, clazzBlockPosition.getConstructor(double.class, double.class, double.class)
|
||||
.newInstance(location.getX(), location.getY(), location.getZ()),
|
||||
getBlock.invoke(iBlockData));
|
||||
getNMSBlock.invoke(craftBlock));
|
||||
|
||||
} catch (ReflectiveOperationException e) {
|
||||
e.printStackTrace();
|
||||
|
Loading…
Reference in New Issue
Block a user