Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b16266e22a | ||
|
|
2c886dc33b | ||
|
|
db9c60cf35 | ||
|
|
a34b36daec | ||
|
|
41a35e99fd | ||
|
|
8e12dad247 | ||
|
|
72afa1e5cc | ||
|
|
9904553325 | ||
|
|
ad069ab32f | ||
|
|
b83a3dd548 | ||
|
|
7f41eab5e4 | ||
|
|
0d1c2364da | ||
|
|
5bca33a9f5 | ||
|
|
1196fe8004 | ||
|
|
98ae416fa7 |
@@ -20,7 +20,7 @@ dependencies {
|
||||
compileOnly 'fr.neatmonster:nocheatplus:3.16.1-SNAPSHOT'
|
||||
compileOnly 'com.github.jiangdashao:matrix-api-repo:317d4635fd'
|
||||
compileOnly 'org.jetbrains:annotations:19.0.0'
|
||||
compileOnly fileTree(dir: '/lib', include: ['*.jar'])
|
||||
compileOnly fileTree(dir: 'lib', include: ['*.jar'])
|
||||
|
||||
// Lombok
|
||||
compileOnly 'org.projectlombok:lombok:1.18.16'
|
||||
@@ -98,5 +98,5 @@ build.dependsOn publishToMavenLocal
|
||||
|
||||
group = 'com.willfp'
|
||||
archivesBaseName = project.name
|
||||
version = '1.0.1'
|
||||
version = '1.1.2'
|
||||
java.sourceCompatibility = JavaVersion.VERSION_1_8
|
||||
@@ -3,6 +3,7 @@ package com.willfp.eco.util;
|
||||
import lombok.experimental.UtilityClass;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
|
||||
@@ -85,6 +86,22 @@ public class NumberUtils {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get number from roman numeral.
|
||||
*
|
||||
* @param numeral The numeral to convert.
|
||||
* @return The number, converted from a roman numeral.
|
||||
*/
|
||||
public static int fromNumeral(String numeral) {
|
||||
if (numeral.isEmpty()) return 0;
|
||||
for (Map.Entry<Integer, String> entry : NUMERALS.entrySet()) {
|
||||
if (numeral.startsWith(entry.getValue())) {
|
||||
return entry.getKey() + fromNumeral(numeral.substring(entry.getValue().length()));
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate random integer in range.
|
||||
*
|
||||
|
||||
@@ -28,6 +28,7 @@ public abstract class BaseConfig extends PluginDependent implements ValueGetter
|
||||
/**
|
||||
* The physical config file, as stored on disk.
|
||||
*/
|
||||
@Getter(AccessLevel.PROTECTED)
|
||||
private final File configFile;
|
||||
|
||||
/**
|
||||
|
||||
@@ -7,14 +7,21 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.ServicePriority;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.function.Function;
|
||||
|
||||
@UtilityClass
|
||||
public final class TelekinesisUtils {
|
||||
private final Object instance;
|
||||
private final Class<?> clazz;
|
||||
|
||||
/**
|
||||
* The test service registered to bukkit.
|
||||
*/
|
||||
private final TelekinesisTests tests;
|
||||
private final Method testMethod;
|
||||
|
||||
private final Method registerMethod;
|
||||
|
||||
/**
|
||||
* Test the player for telekinesis.
|
||||
@@ -25,7 +32,13 @@ public final class TelekinesisUtils {
|
||||
* @return If the player is telekinetic.
|
||||
*/
|
||||
public boolean testPlayer(@NotNull final Player player) {
|
||||
return tests.testPlayer(player);
|
||||
try {
|
||||
return (boolean) testMethod.invoke(instance, player);
|
||||
} catch (IllegalAccessException | InvocationTargetException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -34,14 +47,33 @@ public final class TelekinesisUtils {
|
||||
* @param test The test to register, where the boolean output is if the player is telekinetic.
|
||||
*/
|
||||
public void registerTest(@NotNull final Function<Player, Boolean> test) {
|
||||
tests.registerTest(test);
|
||||
try {
|
||||
registerMethod.invoke(instance, test);
|
||||
} catch (IllegalAccessException | InvocationTargetException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
static {
|
||||
if (!Bukkit.getServicesManager().isProvidedFor(TelekinesisTests.class)) {
|
||||
Method testMethod1;
|
||||
Method registerMethod1;
|
||||
if (Bukkit.getServicesManager().getKnownServices().stream().noneMatch(clazz -> clazz.getName().contains("TelekinesisTests"))) {
|
||||
Bukkit.getServicesManager().register(TelekinesisTests.class, new EcoTelekinesisTests(), AbstractEcoPlugin.getInstance(), ServicePriority.Normal);
|
||||
}
|
||||
|
||||
tests = Bukkit.getServicesManager().load(TelekinesisTests.class);
|
||||
instance = Bukkit.getServicesManager().load(Bukkit.getServicesManager().getKnownServices().stream().filter(clazz -> clazz.getName().contains("TelekinesisTests")).findFirst().get());
|
||||
clazz = instance.getClass();
|
||||
|
||||
try {
|
||||
testMethod1 = clazz.getDeclaredMethod("testPlayer", Player.class);
|
||||
registerMethod1 = clazz.getDeclaredMethod("registerTest", Function.class);
|
||||
} catch (NoSuchMethodException e) {
|
||||
e.printStackTrace();
|
||||
testMethod1 = null;
|
||||
registerMethod1 = null;
|
||||
}
|
||||
|
||||
testMethod = testMethod1;
|
||||
registerMethod = registerMethod1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,6 +51,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -86,6 +87,18 @@ public abstract class AbstractEcoPlugin extends JavaPlugin {
|
||||
@Getter
|
||||
private final String proxyPackage;
|
||||
|
||||
/**
|
||||
* The color of the plugin, used in messages.
|
||||
*/
|
||||
@Getter
|
||||
private final String color;
|
||||
|
||||
/**
|
||||
* Loaded integrations.
|
||||
*/
|
||||
@Getter
|
||||
private final Set<String> loadedIntegrations = new HashSet<>();
|
||||
|
||||
/**
|
||||
* Set of external plugin integrations.
|
||||
*/
|
||||
@@ -159,15 +172,18 @@ public abstract class AbstractEcoPlugin extends JavaPlugin {
|
||||
* @param resourceId The spigot resource ID for the plugin.
|
||||
* @param bStatsId The bStats resource ID for the plugin.
|
||||
* @param proxyPackage The package where proxy implementations are stored.
|
||||
* @param color The color of the plugin (used in messages, such as &a, &b)
|
||||
*/
|
||||
protected AbstractEcoPlugin(@NotNull final String pluginName,
|
||||
final int resourceId,
|
||||
final int bStatsId,
|
||||
@NotNull final String proxyPackage) {
|
||||
@NotNull final String proxyPackage,
|
||||
@NotNull final String color) {
|
||||
this.pluginName = pluginName;
|
||||
this.resourceId = resourceId;
|
||||
this.bStatsId = bStatsId;
|
||||
this.proxyPackage = proxyPackage;
|
||||
this.color = color;
|
||||
|
||||
this.log = new EcoLogger(this);
|
||||
this.scheduler = new EcoScheduler(this);
|
||||
@@ -186,12 +202,8 @@ public abstract class AbstractEcoPlugin extends JavaPlugin {
|
||||
public final void onEnable() {
|
||||
super.onLoad();
|
||||
|
||||
this.getLog().info("==========================================");
|
||||
this.getLog().info("");
|
||||
this.getLog().info("Loading &a" + this.pluginName);
|
||||
this.getLog().info("Made by &aAuxilor&f - willfp.com");
|
||||
this.getLog().info("");
|
||||
this.getLog().info("==========================================");
|
||||
this.getLog().info("Loading " + this.color + this.pluginName);
|
||||
|
||||
this.getEventManager().registerListener(new ArrowDataListener(this));
|
||||
this.getEventManager().registerListener(new NaturalExpGainListeners());
|
||||
@@ -219,17 +231,13 @@ public abstract class AbstractEcoPlugin extends JavaPlugin {
|
||||
Set<String> enabledPlugins = Arrays.stream(Bukkit.getPluginManager().getPlugins()).map(Plugin::getName).collect(Collectors.toSet());
|
||||
|
||||
this.getDefaultIntegrations().forEach((integrationLoader -> {
|
||||
StringBuilder infoBuilder = new StringBuilder();
|
||||
infoBuilder.append(integrationLoader.getPluginName()).append(": ");
|
||||
if (enabledPlugins.contains(integrationLoader.getPluginName())) {
|
||||
this.loadedIntegrations.add(integrationLoader.getPluginName());
|
||||
integrationLoader.load();
|
||||
infoBuilder.append("&aENABLED");
|
||||
} else {
|
||||
infoBuilder.append("&9DISABLED");
|
||||
}
|
||||
this.getLog().info(infoBuilder.toString());
|
||||
}));
|
||||
this.getLog().info("");
|
||||
|
||||
this.getLog().info("Loaded integrations: " + String.join(", ", this.getLoadedIntegrations()));
|
||||
|
||||
Prerequisite.update();
|
||||
|
||||
@@ -256,6 +264,8 @@ public abstract class AbstractEcoPlugin extends JavaPlugin {
|
||||
this.updatableClasses.forEach(clazz -> this.getConfigHandler().registerUpdatableClass(clazz));
|
||||
|
||||
this.enable();
|
||||
|
||||
this.getLog().info("");
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -312,7 +322,7 @@ public abstract class AbstractEcoPlugin extends JavaPlugin {
|
||||
|
||||
this.reload();
|
||||
|
||||
this.getLog().info("Loaded &a" + this.pluginName);
|
||||
this.getLog().info("Loaded " + this.color + this.pluginName);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -320,6 +330,7 @@ public abstract class AbstractEcoPlugin extends JavaPlugin {
|
||||
*/
|
||||
public final void reload() {
|
||||
this.getConfigHandler().callUpdate();
|
||||
this.getConfigHandler().callUpdate(); // Call twice to fix issues
|
||||
this.getScheduler().cancelAll();
|
||||
new FastCollatedDropQueue.CollatedRunnable(this);
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.comphenix.protocol.events.PacketContainer;
|
||||
import com.comphenix.protocol.events.PacketEvent;
|
||||
import com.willfp.eco.util.plugin.AbstractEcoPlugin;
|
||||
import lombok.Getter;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Collections;
|
||||
@@ -61,7 +62,8 @@ public abstract class AbstractPacketAdapter extends PacketAdapter {
|
||||
*
|
||||
* @param packet The packet.
|
||||
*/
|
||||
public void onReceive(@NotNull final PacketContainer packet) {
|
||||
public void onReceive(@NotNull final PacketContainer packet,
|
||||
@NotNull final Player player) {
|
||||
// Empty rather than abstract as implementations don't need both
|
||||
}
|
||||
|
||||
@@ -70,7 +72,8 @@ public abstract class AbstractPacketAdapter extends PacketAdapter {
|
||||
*
|
||||
* @param packet The packet.
|
||||
*/
|
||||
public void onSend(@NotNull final PacketContainer packet) {
|
||||
public void onSend(@NotNull final PacketContainer packet,
|
||||
@NotNull final Player player) {
|
||||
// Empty rather than abstract as implementations don't need both
|
||||
}
|
||||
|
||||
@@ -89,7 +92,7 @@ public abstract class AbstractPacketAdapter extends PacketAdapter {
|
||||
return;
|
||||
}
|
||||
|
||||
onReceive(event.getPacket());
|
||||
onReceive(event.getPacket(), event.getPlayer());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -107,7 +110,7 @@ public abstract class AbstractPacketAdapter extends PacketAdapter {
|
||||
return;
|
||||
}
|
||||
|
||||
onSend(event.getPacket());
|
||||
onSend(event.getPacket(), event.getPlayer());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user