mirror of
https://github.com/Auxilor/EcoMobs.git
synced 2025-12-21 16:09:24 +00:00
Updated to use new eco version
This commit is contained in:
@@ -7,7 +7,6 @@ plugins {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation project(":eco-core").getSubprojects()
|
implementation project(":eco-core").getSubprojects()
|
||||||
implementation 'com.willfp:eco:1.0.6'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
allprojects {
|
allprojects {
|
||||||
@@ -48,6 +47,8 @@ allprojects {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
compileOnly 'com.willfp:eco:3.0.0'
|
||||||
|
|
||||||
compileOnly 'org.jetbrains:annotations:19.0.0'
|
compileOnly 'org.jetbrains:annotations:19.0.0'
|
||||||
|
|
||||||
compileOnly 'org.projectlombok:lombok:1.18.16'
|
compileOnly 'org.projectlombok:lombok:1.18.16'
|
||||||
@@ -81,9 +82,6 @@ clean.doLast {
|
|||||||
}
|
}
|
||||||
|
|
||||||
shadowJar {
|
shadowJar {
|
||||||
relocate('org.apache.maven', 'com.willfp.illusioner.eco.shaded.maven')
|
|
||||||
relocate('org.bstats', 'com.willfp.illusioner.eco.shaded.bstats')
|
|
||||||
relocate('com.willfp.eco.', 'com.willfp.illusioner.eco.')
|
|
||||||
archiveFileName = findProperty("plugin-name") + " v" + findProperty("version") + ".jar"
|
archiveFileName = findProperty("plugin-name") + " v" + findProperty("version") + ".jar"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import com.willfp.illusioner.illusioner.IllusionerManager;
|
|||||||
import com.willfp.illusioner.illusioner.listeners.AttackListeners;
|
import com.willfp.illusioner.illusioner.listeners.AttackListeners;
|
||||||
import com.willfp.illusioner.illusioner.listeners.DeathListeners;
|
import com.willfp.illusioner.illusioner.listeners.DeathListeners;
|
||||||
import com.willfp.illusioner.illusioner.listeners.SpawnListeners;
|
import com.willfp.illusioner.illusioner.listeners.SpawnListeners;
|
||||||
|
import lombok.Getter;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -19,11 +20,18 @@ import java.util.List;
|
|||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public class IllusionerPlugin extends AbstractEcoPlugin {
|
public class IllusionerPlugin extends AbstractEcoPlugin {
|
||||||
|
/**
|
||||||
|
* Instance of the plugin.
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
private static IllusionerPlugin instance;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Internal constructor called by bukkit on plugin load.
|
* Internal constructor called by bukkit on plugin load.
|
||||||
*/
|
*/
|
||||||
public IllusionerPlugin() {
|
public IllusionerPlugin() {
|
||||||
super("Illusioner", 86576, 9596, "com.willfp.illusioner.proxy", "&9");
|
super("Illusioner", 86576, 9596, "com.willfp.illusioner.proxy", "&9");
|
||||||
|
instance = this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.willfp.illusioner.commands;
|
package com.willfp.illusioner.commands;
|
||||||
|
|
||||||
import com.willfp.eco.util.command.AbstractCommand;
|
import com.willfp.eco.util.command.AbstractCommand;
|
||||||
|
import com.willfp.eco.util.plugin.AbstractEcoPlugin;
|
||||||
import com.willfp.illusioner.IllusionerPlugin;
|
import com.willfp.illusioner.IllusionerPlugin;
|
||||||
import com.willfp.illusioner.illusioner.IllusionerManager;
|
import com.willfp.illusioner.illusioner.IllusionerManager;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package com.willfp.illusioner.commands;
|
package com.willfp.illusioner.commands;
|
||||||
|
|
||||||
import com.willfp.eco.util.command.AbstractCommand;
|
import com.willfp.eco.util.command.AbstractCommand;
|
||||||
import com.willfp.eco.util.config.Configs;
|
|
||||||
import com.willfp.illusioner.IllusionerPlugin;
|
import com.willfp.illusioner.IllusionerPlugin;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@@ -22,6 +21,6 @@ public class CommandIlreload extends AbstractCommand {
|
|||||||
public void onExecute(@NotNull final CommandSender sender,
|
public void onExecute(@NotNull final CommandSender sender,
|
||||||
@NotNull final List<String> args) {
|
@NotNull final List<String> args) {
|
||||||
this.getPlugin().reload();
|
this.getPlugin().reload();
|
||||||
sender.sendMessage(Configs.LANG.getMessage("reloaded"));
|
sender.sendMessage(this.getPlugin().getLangYml().getMessage("reloaded"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
package com.willfp.illusioner.config.configs;
|
package com.willfp.illusioner.config.configs;
|
||||||
|
|
||||||
import com.willfp.eco.util.config.BaseConfig;
|
import com.willfp.eco.util.config.BaseConfig;
|
||||||
|
import com.willfp.eco.util.plugin.AbstractEcoPlugin;
|
||||||
|
import com.willfp.illusioner.IllusionerPlugin;
|
||||||
|
|
||||||
public class Attacks extends BaseConfig {
|
public class Attacks extends BaseConfig {
|
||||||
/**
|
/**
|
||||||
* Instantiate attacks.yml.
|
* Instantiate attacks.yml.
|
||||||
*/
|
*/
|
||||||
public Attacks() {
|
public Attacks() {
|
||||||
super("attacks", false);
|
super("attacks", false, IllusionerPlugin.getInstance());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
package com.willfp.illusioner.config.configs;
|
package com.willfp.illusioner.config.configs;
|
||||||
|
|
||||||
import com.willfp.eco.util.config.BaseConfig;
|
import com.willfp.eco.util.config.BaseConfig;
|
||||||
|
import com.willfp.eco.util.plugin.AbstractEcoPlugin;
|
||||||
|
import com.willfp.illusioner.IllusionerPlugin;
|
||||||
|
|
||||||
public class Drops extends BaseConfig {
|
public class Drops extends BaseConfig {
|
||||||
/**
|
/**
|
||||||
* Instantiate drops.yml.
|
* Instantiate drops.yml.
|
||||||
*/
|
*/
|
||||||
public Drops() {
|
public Drops() {
|
||||||
super("drops", false);
|
super("drops", false, IllusionerPlugin.getInstance());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
package com.willfp.illusioner.config.configs;
|
package com.willfp.illusioner.config.configs;
|
||||||
|
|
||||||
import com.willfp.eco.util.config.BaseConfig;
|
import com.willfp.eco.util.config.BaseConfig;
|
||||||
|
import com.willfp.eco.util.plugin.AbstractEcoPlugin;
|
||||||
|
import com.willfp.illusioner.IllusionerPlugin;
|
||||||
|
|
||||||
public class Sounds extends BaseConfig {
|
public class Sounds extends BaseConfig {
|
||||||
/**
|
/**
|
||||||
* Instantiate sounds.yml.
|
* Instantiate sounds.yml.
|
||||||
*/
|
*/
|
||||||
public Sounds() {
|
public Sounds() {
|
||||||
super("sounds", false);
|
super("sounds", false, IllusionerPlugin.getInstance());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
package com.willfp.illusioner.illusioner;
|
package com.willfp.illusioner.illusioner;
|
||||||
|
|
||||||
|
import com.willfp.eco.util.plugin.AbstractEcoPlugin;
|
||||||
|
import com.willfp.illusioner.IllusionerPlugin;
|
||||||
import com.willfp.illusioner.illusioner.options.IllusionerOptions;
|
import com.willfp.illusioner.illusioner.options.IllusionerOptions;
|
||||||
|
|
||||||
public class IllusionerManager {
|
public class IllusionerManager {
|
||||||
/**
|
/**
|
||||||
* The options related to the illusioner.
|
* The options related to the illusioner.
|
||||||
*/
|
*/
|
||||||
public static final IllusionerOptions OPTIONS = new IllusionerOptions();
|
public static final IllusionerOptions OPTIONS = new IllusionerOptions(IllusionerPlugin.getInstance());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
package com.willfp.illusioner.illusioner.listeners;
|
package com.willfp.illusioner.illusioner.listeners;
|
||||||
|
|
||||||
import com.willfp.eco.util.ProxyUtils;
|
|
||||||
import com.willfp.eco.util.internal.PluginDependent;
|
import com.willfp.eco.util.internal.PluginDependent;
|
||||||
import com.willfp.eco.util.plugin.AbstractEcoPlugin;
|
import com.willfp.eco.util.plugin.AbstractEcoPlugin;
|
||||||
import com.willfp.illusioner.illusioner.BlockStructure;
|
import com.willfp.illusioner.illusioner.BlockStructure;
|
||||||
import com.willfp.illusioner.illusioner.IllusionerManager;
|
import com.willfp.illusioner.illusioner.IllusionerManager;
|
||||||
import com.willfp.illusioner.proxy.proxies.EntityIllusionerProxy;
|
import com.willfp.illusioner.proxy.proxies.EntityIllusionerProxy;
|
||||||
import com.willfp.illusioner.proxy.proxies.IllusionerHelperProxy;
|
import com.willfp.illusioner.proxy.proxies.IllusionerHelperProxy;
|
||||||
|
import com.willfp.illusioner.util.ProxyUtils;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.entity.Illusioner;
|
import org.bukkit.entity.Illusioner;
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.willfp.illusioner.illusioner.options;
|
package com.willfp.illusioner.illusioner.options;
|
||||||
|
|
||||||
import com.willfp.eco.util.config.Configs;
|
import com.willfp.eco.util.internal.PluginDependent;
|
||||||
|
import com.willfp.eco.util.plugin.AbstractEcoPlugin;
|
||||||
import com.willfp.illusioner.config.IllusionerConfigs;
|
import com.willfp.illusioner.config.IllusionerConfigs;
|
||||||
import com.willfp.illusioner.illusioner.OptionedSound;
|
import com.willfp.illusioner.illusioner.OptionedSound;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@@ -14,7 +15,7 @@ import java.util.HashSet;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@ToString
|
@ToString
|
||||||
public class GameplayOptions {
|
public class GameplayOptions extends PluginDependent {
|
||||||
/**
|
/**
|
||||||
* The sound played when the illusioner takes damage.
|
* The sound played when the illusioner takes damage.
|
||||||
*/
|
*/
|
||||||
@@ -57,6 +58,14 @@ public class GameplayOptions {
|
|||||||
@Getter
|
@Getter
|
||||||
private boolean ignoreExplosionDamage;
|
private boolean ignoreExplosionDamage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gameplay options.
|
||||||
|
* @param plugin The plugin.
|
||||||
|
*/
|
||||||
|
public GameplayOptions(@NotNull final AbstractEcoPlugin plugin) {
|
||||||
|
super(plugin);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reload the options.
|
* Reload the options.
|
||||||
*/
|
*/
|
||||||
@@ -77,7 +86,7 @@ public class GameplayOptions {
|
|||||||
|
|
||||||
shuffle = IllusionerConfigs.ATTACKS.getBool("shuffle.enabled");
|
shuffle = IllusionerConfigs.ATTACKS.getBool("shuffle.enabled");
|
||||||
shuffleChance = IllusionerConfigs.ATTACKS.getDouble("shuffle.chance");
|
shuffleChance = IllusionerConfigs.ATTACKS.getDouble("shuffle.chance");
|
||||||
ignoreExplosionDamage = Configs.CONFIG.getBool("ignore-explosion-damage");
|
ignoreExplosionDamage = this.getPlugin().getConfigYml().getBool("ignore-explosion-damage");
|
||||||
|
|
||||||
effectOptions.clear();
|
effectOptions.clear();
|
||||||
IllusionerConfigs.ATTACKS.getConfig().getConfigurationSection("effects").getKeys(false).forEach(key -> {
|
IllusionerConfigs.ATTACKS.getConfig().getConfigurationSection("effects").getKeys(false).forEach(key -> {
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
package com.willfp.illusioner.illusioner.options;
|
package com.willfp.illusioner.illusioner.options;
|
||||||
|
|
||||||
import com.willfp.eco.util.NumberUtils;
|
import com.willfp.eco.util.NumberUtils;
|
||||||
import com.willfp.eco.util.config.Configs;
|
import com.willfp.eco.util.internal.PluginDependent;
|
||||||
|
import com.willfp.eco.util.plugin.AbstractEcoPlugin;
|
||||||
import com.willfp.eco.util.tuplets.Pair;
|
import com.willfp.eco.util.tuplets.Pair;
|
||||||
import com.willfp.illusioner.config.IllusionerConfigs;
|
import com.willfp.illusioner.config.IllusionerConfigs;
|
||||||
import com.willfp.illusioner.illusioner.BlockStructure;
|
import com.willfp.illusioner.illusioner.BlockStructure;
|
||||||
@@ -13,12 +14,13 @@ import org.bukkit.Sound;
|
|||||||
import org.bukkit.boss.BarColor;
|
import org.bukkit.boss.BarColor;
|
||||||
import org.bukkit.boss.BarStyle;
|
import org.bukkit.boss.BarStyle;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@ToString
|
@ToString
|
||||||
public class IllusionerOptions {
|
public class IllusionerOptions extends PluginDependent {
|
||||||
/**
|
/**
|
||||||
* The boss bar color.
|
* The boss bar color.
|
||||||
*/
|
*/
|
||||||
@@ -82,7 +84,7 @@ public class IllusionerOptions {
|
|||||||
* The gameplay options.
|
* The gameplay options.
|
||||||
*/
|
*/
|
||||||
@Getter
|
@Getter
|
||||||
private final GameplayOptions gameplayOptions = new GameplayOptions();
|
private final GameplayOptions gameplayOptions = new GameplayOptions(this.getPlugin());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If plugin-based illusioners should override vanilla illusioners.
|
* If plugin-based illusioners should override vanilla illusioners.
|
||||||
@@ -92,8 +94,11 @@ public class IllusionerOptions {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Create new illusioner options.
|
* Create new illusioner options.
|
||||||
|
*
|
||||||
|
* @param plugin The plugin.
|
||||||
*/
|
*/
|
||||||
public IllusionerOptions() {
|
public IllusionerOptions(@NotNull final AbstractEcoPlugin plugin) {
|
||||||
|
super(plugin);
|
||||||
reload();
|
reload();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,13 +106,13 @@ public class IllusionerOptions {
|
|||||||
* Reload options from config.
|
* Reload options from config.
|
||||||
*/
|
*/
|
||||||
public void reload() {
|
public void reload() {
|
||||||
color = BarColor.valueOf(Configs.CONFIG.getString("bossbar.color"));
|
color = BarColor.valueOf(this.getPlugin().getConfigYml().getString("bossbar.color"));
|
||||||
style = BarStyle.valueOf(Configs.CONFIG.getString("bossbar.style"));
|
style = BarStyle.valueOf(this.getPlugin().getConfigYml().getString("bossbar.style"));
|
||||||
name = Configs.CONFIG.getString("name");
|
name = this.getPlugin().getConfigYml().getString("name");
|
||||||
xpBounds = new Pair<>(Configs.CONFIG.getInt("xp.minimum"), Configs.CONFIG.getInt("xp.maximum"));
|
xpBounds = new Pair<>(this.getPlugin().getConfigYml().getInt("xp.minimum"), this.getPlugin().getConfigYml().getInt("xp.maximum"));
|
||||||
maxHealth = Configs.CONFIG.getDouble("max-health");
|
maxHealth = this.getPlugin().getConfigYml().getDouble("max-health");
|
||||||
attackDamage = Configs.CONFIG.getDouble("attack-damage");
|
attackDamage = this.getPlugin().getConfigYml().getDouble("attack-damage");
|
||||||
override = Configs.CONFIG.getBool("override");
|
override = this.getPlugin().getConfigYml().getBool("override");
|
||||||
|
|
||||||
spawnSounds = new HashSet<>();
|
spawnSounds = new HashSet<>();
|
||||||
IllusionerConfigs.SOUNDS.getConfig().getConfigurationSection("spawn").getKeys(false).forEach(key -> {
|
IllusionerConfigs.SOUNDS.getConfig().getConfigurationSection("spawn").getKeys(false).forEach(key -> {
|
||||||
@@ -128,9 +133,9 @@ public class IllusionerOptions {
|
|||||||
});
|
});
|
||||||
|
|
||||||
spawnStructure = new BlockStructure(
|
spawnStructure = new BlockStructure(
|
||||||
Material.valueOf(Configs.CONFIG.getString("spawn.bottom-block")),
|
Material.valueOf(this.getPlugin().getConfigYml().getString("spawn.bottom-block")),
|
||||||
Material.valueOf(Configs.CONFIG.getString("spawn.middle-block")),
|
Material.valueOf(this.getPlugin().getConfigYml().getString("spawn.middle-block")),
|
||||||
Material.valueOf(Configs.CONFIG.getString("spawn.top-block"))
|
Material.valueOf(this.getPlugin().getConfigYml().getString("spawn.top-block"))
|
||||||
);
|
);
|
||||||
|
|
||||||
gameplayOptions.reload();
|
gameplayOptions.reload();
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package com.willfp.illusioner.util;
|
||||||
|
|
||||||
|
import com.willfp.eco.util.proxy.AbstractProxy;
|
||||||
|
import com.willfp.illusioner.IllusionerPlugin;
|
||||||
|
import com.willfp.illusioner.proxy.util.ProxyFactory;
|
||||||
|
import lombok.experimental.UtilityClass;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
@UtilityClass
|
||||||
|
public class ProxyUtils {
|
||||||
|
/**
|
||||||
|
* Get the implementation of a specified proxy.
|
||||||
|
*
|
||||||
|
* @param proxyClass The proxy interface.
|
||||||
|
* @param <T> The type of the proxy.
|
||||||
|
* @return The proxy implementation.
|
||||||
|
*/
|
||||||
|
public @NotNull <T extends AbstractProxy> T getProxy(@NotNull final Class<T> proxyClass) {
|
||||||
|
return new ProxyFactory<>(IllusionerPlugin.getInstance(), proxyClass).getProxy();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,75 @@
|
|||||||
|
package com.willfp.illusioner.proxy.util;
|
||||||
|
|
||||||
|
import com.willfp.eco.util.internal.PluginDependent;
|
||||||
|
import com.willfp.eco.util.plugin.AbstractEcoPlugin;
|
||||||
|
import com.willfp.eco.util.proxy.AbstractProxy;
|
||||||
|
import com.willfp.eco.util.proxy.ProxyConstants;
|
||||||
|
import com.willfp.eco.util.proxy.UnsupportedVersionException;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.IdentityHashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class ProxyFactory<T extends AbstractProxy> extends PluginDependent {
|
||||||
|
/**
|
||||||
|
* Cached proxy implementations in order to not perform expensive reflective class-finding.
|
||||||
|
*/
|
||||||
|
private static final Map<Class<? extends AbstractProxy>, AbstractProxy> CACHE = new IdentityHashMap<>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The class of the proxy interface.
|
||||||
|
*/
|
||||||
|
private final Class<T> proxyClass;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new Proxy Factory for a specific type.
|
||||||
|
*
|
||||||
|
* @param plugin The plugin to create proxies for.
|
||||||
|
* @param proxyClass The class of the proxy interface.
|
||||||
|
*/
|
||||||
|
public ProxyFactory(@NotNull final AbstractEcoPlugin plugin,
|
||||||
|
@NotNull final Class<T> proxyClass) {
|
||||||
|
super(plugin);
|
||||||
|
this.proxyClass = proxyClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the implementation of a proxy.
|
||||||
|
*
|
||||||
|
* @return The proxy implementation.
|
||||||
|
*/
|
||||||
|
public @NotNull T getProxy() {
|
||||||
|
try {
|
||||||
|
T cachedProxy = attemptCache();
|
||||||
|
if (cachedProxy != null) {
|
||||||
|
return cachedProxy;
|
||||||
|
}
|
||||||
|
|
||||||
|
String className = this.getPlugin().getProxyPackage() + "." + ProxyConstants.NMS_VERSION + "." + proxyClass.getSimpleName().replace("Proxy", "");
|
||||||
|
final Class<?> class2 = Class.forName(className);
|
||||||
|
Object instance = class2.getConstructor().newInstance();
|
||||||
|
if (proxyClass.isAssignableFrom(class2) && proxyClass.isInstance(instance)) {
|
||||||
|
T proxy = proxyClass.cast(instance);
|
||||||
|
CACHE.put(proxyClass, proxy);
|
||||||
|
return proxy;
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
// If not returned, then throw error
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new UnsupportedVersionException("You're running an unsupported server version: " + ProxyConstants.NMS_VERSION);
|
||||||
|
}
|
||||||
|
|
||||||
|
private T attemptCache() {
|
||||||
|
Object proxy = CACHE.get(proxyClass);
|
||||||
|
if (proxy == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (proxyClass.isInstance(proxy)) {
|
||||||
|
return proxyClass.cast(proxy);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,2 +1,2 @@
|
|||||||
version = 2.0.3
|
version = 2.1.0
|
||||||
plugin-name = Illusioner
|
plugin-name = Illusioner
|
||||||
Reference in New Issue
Block a user