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:
@@ -11,6 +11,7 @@ import com.willfp.illusioner.illusioner.IllusionerManager;
|
||||
import com.willfp.illusioner.illusioner.listeners.AttackListeners;
|
||||
import com.willfp.illusioner.illusioner.listeners.DeathListeners;
|
||||
import com.willfp.illusioner.illusioner.listeners.SpawnListeners;
|
||||
import lombok.Getter;
|
||||
import org.bukkit.event.Listener;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -19,11 +20,18 @@ import java.util.List;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class IllusionerPlugin extends AbstractEcoPlugin {
|
||||
/**
|
||||
* Instance of the plugin.
|
||||
*/
|
||||
@Getter
|
||||
private static IllusionerPlugin instance;
|
||||
|
||||
/**
|
||||
* Internal constructor called by bukkit on plugin load.
|
||||
*/
|
||||
public IllusionerPlugin() {
|
||||
super("Illusioner", 86576, 9596, "com.willfp.illusioner.proxy", "&9");
|
||||
instance = this;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.willfp.illusioner.commands;
|
||||
|
||||
import com.willfp.eco.util.command.AbstractCommand;
|
||||
import com.willfp.eco.util.plugin.AbstractEcoPlugin;
|
||||
import com.willfp.illusioner.IllusionerPlugin;
|
||||
import com.willfp.illusioner.illusioner.IllusionerManager;
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.willfp.illusioner.commands;
|
||||
|
||||
import com.willfp.eco.util.command.AbstractCommand;
|
||||
import com.willfp.eco.util.config.Configs;
|
||||
import com.willfp.illusioner.IllusionerPlugin;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -22,6 +21,6 @@ public class CommandIlreload extends AbstractCommand {
|
||||
public void onExecute(@NotNull final CommandSender sender,
|
||||
@NotNull final List<String> args) {
|
||||
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;
|
||||
|
||||
import com.willfp.eco.util.config.BaseConfig;
|
||||
import com.willfp.eco.util.plugin.AbstractEcoPlugin;
|
||||
import com.willfp.illusioner.IllusionerPlugin;
|
||||
|
||||
public class Attacks extends BaseConfig {
|
||||
/**
|
||||
* Instantiate attacks.yml.
|
||||
*/
|
||||
public Attacks() {
|
||||
super("attacks", false);
|
||||
super("attacks", false, IllusionerPlugin.getInstance());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
package com.willfp.illusioner.config.configs;
|
||||
|
||||
import com.willfp.eco.util.config.BaseConfig;
|
||||
import com.willfp.eco.util.plugin.AbstractEcoPlugin;
|
||||
import com.willfp.illusioner.IllusionerPlugin;
|
||||
|
||||
public class Drops extends BaseConfig {
|
||||
/**
|
||||
* Instantiate drops.yml.
|
||||
*/
|
||||
public Drops() {
|
||||
super("drops", false);
|
||||
super("drops", false, IllusionerPlugin.getInstance());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
package com.willfp.illusioner.config.configs;
|
||||
|
||||
import com.willfp.eco.util.config.BaseConfig;
|
||||
import com.willfp.eco.util.plugin.AbstractEcoPlugin;
|
||||
import com.willfp.illusioner.IllusionerPlugin;
|
||||
|
||||
public class Sounds extends BaseConfig {
|
||||
/**
|
||||
* Instantiate sounds.yml.
|
||||
*/
|
||||
public Sounds() {
|
||||
super("sounds", false);
|
||||
super("sounds", false, IllusionerPlugin.getInstance());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
package com.willfp.illusioner.illusioner;
|
||||
|
||||
import com.willfp.eco.util.plugin.AbstractEcoPlugin;
|
||||
import com.willfp.illusioner.IllusionerPlugin;
|
||||
import com.willfp.illusioner.illusioner.options.IllusionerOptions;
|
||||
|
||||
public class IllusionerManager {
|
||||
/**
|
||||
* 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;
|
||||
|
||||
import com.willfp.eco.util.ProxyUtils;
|
||||
import com.willfp.eco.util.internal.PluginDependent;
|
||||
import com.willfp.eco.util.plugin.AbstractEcoPlugin;
|
||||
import com.willfp.illusioner.illusioner.BlockStructure;
|
||||
import com.willfp.illusioner.illusioner.IllusionerManager;
|
||||
import com.willfp.illusioner.proxy.proxies.EntityIllusionerProxy;
|
||||
import com.willfp.illusioner.proxy.proxies.IllusionerHelperProxy;
|
||||
import com.willfp.illusioner.util.ProxyUtils;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Illusioner;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
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.illusioner.OptionedSound;
|
||||
import lombok.Getter;
|
||||
@@ -14,7 +15,7 @@ import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
@ToString
|
||||
public class GameplayOptions {
|
||||
public class GameplayOptions extends PluginDependent {
|
||||
/**
|
||||
* The sound played when the illusioner takes damage.
|
||||
*/
|
||||
@@ -57,6 +58,14 @@ public class GameplayOptions {
|
||||
@Getter
|
||||
private boolean ignoreExplosionDamage;
|
||||
|
||||
/**
|
||||
* Gameplay options.
|
||||
* @param plugin The plugin.
|
||||
*/
|
||||
public GameplayOptions(@NotNull final AbstractEcoPlugin plugin) {
|
||||
super(plugin);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reload the options.
|
||||
*/
|
||||
@@ -77,7 +86,7 @@ public class GameplayOptions {
|
||||
|
||||
shuffle = IllusionerConfigs.ATTACKS.getBool("shuffle.enabled");
|
||||
shuffleChance = IllusionerConfigs.ATTACKS.getDouble("shuffle.chance");
|
||||
ignoreExplosionDamage = Configs.CONFIG.getBool("ignore-explosion-damage");
|
||||
ignoreExplosionDamage = this.getPlugin().getConfigYml().getBool("ignore-explosion-damage");
|
||||
|
||||
effectOptions.clear();
|
||||
IllusionerConfigs.ATTACKS.getConfig().getConfigurationSection("effects").getKeys(false).forEach(key -> {
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
package com.willfp.illusioner.illusioner.options;
|
||||
|
||||
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.illusioner.config.IllusionerConfigs;
|
||||
import com.willfp.illusioner.illusioner.BlockStructure;
|
||||
@@ -13,12 +14,13 @@ import org.bukkit.Sound;
|
||||
import org.bukkit.boss.BarColor;
|
||||
import org.bukkit.boss.BarStyle;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
@ToString
|
||||
public class IllusionerOptions {
|
||||
public class IllusionerOptions extends PluginDependent {
|
||||
/**
|
||||
* The boss bar color.
|
||||
*/
|
||||
@@ -82,7 +84,7 @@ public class IllusionerOptions {
|
||||
* The gameplay options.
|
||||
*/
|
||||
@Getter
|
||||
private final GameplayOptions gameplayOptions = new GameplayOptions();
|
||||
private final GameplayOptions gameplayOptions = new GameplayOptions(this.getPlugin());
|
||||
|
||||
/**
|
||||
* If plugin-based illusioners should override vanilla illusioners.
|
||||
@@ -92,8 +94,11 @@ public class IllusionerOptions {
|
||||
|
||||
/**
|
||||
* Create new illusioner options.
|
||||
*
|
||||
* @param plugin The plugin.
|
||||
*/
|
||||
public IllusionerOptions() {
|
||||
public IllusionerOptions(@NotNull final AbstractEcoPlugin plugin) {
|
||||
super(plugin);
|
||||
reload();
|
||||
}
|
||||
|
||||
@@ -101,13 +106,13 @@ public class IllusionerOptions {
|
||||
* Reload options from config.
|
||||
*/
|
||||
public void reload() {
|
||||
color = BarColor.valueOf(Configs.CONFIG.getString("bossbar.color"));
|
||||
style = BarStyle.valueOf(Configs.CONFIG.getString("bossbar.style"));
|
||||
name = Configs.CONFIG.getString("name");
|
||||
xpBounds = new Pair<>(Configs.CONFIG.getInt("xp.minimum"), Configs.CONFIG.getInt("xp.maximum"));
|
||||
maxHealth = Configs.CONFIG.getDouble("max-health");
|
||||
attackDamage = Configs.CONFIG.getDouble("attack-damage");
|
||||
override = Configs.CONFIG.getBool("override");
|
||||
color = BarColor.valueOf(this.getPlugin().getConfigYml().getString("bossbar.color"));
|
||||
style = BarStyle.valueOf(this.getPlugin().getConfigYml().getString("bossbar.style"));
|
||||
name = this.getPlugin().getConfigYml().getString("name");
|
||||
xpBounds = new Pair<>(this.getPlugin().getConfigYml().getInt("xp.minimum"), this.getPlugin().getConfigYml().getInt("xp.maximum"));
|
||||
maxHealth = this.getPlugin().getConfigYml().getDouble("max-health");
|
||||
attackDamage = this.getPlugin().getConfigYml().getDouble("attack-damage");
|
||||
override = this.getPlugin().getConfigYml().getBool("override");
|
||||
|
||||
spawnSounds = new HashSet<>();
|
||||
IllusionerConfigs.SOUNDS.getConfig().getConfigurationSection("spawn").getKeys(false).forEach(key -> {
|
||||
@@ -128,9 +133,9 @@ public class IllusionerOptions {
|
||||
});
|
||||
|
||||
spawnStructure = new BlockStructure(
|
||||
Material.valueOf(Configs.CONFIG.getString("spawn.bottom-block")),
|
||||
Material.valueOf(Configs.CONFIG.getString("spawn.middle-block")),
|
||||
Material.valueOf(Configs.CONFIG.getString("spawn.top-block"))
|
||||
Material.valueOf(this.getPlugin().getConfigYml().getString("spawn.bottom-block")),
|
||||
Material.valueOf(this.getPlugin().getConfigYml().getString("spawn.middle-block")),
|
||||
Material.valueOf(this.getPlugin().getConfigYml().getString("spawn.top-block"))
|
||||
);
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user