Compare commits
45 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4223e8f17a | ||
|
|
5f26b23a53 | ||
|
|
c8c179981c | ||
|
|
c1b3bec67c | ||
|
|
f2535ce75c | ||
|
|
049d64821e | ||
|
|
bf5766e61c | ||
|
|
38da5fe6d1 | ||
|
|
e16649873b | ||
|
|
a3b0b4f847 | ||
|
|
d9f1ddd188 | ||
|
|
14a4d9291b | ||
|
|
6630044546 | ||
|
|
1043981fe4 | ||
|
|
fb0b7c52cf | ||
|
|
74e5464f7d | ||
|
|
2ad1ff4cdb | ||
|
|
2d47c18be6 | ||
|
|
69e67be436 | ||
|
|
c144723d5b | ||
|
|
108375f545 | ||
|
|
83d5b3e96e | ||
|
|
37e09a470e | ||
|
|
1f064110b7 | ||
|
|
94a0b4de5d | ||
|
|
8a68666f86 | ||
|
|
2c218d1088 | ||
|
|
3fa95d82a6 | ||
|
|
9648b42c4d | ||
|
|
66887f0a3a | ||
|
|
410cdfe7e3 | ||
|
|
bbffdc7e23 | ||
|
|
0d267e2bec | ||
|
|
578256f89b | ||
|
|
90ecbfce00 | ||
|
|
9945704338 | ||
|
|
5c7a7876d8 | ||
|
|
94df0e67a6 | ||
|
|
92c4e62709 | ||
|
|
e094a1e934 | ||
|
|
26c07a20e7 | ||
|
|
ad68e1efef | ||
|
|
d8c3a3befa | ||
|
|
aa52dcdf94 | ||
|
|
9d3ba7ea88 |
11
.github/dependabot.yml
vendored
Normal file
11
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# To get started with Dependabot version updates, you'll need to specify which
|
||||||
|
# package ecosystems to update and where the package manifests are located.
|
||||||
|
# Please see the documentation for all configuration options:
|
||||||
|
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
||||||
|
|
||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
- package-ecosystem: "gradle" # See documentation for possible values
|
||||||
|
directory: "/" # Location of package manifests
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
@@ -87,6 +87,8 @@ allprojects {
|
|||||||
|
|
||||||
shadowJar {
|
shadowJar {
|
||||||
relocate('org.bstats', 'com.willfp.eco.shaded.bstats')
|
relocate('org.bstats', 'com.willfp.eco.shaded.bstats')
|
||||||
|
relocate('net.kyori.adventure.text.minimessage', 'com.willfp.eco.shaded.adventure.minimessage')
|
||||||
|
relocate('net.kyori.adventure.platform', 'com.willfp.eco.shaded.adventure.platform')
|
||||||
}
|
}
|
||||||
|
|
||||||
jar {
|
jar {
|
||||||
|
|||||||
@@ -6,12 +6,14 @@ group 'com.willfp'
|
|||||||
version rootProject.version
|
version rootProject.version
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compileOnly 'org.spigotmc:spigot-api:1.17-R0.1-SNAPSHOT'
|
compileOnly 'org.spigotmc:spigot-api:1.17.1-R0.1-SNAPSHOT'
|
||||||
compileOnly 'org.apache.maven:maven-artifact:3.0.3'
|
compileOnly 'org.apache.maven:maven-artifact:3.0.3'
|
||||||
compileOnly 'com.comphenix.protocol:ProtocolLib:4.6.0-SNAPSHOT'
|
compileOnly 'com.comphenix.protocol:ProtocolLib:4.6.0-SNAPSHOT'
|
||||||
compileOnly 'com.google.code.gson:gson:2.8.7'
|
compileOnly 'com.google.code.gson:gson:2.8.7'
|
||||||
compileOnly 'net.kyori:adventure-text-serializer-gson:4.8.1'
|
compileOnly 'net.kyori:adventure-text-serializer-gson:4.8.1'
|
||||||
compileOnly 'net.kyori:adventure-text-serializer-legacy:4.8.1'
|
compileOnly 'net.kyori:adventure-text-serializer-legacy:4.8.1'
|
||||||
|
compileOnly 'net.kyori:adventure-text-minimessage:4.1.0-SNAPSHOT'
|
||||||
|
compileOnly 'net.kyori:adventure-platform-bukkit:4.0.0'
|
||||||
}
|
}
|
||||||
|
|
||||||
java {
|
java {
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import com.willfp.eco.core.proxy.Cleaner;
|
|||||||
import com.willfp.eco.core.proxy.ProxyFactory;
|
import com.willfp.eco.core.proxy.ProxyFactory;
|
||||||
import com.willfp.eco.core.requirement.RequirementFactory;
|
import com.willfp.eco.core.requirement.RequirementFactory;
|
||||||
import com.willfp.eco.core.scheduling.Scheduler;
|
import com.willfp.eco.core.scheduling.Scheduler;
|
||||||
|
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
@@ -201,5 +202,14 @@ public interface Handler {
|
|||||||
*
|
*
|
||||||
* @return The factory.
|
* @return The factory.
|
||||||
*/
|
*/
|
||||||
|
@NotNull
|
||||||
RequirementFactory getRequirementFactory();
|
RequirementFactory getRequirementFactory();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Adventure audiences.
|
||||||
|
*
|
||||||
|
* @return The audiences.
|
||||||
|
*/
|
||||||
|
@NotNull
|
||||||
|
BukkitAudiences getAdventure();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -150,7 +150,6 @@ public class Display {
|
|||||||
* @param player The player.
|
* @param player The player.
|
||||||
* @param args The args.
|
* @param args The args.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("checkstyle:FinalParameters")
|
|
||||||
@ApiStatus.Internal
|
@ApiStatus.Internal
|
||||||
public static void callDisplayModule(@NotNull final DisplayModule module,
|
public static void callDisplayModule(@NotNull final DisplayModule module,
|
||||||
@NotNull final ItemStack itemStack,
|
@NotNull final ItemStack itemStack,
|
||||||
|
|||||||
36
eco-api/src/main/java/com/willfp/eco/util/PlayerUtils.java
Normal file
36
eco-api/src/main/java/com/willfp/eco/util/PlayerUtils.java
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
package com.willfp.eco.util;
|
||||||
|
|
||||||
|
import com.willfp.eco.core.Eco;
|
||||||
|
import lombok.experimental.UtilityClass;
|
||||||
|
import net.kyori.adventure.audience.Audience;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Utilities / API methods for players.
|
||||||
|
*/
|
||||||
|
@UtilityClass
|
||||||
|
public class PlayerUtils {
|
||||||
|
/**
|
||||||
|
* Get the audience from a player.
|
||||||
|
*
|
||||||
|
* @param player The player.
|
||||||
|
* @return The audience.
|
||||||
|
*/
|
||||||
|
@NotNull
|
||||||
|
public Audience getAudience(@NotNull final Player player) {
|
||||||
|
return Eco.getHandler().getAdventure().player(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the audience from a command sender.
|
||||||
|
*
|
||||||
|
* @param sender The command sender.
|
||||||
|
* @return The audience.
|
||||||
|
*/
|
||||||
|
@NotNull
|
||||||
|
public Audience getAudience(@NotNull final CommandSender sender) {
|
||||||
|
return Eco.getHandler().getAdventure().sender(sender);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,6 +5,8 @@ import com.willfp.eco.core.integrations.placeholder.PlaceholderManager;
|
|||||||
import lombok.experimental.UtilityClass;
|
import lombok.experimental.UtilityClass;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.format.TextDecoration;
|
import net.kyori.adventure.text.format.TextDecoration;
|
||||||
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
|
import net.kyori.adventure.text.minimessage.markdown.DiscordFlavor;
|
||||||
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
|
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
|
||||||
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
||||||
import net.md_5.bungee.api.ChatColor;
|
import net.md_5.bungee.api.ChatColor;
|
||||||
@@ -12,7 +14,7 @@ import org.bukkit.entity.Player;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.*;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -26,7 +28,7 @@ import static net.md_5.bungee.api.ChatColor.COLOR_CHAR;
|
|||||||
* Utilities / API methods for strings.
|
* Utilities / API methods for strings.
|
||||||
*/
|
*/
|
||||||
@UtilityClass
|
@UtilityClass
|
||||||
public class StringUtils {
|
public class StringUtils {
|
||||||
/**
|
/**
|
||||||
* Regexes for gradients.
|
* Regexes for gradients.
|
||||||
*/
|
*/
|
||||||
@@ -168,6 +170,68 @@ public class StringUtils {
|
|||||||
return format(message, null, option);
|
return format(message, null, option);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Format a string to a component.
|
||||||
|
* <p>
|
||||||
|
* Converts color codes and placeholders.
|
||||||
|
*
|
||||||
|
* @param message The message to translate.
|
||||||
|
* @return The message, formatted, as a component.
|
||||||
|
* @see StringUtils#format(String, Player)
|
||||||
|
*/
|
||||||
|
@NotNull
|
||||||
|
public Component formatToComponent(@NotNull final String message) {
|
||||||
|
return formatToComponent(message, (Player) null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Format a string.
|
||||||
|
* <p>
|
||||||
|
* Converts color codes and placeholders for a player.
|
||||||
|
*
|
||||||
|
* @param message The message to format.
|
||||||
|
* @param player The player to translate placeholders with respect to.
|
||||||
|
* @return The message, formatted.
|
||||||
|
*/
|
||||||
|
@NotNull
|
||||||
|
public Component formatToComponent(@NotNull final String message,
|
||||||
|
@Nullable final Player player) {
|
||||||
|
return formatToComponent(message, player, FormatOption.WITH_PLACEHOLDERS);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Format a string to a component.
|
||||||
|
* <p>
|
||||||
|
* Converts color codes and placeholders if specified.
|
||||||
|
*
|
||||||
|
* @param message The message to translate.
|
||||||
|
* @param option The format option.
|
||||||
|
* @return The message, formatted, as a component.
|
||||||
|
* @see StringUtils#format(String, Player)
|
||||||
|
*/
|
||||||
|
@NotNull
|
||||||
|
public Component formatToComponent(@NotNull final String message,
|
||||||
|
@NotNull final FormatOption option) {
|
||||||
|
return formatToComponent(message, null, option);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Format a string to a component.
|
||||||
|
* <p>
|
||||||
|
* Coverts color codes and placeholders for a player if specified.
|
||||||
|
*
|
||||||
|
* @param message The message to format.
|
||||||
|
* @param player The player to translate placeholders with respect to.
|
||||||
|
* @param option The format options.
|
||||||
|
* @return The message, formatted, as a component.
|
||||||
|
*/
|
||||||
|
@NotNull
|
||||||
|
public Component formatToComponent(@NotNull final String message,
|
||||||
|
@Nullable final Player player,
|
||||||
|
@NotNull final FormatOption option) {
|
||||||
|
return toComponent(format(message, player, option));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Format a string.
|
* Format a string.
|
||||||
* <p>
|
* <p>
|
||||||
@@ -183,15 +247,20 @@ public class StringUtils {
|
|||||||
@Nullable final Player player,
|
@Nullable final Player player,
|
||||||
@NotNull final FormatOption option) {
|
@NotNull final FormatOption option) {
|
||||||
String processedMessage = message;
|
String processedMessage = message;
|
||||||
processedMessage = translateGradients(processedMessage);
|
|
||||||
if (option == FormatOption.WITH_PLACEHOLDERS) {
|
if (option == FormatOption.WITH_PLACEHOLDERS) {
|
||||||
processedMessage = PlaceholderManager.translatePlaceholders(processedMessage, player);
|
processedMessage = PlaceholderManager.translatePlaceholders(processedMessage, player);
|
||||||
}
|
}
|
||||||
|
processedMessage = translateGradients(processedMessage);
|
||||||
|
processedMessage = translateMiniMessage(processedMessage);
|
||||||
processedMessage = translateHexColorCodes(processedMessage);
|
processedMessage = translateHexColorCodes(processedMessage);
|
||||||
processedMessage = ChatColor.translateAlternateColorCodes('&', processedMessage);
|
processedMessage = ChatColor.translateAlternateColorCodes('&', processedMessage);
|
||||||
return processedMessage;
|
return processedMessage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static String translateMiniMessage(@NotNull final String message) {
|
||||||
|
return LEGACY_COMPONENT_SERIALIZER.serialize(MiniMessage.withMarkdownFlavor(DiscordFlavor.get()).parse(message));
|
||||||
|
}
|
||||||
|
|
||||||
private static String translateHexColorCodes(@NotNull final String message) {
|
private static String translateHexColorCodes(@NotNull final String message) {
|
||||||
String processedMessage = message;
|
String processedMessage = message;
|
||||||
for (Pattern pattern : HEX_PATTERNS) {
|
for (Pattern pattern : HEX_PATTERNS) {
|
||||||
@@ -257,6 +326,9 @@ public class StringUtils {
|
|||||||
@NotNull final Color end,
|
@NotNull final Color end,
|
||||||
final int step) {
|
final int step) {
|
||||||
ChatColor[] colors = new ChatColor[step];
|
ChatColor[] colors = new ChatColor[step];
|
||||||
|
if (step <= 1) {
|
||||||
|
return colors;
|
||||||
|
}
|
||||||
int stepR = Math.abs(start.getRed() - end.getRed()) / (step - 1);
|
int stepR = Math.abs(start.getRed() - end.getRed()) / (step - 1);
|
||||||
int stepG = Math.abs(start.getGreen() - end.getGreen()) / (step - 1);
|
int stepG = Math.abs(start.getGreen() - end.getGreen()) / (step - 1);
|
||||||
int stepB = Math.abs(start.getBlue() - end.getBlue()) / (step - 1);
|
int stepB = Math.abs(start.getBlue() - end.getBlue()) / (step - 1);
|
||||||
@@ -336,10 +408,14 @@ public class StringUtils {
|
|||||||
* @return The JSON String.
|
* @return The JSON String.
|
||||||
*/
|
*/
|
||||||
@NotNull
|
@NotNull
|
||||||
public String legacyToJson(@NotNull final String legacy) {
|
public String legacyToJson(@Nullable final String legacy) {
|
||||||
|
String processed = legacy;
|
||||||
|
if (legacy == null) {
|
||||||
|
processed = "";
|
||||||
|
}
|
||||||
return GsonComponentSerializer.gson().serialize(
|
return GsonComponentSerializer.gson().serialize(
|
||||||
Component.empty().decoration(TextDecoration.ITALIC, false).append(
|
Component.empty().decoration(TextDecoration.ITALIC, false).append(
|
||||||
LEGACY_COMPONENT_SERIALIZER.deserialize(legacy)
|
LEGACY_COMPONENT_SERIALIZER.deserialize(processed)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -357,6 +433,33 @@ public class StringUtils {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert legacy (bukkit) text to Component.
|
||||||
|
*
|
||||||
|
* @param legacy The legacy text.
|
||||||
|
* @return The component.
|
||||||
|
*/
|
||||||
|
@NotNull
|
||||||
|
public Component toComponent(@Nullable final String legacy) {
|
||||||
|
String processed = legacy;
|
||||||
|
if (legacy == null) {
|
||||||
|
processed = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
return LEGACY_COMPONENT_SERIALIZER.deserialize(processed);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert Component to legacy (bukkit) text.
|
||||||
|
*
|
||||||
|
* @param component The component.
|
||||||
|
* @return The legacy text.
|
||||||
|
*/
|
||||||
|
@NotNull
|
||||||
|
public String toLegacy(@NotNull final Component component) {
|
||||||
|
return LEGACY_COMPONENT_SERIALIZER.serialize(component);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Options for formatting.
|
* Options for formatting.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -16,6 +16,6 @@ subprojects {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compileOnly project(":eco-api")
|
compileOnly project(":eco-api")
|
||||||
compileOnly 'org.jetbrains.kotlin:kotlin-stdlib:1.5.21'
|
compileOnly 'org.jetbrains.kotlin:kotlin-stdlib:1.5.31'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2,7 +2,9 @@ group 'com.willfp'
|
|||||||
version rootProject.version
|
version rootProject.version
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compileOnly 'org.spigotmc:spigot-api:1.17-R0.1-SNAPSHOT'
|
compileOnly 'org.spigotmc:spigot-api:1.17.1-R0.1-SNAPSHOT'
|
||||||
compileOnly 'me.clip:placeholderapi:2.10.9'
|
compileOnly 'me.clip:placeholderapi:2.10.10'
|
||||||
compileOnly 'org.reflections:reflections:0.9.12'
|
compileOnly 'org.reflections:reflections:0.9.12'
|
||||||
|
compileOnly 'net.kyori:adventure-text-minimessage:4.1.0-SNAPSHOT'
|
||||||
|
compileOnly 'net.kyori:adventure-platform-bukkit:4.0.0'
|
||||||
}
|
}
|
||||||
@@ -6,14 +6,15 @@ import com.willfp.eco.core.config.interfaces.JSONConfig
|
|||||||
import com.willfp.eco.util.StringUtils
|
import com.willfp.eco.util.StringUtils
|
||||||
import org.apache.commons.lang.Validate
|
import org.apache.commons.lang.Validate
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
import java.util.concurrent.ConcurrentHashMap
|
||||||
|
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
open class EcoJSONConfigWrapper : JSONConfig {
|
open class EcoJSONConfigWrapper : JSONConfig {
|
||||||
val handle: Gson = GsonBuilder().setPrettyPrinting().create()
|
val handle: Gson = GsonBuilder().setPrettyPrinting().create()
|
||||||
|
|
||||||
val values = mutableMapOf<String, Any?>()
|
val values = ConcurrentHashMap<String, Any?>()
|
||||||
|
|
||||||
private val cache = mutableMapOf<String, Any>()
|
private val cache = ConcurrentHashMap<String, Any>()
|
||||||
|
|
||||||
fun init(values: Map<String, Any?>) {
|
fun init(values: Map<String, Any?>) {
|
||||||
this.values.clear()
|
this.values.clear()
|
||||||
|
|||||||
@@ -6,11 +6,12 @@ import org.apache.commons.lang.Validate
|
|||||||
import org.bukkit.configuration.ConfigurationSection
|
import org.bukkit.configuration.ConfigurationSection
|
||||||
import org.bukkit.configuration.file.YamlConfiguration
|
import org.bukkit.configuration.file.YamlConfiguration
|
||||||
import java.io.StringReader
|
import java.io.StringReader
|
||||||
|
import java.util.concurrent.ConcurrentHashMap
|
||||||
|
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
open class EcoYamlConfigWrapper<T : ConfigurationSection> : Config {
|
open class EcoYamlConfigWrapper<T : ConfigurationSection> : Config {
|
||||||
lateinit var handle: T
|
lateinit var handle: T
|
||||||
private val cache = mutableMapOf<String, Any?>()
|
private val cache = ConcurrentHashMap<String, Any?>()
|
||||||
|
|
||||||
protected fun init(config: T): Config {
|
protected fun init(config: T): Config {
|
||||||
handle = config
|
handle = config
|
||||||
|
|||||||
@@ -22,11 +22,11 @@ class EcoMenu(
|
|||||||
): Menu {
|
): Menu {
|
||||||
override fun getSlot(row: Int, column: Int): Slot {
|
override fun getSlot(row: Int, column: Int): Slot {
|
||||||
if (row < 1 || row > this.rows) {
|
if (row < 1 || row > this.rows) {
|
||||||
throw IllegalArgumentException("Invalid row number!")
|
return slots[0][0]
|
||||||
}
|
}
|
||||||
|
|
||||||
if (column < 1 || column > 9) {
|
if (column < 1 || column > 9) {
|
||||||
throw IllegalArgumentException("Invalid column number!")
|
return slots[0][0]
|
||||||
}
|
}
|
||||||
|
|
||||||
return slots[row - 1][column - 1]
|
return slots[row - 1][column - 1]
|
||||||
|
|||||||
@@ -18,9 +18,7 @@ class ExtendedInventory(
|
|||||||
fun refresh(player: Player) {
|
fun refresh(player: Player) {
|
||||||
captiveItems.clear()
|
captiveItems.clear()
|
||||||
for (i in 0 until inventory.size) {
|
for (i in 0 until inventory.size) {
|
||||||
val pair = MenuUtils.convertSlotToRowColumn(i)
|
val (row, column) = MenuUtils.convertSlotToRowColumn(i)
|
||||||
val row = pair.first!!
|
|
||||||
val column = pair.second!!
|
|
||||||
val slot = menu.getSlot(row, column)
|
val slot = menu.getSlot(row, column)
|
||||||
if (slot is EcoCaptivatorSlot) {
|
if (slot is EcoCaptivatorSlot) {
|
||||||
val defaultItem = slot.getItemStack(player)
|
val defaultItem = slot.getItemStack(player)
|
||||||
|
|||||||
@@ -2,10 +2,11 @@ package com.willfp.eco.internal.gui.menu
|
|||||||
|
|
||||||
import com.willfp.eco.core.gui.menu.Menu
|
import com.willfp.eco.core.gui.menu.Menu
|
||||||
import org.bukkit.inventory.Inventory
|
import org.bukkit.inventory.Inventory
|
||||||
|
import java.util.*
|
||||||
|
|
||||||
object MenuHandler {
|
object MenuHandler {
|
||||||
private val menus = mutableMapOf<ExtendedInventory, EcoMenu>()
|
private val menus = WeakHashMap<ExtendedInventory, EcoMenu>()
|
||||||
private val inventories = mutableMapOf<Inventory, ExtendedInventory>()
|
private val inventories = WeakHashMap<Inventory, ExtendedInventory>()
|
||||||
|
|
||||||
fun registerMenu(
|
fun registerMenu(
|
||||||
inventory: Inventory,
|
inventory: Inventory,
|
||||||
|
|||||||
@@ -3,22 +3,27 @@ version rootProject.version
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation 'org.bstats:bstats-bukkit:1.7'
|
implementation 'org.bstats:bstats-bukkit:1.7'
|
||||||
|
implementation 'net.kyori:adventure-text-minimessage:4.1.0-SNAPSHOT'
|
||||||
|
implementation 'net.kyori:adventure-platform-bukkit:4.0.0'
|
||||||
|
compileOnly 'net.kyori:adventure-api:4.9.1'
|
||||||
|
compileOnly 'net.kyori:adventure-text-serializer-gson:4.8.1'
|
||||||
|
compileOnly 'net.kyori:adventure-text-serializer-legacy:4.8.1'
|
||||||
compileOnly 'org.apache.maven:maven-artifact:3.0.3'
|
compileOnly 'org.apache.maven:maven-artifact:3.0.3'
|
||||||
compileOnly 'com.google.code.gson:gson:2.8.7'
|
compileOnly 'com.google.code.gson:gson:2.8.7'
|
||||||
compileOnly 'org.spigotmc:spigot-api:1.17-R0.1-SNAPSHOT'
|
compileOnly 'org.spigotmc:spigot-api:1.17.1-R0.1-SNAPSHOT'
|
||||||
compileOnly project(":eco-core:core-proxy")
|
compileOnly project(":eco-core:core-proxy")
|
||||||
compileOnly project(":eco-core:core-backend")
|
compileOnly project(":eco-core:core-backend")
|
||||||
compileOnly 'com.comphenix.protocol:ProtocolLib:4.6.0-SNAPSHOT'
|
compileOnly 'com.comphenix.protocol:ProtocolLib:4.6.0-SNAPSHOT'
|
||||||
compileOnly 'com.sk89q.worldguard:worldguard-bukkit:7.0.4-SNAPSHOT'
|
compileOnly 'com.sk89q.worldguard:worldguard-bukkit:7.0.4-SNAPSHOT'
|
||||||
compileOnly 'com.github.TechFortress:GriefPrevention:16.14.0'
|
compileOnly 'com.github.TechFortress:GriefPrevention:16.17.1'
|
||||||
compileOnly 'com.massivecraft:Factions:1.6.9.5-U0.5.10'
|
compileOnly 'com.massivecraft:Factions:1.6.9.5-U0.5.10'
|
||||||
compileOnly 'com.github.cryptomorin:kingdoms:1.10.14'
|
compileOnly 'com.github.cryptomorin:kingdoms:1.10.14'
|
||||||
compileOnly 'com.github.TownyAdvanced:Towny:0.96.2.0'
|
compileOnly 'com.github.TownyAdvanced:Towny:0.97.1.0'
|
||||||
compileOnly 'com.github.angeschossen:LandsAPI:4.7.3'
|
compileOnly 'com.github.angeschossen:LandsAPI:4.7.3'
|
||||||
compileOnly 'fr.neatmonster:nocheatplus:3.16.1-SNAPSHOT'
|
compileOnly 'fr.neatmonster:nocheatplus:3.16.1-SNAPSHOT'
|
||||||
compileOnly 'com.github.jiangdashao:matrix-api-repo:317d4635fd'
|
compileOnly 'com.github.jiangdashao:matrix-api-repo:317d4635fd'
|
||||||
compileOnly 'com.gmail.nossr50.mcMMO:mcMMO:2.1.157'
|
compileOnly 'com.gmail.nossr50.mcMMO:mcMMO:2.1.157'
|
||||||
compileOnly 'me.clip:placeholderapi:2.10.9'
|
compileOnly 'me.clip:placeholderapi:2.10.10'
|
||||||
compileOnly 'com.willfp:Oraxen:e1f4003d8d'
|
compileOnly 'com.willfp:Oraxen:e1f4003d8d'
|
||||||
compileOnly 'com.github.brcdev-minecraft:shopgui-api:2.2.0'
|
compileOnly 'com.github.brcdev-minecraft:shopgui-api:2.2.0'
|
||||||
compileOnly 'com.github.LoneDev6:API-ItemsAdder:2.4.7'
|
compileOnly 'com.github.LoneDev6:API-ItemsAdder:2.4.7'
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ import com.willfp.eco.internal.requirement.EcoRequirementFactory
|
|||||||
import com.willfp.eco.internal.scheduling.EcoScheduler
|
import com.willfp.eco.internal.scheduling.EcoScheduler
|
||||||
import com.willfp.eco.proxy.FastItemStackFactoryProxy
|
import com.willfp.eco.proxy.FastItemStackFactoryProxy
|
||||||
import com.willfp.eco.spigot.integrations.bstats.MetricHandler
|
import com.willfp.eco.spigot.integrations.bstats.MetricHandler
|
||||||
|
import net.kyori.adventure.platform.bukkit.BukkitAudiences
|
||||||
import org.bukkit.inventory.ItemStack
|
import org.bukkit.inventory.ItemStack
|
||||||
import java.util.logging.Logger
|
import java.util.logging.Logger
|
||||||
|
|
||||||
@@ -42,6 +43,7 @@ import java.util.logging.Logger
|
|||||||
class EcoHandler : EcoSpigotPlugin(), Handler {
|
class EcoHandler : EcoSpigotPlugin(), Handler {
|
||||||
private val cleaner = EcoCleaner()
|
private val cleaner = EcoCleaner()
|
||||||
private val requirementFactory = EcoRequirementFactory()
|
private val requirementFactory = EcoRequirementFactory()
|
||||||
|
private lateinit var adventure: BukkitAudiences
|
||||||
|
|
||||||
override fun createScheduler(plugin: EcoPlugin): Scheduler {
|
override fun createScheduler(plugin: EcoPlugin): Scheduler {
|
||||||
return EcoScheduler(plugin)
|
return EcoScheduler(plugin)
|
||||||
@@ -126,4 +128,12 @@ class EcoHandler : EcoSpigotPlugin(), Handler {
|
|||||||
override fun getRequirementFactory(): RequirementFactory {
|
override fun getRequirementFactory(): RequirementFactory {
|
||||||
return requirementFactory
|
return requirementFactory
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun getAdventure(): BukkitAudiences {
|
||||||
|
return adventure
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setAdventure(adventure: BukkitAudiences) {
|
||||||
|
this.adventure = adventure
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.willfp.eco.spigot
|
package com.willfp.eco.spigot
|
||||||
|
|
||||||
import com.willfp.eco.core.AbstractPacketAdapter
|
import com.willfp.eco.core.AbstractPacketAdapter
|
||||||
|
import com.willfp.eco.core.Eco
|
||||||
import com.willfp.eco.core.EcoPlugin
|
import com.willfp.eco.core.EcoPlugin
|
||||||
import com.willfp.eco.core.display.Display
|
import com.willfp.eco.core.display.Display
|
||||||
import com.willfp.eco.core.integrations.IntegrationLoader
|
import com.willfp.eco.core.integrations.IntegrationLoader
|
||||||
@@ -31,6 +32,7 @@ import com.willfp.eco.spigot.integrations.shop.ShopShopGuiPlus
|
|||||||
import com.willfp.eco.spigot.recipes.ShapedRecipeListener
|
import com.willfp.eco.spigot.recipes.ShapedRecipeListener
|
||||||
import com.willfp.eco.util.BlockUtils
|
import com.willfp.eco.util.BlockUtils
|
||||||
import com.willfp.eco.util.SkullUtils
|
import com.willfp.eco.util.SkullUtils
|
||||||
|
import net.kyori.adventure.platform.bukkit.BukkitAudiences
|
||||||
import org.bukkit.Bukkit
|
import org.bukkit.Bukkit
|
||||||
import org.bukkit.Material
|
import org.bukkit.Material
|
||||||
import org.bukkit.block.Block
|
import org.bukkit.block.Block
|
||||||
@@ -67,6 +69,7 @@ abstract class EcoSpigotPlugin : EcoPlugin(
|
|||||||
|
|
||||||
override fun handleEnable() {
|
override fun handleEnable() {
|
||||||
CollatedRunnable(this)
|
CollatedRunnable(this)
|
||||||
|
(Eco.getHandler() as EcoHandler).adventure = BukkitAudiences.create(this)
|
||||||
|
|
||||||
this.logger.info("Ignore messages about deprecated events!")
|
this.logger.info("Ignore messages about deprecated events!")
|
||||||
|
|
||||||
@@ -87,6 +90,10 @@ abstract class EcoSpigotPlugin : EcoPlugin(
|
|||||||
this.getProxy(FastItemStackFactoryProxy::class.java).create(ItemStack(Material.AIR)).unwrap()
|
this.getProxy(FastItemStackFactoryProxy::class.java).create(ItemStack(Material.AIR)).unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun handleDisable() {
|
||||||
|
Eco.getHandler().adventure.close()
|
||||||
|
}
|
||||||
|
|
||||||
override fun handleReload() {
|
override fun handleReload() {
|
||||||
CollatedRunnable(this)
|
CollatedRunnable(this)
|
||||||
DropManager.update(this)
|
DropManager.update(this)
|
||||||
@@ -102,6 +109,7 @@ abstract class EcoSpigotPlugin : EcoPlugin(
|
|||||||
// AntiGrief
|
// AntiGrief
|
||||||
IntegrationLoader("WorldGuard") { AntigriefManager.register(AntigriefWorldGuard()) },
|
IntegrationLoader("WorldGuard") { AntigriefManager.register(AntigriefWorldGuard()) },
|
||||||
IntegrationLoader("GriefPrevention") { AntigriefManager.register(AntigriefGriefPrevention()) },
|
IntegrationLoader("GriefPrevention") { AntigriefManager.register(AntigriefGriefPrevention()) },
|
||||||
|
IntegrationLoader("GriefDefender") { AntigriefManager.register(AntigriefGriefDefender()) },
|
||||||
IntegrationLoader("FactionsUUID") { AntigriefManager.register(AntigriefFactionsUUID()) },
|
IntegrationLoader("FactionsUUID") { AntigriefManager.register(AntigriefFactionsUUID()) },
|
||||||
IntegrationLoader("Towny") { AntigriefManager.register(AntigriefTowny()) },
|
IntegrationLoader("Towny") { AntigriefManager.register(AntigriefTowny()) },
|
||||||
IntegrationLoader("Lands") { AntigriefManager.register(AntigriefLands(this)) },
|
IntegrationLoader("Lands") { AntigriefManager.register(AntigriefLands(this)) },
|
||||||
|
|||||||
@@ -11,7 +11,10 @@ import com.willfp.eco.proxy.ChatComponentProxy
|
|||||||
import org.bukkit.entity.Player
|
import org.bukkit.entity.Player
|
||||||
|
|
||||||
class PacketChat(plugin: EcoPlugin) :
|
class PacketChat(plugin: EcoPlugin) :
|
||||||
AbstractPacketAdapter(plugin, PacketType.Play.Server.CHAT, ListenerPriority.MONITOR, true) {
|
AbstractPacketAdapter(plugin,
|
||||||
|
PacketType.Play.Server.CHAT,
|
||||||
|
if (plugin.configYml.getBool("use-lower-protocollib-priority")) ListenerPriority.NORMAL else ListenerPriority.MONITOR,
|
||||||
|
true) {
|
||||||
override fun onSend(
|
override fun onSend(
|
||||||
packet: PacketContainer,
|
packet: PacketContainer,
|
||||||
player: Player,
|
player: Player,
|
||||||
|
|||||||
@@ -13,7 +13,10 @@ import org.bukkit.inventory.ItemFlag
|
|||||||
import org.bukkit.inventory.MerchantRecipe
|
import org.bukkit.inventory.MerchantRecipe
|
||||||
|
|
||||||
class PacketOpenWindowMerchant(plugin: EcoPlugin) :
|
class PacketOpenWindowMerchant(plugin: EcoPlugin) :
|
||||||
AbstractPacketAdapter(plugin, PacketType.Play.Server.OPEN_WINDOW_MERCHANT, ListenerPriority.MONITOR, true) {
|
AbstractPacketAdapter(plugin,
|
||||||
|
PacketType.Play.Server.OPEN_WINDOW_MERCHANT,
|
||||||
|
if (plugin.configYml.getBool("use-lower-protocollib-priority")) ListenerPriority.NORMAL else ListenerPriority.MONITOR,
|
||||||
|
true) {
|
||||||
override fun onSend(
|
override fun onSend(
|
||||||
packet: PacketContainer,
|
packet: PacketContainer,
|
||||||
player: Player,
|
player: Player,
|
||||||
|
|||||||
@@ -23,9 +23,7 @@ class GUIListener(private val plugin: EcoPlugin) : Listener {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
val menu = MenuHandler.getMenu(event.clickedInventory ?: return) ?: return
|
val menu = MenuHandler.getMenu(event.clickedInventory ?: return) ?: return
|
||||||
val rowColumn = MenuUtils.convertSlotToRowColumn(event.slot)
|
val (row, column) = MenuUtils.convertSlotToRowColumn(event.slot)
|
||||||
val row = rowColumn.first!!
|
|
||||||
val column = rowColumn.second!!
|
|
||||||
val slot = menu.getSlot(row, column)
|
val slot = menu.getSlot(row, column)
|
||||||
Validate.isTrue(slot is EcoSlot, "Slot not instance of EcoSlot!")
|
Validate.isTrue(slot is EcoSlot, "Slot not instance of EcoSlot!")
|
||||||
val ecoSlot = menu.getSlot(row, column) as EcoSlot
|
val ecoSlot = menu.getSlot(row, column) as EcoSlot
|
||||||
|
|||||||
@@ -0,0 +1,81 @@
|
|||||||
|
package com.willfp.eco.spigot.integrations.antigrief
|
||||||
|
|
||||||
|
import com.flowpowered.math.vector.Vector3i
|
||||||
|
import com.griefdefender.api.GriefDefender
|
||||||
|
import com.griefdefender.api.data.PlayerData
|
||||||
|
import com.griefdefender.api.permission.flag.Flags
|
||||||
|
import com.willfp.eco.core.integrations.antigrief.AntigriefWrapper
|
||||||
|
import org.bukkit.Location
|
||||||
|
import org.bukkit.block.Block
|
||||||
|
import org.bukkit.entity.LivingEntity
|
||||||
|
import org.bukkit.entity.Player
|
||||||
|
import java.util.*
|
||||||
|
|
||||||
|
class AntigriefGriefDefender : AntigriefWrapper {
|
||||||
|
override fun canBreakBlock(player: Player, block: Block): Boolean {
|
||||||
|
val data = GriefDefender.getCore().getPlayerData(player.world.uid, player.uniqueId) ?: return true
|
||||||
|
|
||||||
|
val claim = GriefDefender.getCore().getClaimAt(Vector3i(block.location.x, block.location.y, block.location.z))
|
||||||
|
?: return true
|
||||||
|
|
||||||
|
return if (data.canIgnoreClaim(claim)) {
|
||||||
|
true
|
||||||
|
} else {
|
||||||
|
claim.getActiveFlagPermissionValue(Flags.BLOCK_BREAK, data.user, Collections.emptySet(), true).asBoolean()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun canCreateExplosion(player: Player, location: Location): Boolean {
|
||||||
|
val data = GriefDefender.getCore().getPlayerData(player.world.uid, player.uniqueId) ?: return true
|
||||||
|
|
||||||
|
val claim = GriefDefender.getCore().getClaimAt(Vector3i(location.x, location.y, location.z)) ?: return true
|
||||||
|
|
||||||
|
return if (data.canIgnoreClaim(claim)) {
|
||||||
|
true
|
||||||
|
} else {
|
||||||
|
claim.getActiveFlagPermissionValue(Flags.EXPLOSION_BLOCK, data.user, Collections.emptySet(), true)
|
||||||
|
.asBoolean()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun canPlaceBlock(player: Player, block: Block): Boolean {
|
||||||
|
|
||||||
|
val data: PlayerData = GriefDefender.getCore().getPlayerData(player.world.uid, player.uniqueId) ?: return true
|
||||||
|
|
||||||
|
val claim =
|
||||||
|
GriefDefender.getCore().getClaimAt(Vector3i(block.location.x, block.location.y, block.location.z))
|
||||||
|
?: return true
|
||||||
|
|
||||||
|
return if (data.canIgnoreClaim(claim)) {
|
||||||
|
true
|
||||||
|
} else {
|
||||||
|
claim.getActiveFlagPermissionValue(Flags.BLOCK_PLACE, data.user, Collections.emptySet(), true)
|
||||||
|
.asBoolean()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun canInjure(player: Player, victim: LivingEntity): Boolean {
|
||||||
|
|
||||||
|
val data = GriefDefender.getCore().getPlayerData(player.world.uid, player.uniqueId) ?: return true
|
||||||
|
|
||||||
|
if (data.canIgnoreClaim(data.currentClaim)) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
return if (victim is Player) {
|
||||||
|
val vicData = GriefDefender.getCore().getPlayerData(victim.world.uid, victim.uniqueId)
|
||||||
|
if (vicData != null) {
|
||||||
|
data.canPvp(data.currentClaim) && data.canPvp(vicData.currentClaim)
|
||||||
|
} else data.canPvp(data.currentClaim)
|
||||||
|
} else {
|
||||||
|
val claim =
|
||||||
|
GriefDefender.getCore().getClaimAt(Vector3i(victim.location.x, victim.location.y, victim.location.z))
|
||||||
|
claim?.getActiveFlagPermissionValue(Flags.ENTITY_DAMAGE, data.user, Collections.emptySet(), true)
|
||||||
|
?.asBoolean() ?: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getPluginName(): String {
|
||||||
|
return "GriefDefender"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,9 +2,7 @@ package com.willfp.eco.spigot.integrations.antigrief
|
|||||||
|
|
||||||
import com.palmergames.bukkit.towny.TownyAPI
|
import com.palmergames.bukkit.towny.TownyAPI
|
||||||
import com.palmergames.bukkit.towny.TownyUniverse
|
import com.palmergames.bukkit.towny.TownyUniverse
|
||||||
import com.palmergames.bukkit.towny.`object`.Town
|
|
||||||
import com.palmergames.bukkit.towny.`object`.TownyPermission
|
import com.palmergames.bukkit.towny.`object`.TownyPermission
|
||||||
import com.palmergames.bukkit.towny.`object`.WorldCoord
|
|
||||||
import com.palmergames.bukkit.towny.utils.PlayerCacheUtil
|
import com.palmergames.bukkit.towny.utils.PlayerCacheUtil
|
||||||
import com.willfp.eco.core.integrations.antigrief.AntigriefWrapper
|
import com.willfp.eco.core.integrations.antigrief.AntigriefWrapper
|
||||||
import org.bukkit.Location
|
import org.bukkit.Location
|
||||||
@@ -67,22 +65,8 @@ class AntigriefTowny : AntigriefWrapper {
|
|||||||
true
|
true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (victim is Player) {
|
val townBlock = TownyAPI.getInstance().getTownBlock(victim.location) ?: return true
|
||||||
try {
|
return townBlock.permissions.pvp
|
||||||
val town: Town = WorldCoord.parseWorldCoord(victim.getLocation()).townBlock.town
|
|
||||||
return town.isPVP
|
|
||||||
} catch (ignored: Exception) {
|
|
||||||
// If exception, no town was found, thus return true.
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
try {
|
|
||||||
val town: Town = WorldCoord.parseWorldCoord(victim.location).townBlock.town
|
|
||||||
return town.hasMobs()
|
|
||||||
} catch (ignored: Exception) {
|
|
||||||
// If exception, no town was found, thus return true.
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getPluginName(): String {
|
override fun getPluginName(): String {
|
||||||
|
|||||||
@@ -11,7 +11,9 @@ import com.willfp.eco.core.integrations.antigrief.AntigriefWrapper
|
|||||||
import org.apache.commons.lang.Validate
|
import org.apache.commons.lang.Validate
|
||||||
import org.bukkit.Location
|
import org.bukkit.Location
|
||||||
import org.bukkit.block.Block
|
import org.bukkit.block.Block
|
||||||
|
import org.bukkit.entity.Animals
|
||||||
import org.bukkit.entity.LivingEntity
|
import org.bukkit.entity.LivingEntity
|
||||||
|
import org.bukkit.entity.Monster
|
||||||
import org.bukkit.entity.Player
|
import org.bukkit.entity.Player
|
||||||
|
|
||||||
class AntigriefWorldGuard : AntigriefWrapper {
|
class AntigriefWorldGuard : AntigriefWrapper {
|
||||||
@@ -79,22 +81,21 @@ class AntigriefWorldGuard : AntigriefWrapper {
|
|||||||
val localPlayer: LocalPlayer = WorldGuardPlugin.inst().wrapPlayer(player)
|
val localPlayer: LocalPlayer = WorldGuardPlugin.inst().wrapPlayer(player)
|
||||||
val container: RegionContainer = WorldGuard.getInstance().platform.regionContainer
|
val container: RegionContainer = WorldGuard.getInstance().platform.regionContainer
|
||||||
val query: RegionQuery = container.createQuery()
|
val query: RegionQuery = container.createQuery()
|
||||||
if (victim is Player) {
|
val flag = when(victim) {
|
||||||
if (!query.testBuild(BukkitAdapter.adapt(victim.getLocation()), localPlayer, Flags.PVP)) {
|
is Player -> Flags.PVP
|
||||||
return WorldGuard.getInstance().platform.sessionManager.hasBypass(
|
is Monster -> Flags.MOB_DAMAGE
|
||||||
localPlayer,
|
is Animals -> Flags.DAMAGE_ANIMALS
|
||||||
BukkitAdapter.adapt(player.world)
|
else -> return true
|
||||||
)
|
}
|
||||||
}
|
|
||||||
} else {
|
return if (!query.testBuild(BukkitAdapter.adapt(victim.location), localPlayer, flag)) {
|
||||||
if (!query.testBuild(BukkitAdapter.adapt(victim.location), localPlayer, Flags.DAMAGE_ANIMALS)) {
|
WorldGuard.getInstance().platform.sessionManager.hasBypass(
|
||||||
return WorldGuard.getInstance().platform.sessionManager.hasBypass(
|
localPlayer,
|
||||||
localPlayer,
|
BukkitAdapter.adapt(player.world)
|
||||||
BukkitAdapter.adapt(player.world)
|
)
|
||||||
)
|
} else {
|
||||||
}
|
true
|
||||||
}
|
}
|
||||||
return true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getPluginName(): String {
|
override fun getPluginName(): String {
|
||||||
|
|||||||
@@ -14,4 +14,9 @@ use-fast-collated-drops: true
|
|||||||
|
|
||||||
# bStats is important and you should keep it enabled.
|
# bStats is important and you should keep it enabled.
|
||||||
# This option is only here because of compliance with data protection laws.
|
# This option is only here because of compliance with data protection laws.
|
||||||
enable-bstats: true
|
enable-bstats: true
|
||||||
|
|
||||||
|
# Some plugins use their own item display systems (eg Triton)
|
||||||
|
# And must be ran after eco. Don't enable this unless you run a conflicting plugin
|
||||||
|
# and have been told to enable it.
|
||||||
|
use-lower-protocollib-priority: false
|
||||||
@@ -25,9 +25,11 @@ softdepend:
|
|||||||
- ItemsAdder
|
- ItemsAdder
|
||||||
- Oraxen
|
- Oraxen
|
||||||
- HeadDatabase
|
- HeadDatabase
|
||||||
|
- GriefDefender
|
||||||
libraries:
|
libraries:
|
||||||
- org.reflections:reflections:0.9.12
|
- org.reflections:reflections:0.9.12
|
||||||
- org.apache.maven:maven-artifact:3.0.3
|
- org.apache.maven:maven-artifact:3.0.3
|
||||||
|
- org.jetbrains.kotlin:kotlin-stdlib:1.5.31
|
||||||
|
- net.kyori:adventure-api:4.9.1
|
||||||
- net.kyori:adventure-text-serializer-gson:4.8.1
|
- net.kyori:adventure-text-serializer-gson:4.8.1
|
||||||
- net.kyori:adventure-text-serializer-legacy:4.8.1
|
- net.kyori:adventure-text-serializer-legacy:4.8.1
|
||||||
- org.jetbrains.kotlin:kotlin-stdlib:1.5.21
|
|
||||||
@@ -2,5 +2,5 @@ group 'com.willfp'
|
|||||||
version rootProject.version
|
version rootProject.version
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compileOnly 'org.spigotmc:spigot-api:1.17-R0.1-SNAPSHOT'
|
compileOnly 'org.spigotmc:spigot-api:1.17.1-R0.1-SNAPSHOT'
|
||||||
}
|
}
|
||||||
@@ -1,2 +1,2 @@
|
|||||||
version = 6.8.1
|
version = 6.9.2
|
||||||
plugin-name = eco
|
plugin-name = eco
|
||||||
BIN
lib/griefdefenderapi-2.0.0-SNAPSHOT.jar
Normal file
BIN
lib/griefdefenderapi-2.0.0-SNAPSHOT.jar
Normal file
Binary file not shown.
Reference in New Issue
Block a user