9
0
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:
Auxilor
2021-01-17 16:00:15 +00:00
parent 3915c17773
commit ec2fce2fd2
14 changed files with 153 additions and 30 deletions

View File

@@ -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"
} }

View File

@@ -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;
} }
/** /**

View File

@@ -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;

View File

@@ -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"));
} }
} }

View File

@@ -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());
} }
} }

View File

@@ -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());
} }
} }

View File

@@ -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());
} }
} }

View File

@@ -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());
} }

View File

@@ -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;

View File

@@ -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 -> {

View File

@@ -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();

View File

@@ -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();
}
}

View File

@@ -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;
}
}

View File

@@ -1,2 +1,2 @@
version = 2.0.3 version = 2.1.0
plugin-name = Illusioner plugin-name = Illusioner