mirror of
https://github.com/EssentialsX/Essentials.git
synced 2024-09-21 04:20:59 +02:00
Merge branch '2.x' into fix-5697
This commit is contained in:
commit
a481b21324
14
.github/workflows/build-master.yml
vendored
14
.github/workflows/build-master.yml
vendored
@ -16,18 +16,18 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Git repo
|
- name: Checkout Git repo
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Set up JDK 17
|
- name: Set up JDK 17
|
||||||
uses: actions/setup-java@v3
|
uses: actions/setup-java@v4
|
||||||
with:
|
with:
|
||||||
distribution: 'temurin'
|
distribution: 'temurin'
|
||||||
java-version: 17
|
java-version: 17
|
||||||
|
|
||||||
- name: Setup Gradle
|
- name: Setup Gradle
|
||||||
uses: gradle/gradle-build-action@v2
|
uses: gradle/gradle-build-action@v3
|
||||||
|
|
||||||
- name: Build with Gradle
|
- name: Build with Gradle
|
||||||
run: |
|
run: |
|
||||||
@ -35,7 +35,7 @@ jobs:
|
|||||||
./gradlew build --stacktrace
|
./gradlew build --stacktrace
|
||||||
|
|
||||||
- name: Archive plugin jars on GitHub
|
- name: Archive plugin jars on GitHub
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: EssentialsX plugin jars
|
name: EssentialsX plugin jars
|
||||||
path: jars/
|
path: jars/
|
||||||
@ -61,7 +61,7 @@ jobs:
|
|||||||
cp -r EssentialsXMPP/build/docs/javadoc/ javadocs/EssentialsXMPP/
|
cp -r EssentialsXMPP/build/docs/javadoc/ javadocs/EssentialsXMPP/
|
||||||
|
|
||||||
- name: Archive Javadocs
|
- name: Archive Javadocs
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: javadocs
|
name: javadocs
|
||||||
path: javadocs/
|
path: javadocs/
|
||||||
@ -74,12 +74,12 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@v3
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 16
|
node-version: 16
|
||||||
|
|
||||||
- name: Download Javadocs
|
- name: Download Javadocs
|
||||||
uses: actions/download-artifact@v3
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: javadocs
|
name: javadocs
|
||||||
path: javadocs/
|
path: javadocs/
|
||||||
|
8
.github/workflows/build-pr.yml
vendored
8
.github/workflows/build-pr.yml
vendored
@ -18,18 +18,18 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Git repo
|
- name: Checkout Git repo
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Set up JDK 17
|
- name: Set up JDK 17
|
||||||
uses: actions/setup-java@v3
|
uses: actions/setup-java@v4
|
||||||
with:
|
with:
|
||||||
distribution: 'temurin'
|
distribution: 'temurin'
|
||||||
java-version: 17
|
java-version: 17
|
||||||
|
|
||||||
- name: Setup Gradle
|
- name: Setup Gradle
|
||||||
uses: gradle/gradle-build-action@v2
|
uses: gradle/gradle-build-action@v3
|
||||||
|
|
||||||
- name: Build with Gradle
|
- name: Build with Gradle
|
||||||
run: |
|
run: |
|
||||||
@ -37,7 +37,7 @@ jobs:
|
|||||||
./gradlew build --stacktrace
|
./gradlew build --stacktrace
|
||||||
|
|
||||||
- name: Archive plugin jars on GitHub
|
- name: Archive plugin jars on GitHub
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: EssentialsX plugin jars
|
name: EssentialsX plugin jars
|
||||||
path: jars/
|
path: jars/
|
||||||
|
@ -657,6 +657,7 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
|
|||||||
final PluginManager pm = getServer().getPluginManager();
|
final PluginManager pm = getServer().getPluginManager();
|
||||||
registerListeners(pm);
|
registerListeners(pm);
|
||||||
|
|
||||||
|
AdventureUtil.setEss(this);
|
||||||
bukkitAudience = BukkitAudiences.create(this);
|
bukkitAudience = BukkitAudiences.create(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,6 +53,8 @@ import static com.earth2me.essentials.I18n.tlLiteral;
|
|||||||
public class Settings implements net.ess3.api.ISettings {
|
public class Settings implements net.ess3.api.ISettings {
|
||||||
private static final BigDecimal DEFAULT_MAX_MONEY = new BigDecimal("10000000000000");
|
private static final BigDecimal DEFAULT_MAX_MONEY = new BigDecimal("10000000000000");
|
||||||
private static final BigDecimal DEFAULT_MIN_MONEY = new BigDecimal("-10000000000000");
|
private static final BigDecimal DEFAULT_MIN_MONEY = new BigDecimal("-10000000000000");
|
||||||
|
private static final Tag DEFAULT_PRIMARY_COLOR = Tag.styling(NamedTextColor.GOLD);
|
||||||
|
private static final Tag DEFAULT_SECONDARY_COLOR = Tag.styling(NamedTextColor.RED);
|
||||||
private final transient EssentialsConfiguration config;
|
private final transient EssentialsConfiguration config;
|
||||||
private final transient IEssentials ess;
|
private final transient IEssentials ess;
|
||||||
private final transient AtomicInteger reloadCount = new AtomicInteger(0);
|
private final transient AtomicInteger reloadCount = new AtomicInteger(0);
|
||||||
@ -141,8 +143,8 @@ public class Settings implements net.ess3.api.ISettings {
|
|||||||
private double maxProjectileSpeed;
|
private double maxProjectileSpeed;
|
||||||
private boolean removeEffectsOnHeal;
|
private boolean removeEffectsOnHeal;
|
||||||
private Map<String, String> worldAliases;
|
private Map<String, String> worldAliases;
|
||||||
private Tag primaryColor = Tag.styling(NamedTextColor.GOLD);
|
private Tag primaryColor = DEFAULT_PRIMARY_COLOR;
|
||||||
private Tag secondaryColor = Tag.styling(NamedTextColor.RED);
|
private Tag secondaryColor = DEFAULT_SECONDARY_COLOR;
|
||||||
|
|
||||||
public Settings(final IEssentials ess) {
|
public Settings(final IEssentials ess) {
|
||||||
this.ess = ess;
|
this.ess = ess;
|
||||||
@ -1970,7 +1972,8 @@ public class Settings implements net.ess3.api.ISettings {
|
|||||||
|
|
||||||
private Tag _getPrimaryColor() {
|
private Tag _getPrimaryColor() {
|
||||||
final String color = config.getString("message-colors.primary", "#ffaa00");
|
final String color = config.getString("message-colors.primary", "#ffaa00");
|
||||||
return Tag.styling(_getTagColor(color, NamedTextColor.GOLD));
|
final TextColor textColor = _getTagColor(color);
|
||||||
|
return textColor != null ? Tag.styling(textColor) : DEFAULT_PRIMARY_COLOR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1980,24 +1983,23 @@ public class Settings implements net.ess3.api.ISettings {
|
|||||||
|
|
||||||
private Tag _getSecondaryColor() {
|
private Tag _getSecondaryColor() {
|
||||||
final String color = config.getString("message-colors.secondary", "#ff5555");
|
final String color = config.getString("message-colors.secondary", "#ff5555");
|
||||||
return Tag.styling(_getTagColor(color, NamedTextColor.RED));
|
final TextColor textColor = _getTagColor(color);
|
||||||
|
return textColor != null ? Tag.styling(textColor) : DEFAULT_SECONDARY_COLOR;
|
||||||
}
|
}
|
||||||
|
|
||||||
private TextColor _getTagColor(final String color, final TextColor def) {
|
private TextColor _getTagColor(final String color) {
|
||||||
try {
|
try {
|
||||||
if (color.startsWith("#") && color.length() == 7 && NumberUtil.isNumeric(color.substring(1))) {
|
if (color.startsWith("#") && color.length() == 7 && NumberUtil.isHexadecimal(color.substring(1))) {
|
||||||
return TextColor.color(Color.fromRGB(Integer.decode(color)).asRGB());
|
return TextColor.color(Color.fromRGB(Integer.decode(color)).asRGB());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (color.length() == 1) {
|
if (color.length() == 1) {
|
||||||
final NamedTextColor named = AdventureUtil.fromChar(color.charAt(0));
|
return AdventureUtil.fromChar(color.charAt(0));
|
||||||
return named != null ? named : def;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
final NamedTextColor named = NamedTextColor.NAMES.value(color.toLowerCase(Locale.ENGLISH));
|
return NamedTextColor.NAMES.value(color.toLowerCase(Locale.ENGLISH));
|
||||||
return named != null ? named : def;
|
|
||||||
} catch (IllegalArgumentException ignored) {
|
} catch (IllegalArgumentException ignored) {
|
||||||
}
|
}
|
||||||
return def;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,13 +19,13 @@ public class Commandbroadcastworld extends EssentialsCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception {
|
public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception {
|
||||||
if (args.length == 0) {
|
if (args.length < 2) {
|
||||||
throw new NotEnoughArgumentsException();
|
throw new NotEnoughArgumentsException();
|
||||||
}
|
}
|
||||||
|
|
||||||
World world = user.getWorld();
|
World world = user.getWorld();
|
||||||
String message = getFinalArg(args, 0);
|
String message = getFinalArg(args, 0);
|
||||||
if (args.length > 1 && ess.getSettings().isAllowWorldInBroadcastworld()) {
|
if (ess.getSettings().isAllowWorldInBroadcastworld()) {
|
||||||
final World argWorld = ess.getWorld(args[0]);
|
final World argWorld = ess.getWorld(args[0]);
|
||||||
if (argWorld != null) {
|
if (argWorld != null) {
|
||||||
world = argWorld;
|
world = argWorld;
|
||||||
@ -53,7 +53,7 @@ public class Commandbroadcastworld extends EssentialsCommand {
|
|||||||
if (message.isEmpty()) {
|
if (message.isEmpty()) {
|
||||||
throw new NotEnoughArgumentsException();
|
throw new NotEnoughArgumentsException();
|
||||||
}
|
}
|
||||||
ess.broadcastTl(null, u -> u.getBase().getWorld().equals(world), true, "broadcast", message, AdventureUtil.parsed(AdventureUtil.legacyToMini(name)));
|
ess.broadcastTl(null, u -> !u.getBase().getWorld().equals(world), true, "broadcast", message, AdventureUtil.parsed(AdventureUtil.legacyToMini(name)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -17,8 +17,6 @@ import java.util.HashSet;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import static com.earth2me.essentials.I18n.tlLiteral;
|
|
||||||
|
|
||||||
public class Commandme extends EssentialsCommand {
|
public class Commandme extends EssentialsCommand {
|
||||||
public Commandme() {
|
public Commandme() {
|
||||||
super("me");
|
super("me");
|
||||||
@ -109,7 +107,7 @@ public class Commandme extends EssentialsCommand {
|
|||||||
String message = getFinalArg(args, 0);
|
String message = getFinalArg(args, 0);
|
||||||
message = FormatUtil.replaceFormat(message);
|
message = FormatUtil.replaceFormat(message);
|
||||||
|
|
||||||
ess.getServer().broadcastMessage(tlLiteral("action", "@", message));
|
ess.broadcastTl("action", "@", message);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -15,13 +15,13 @@ import java.util.regex.Pattern;
|
|||||||
|
|
||||||
public final class AdventureUtil {
|
public final class AdventureUtil {
|
||||||
private static final LegacyComponentSerializer LEGACY_SERIALIZER;
|
private static final LegacyComponentSerializer LEGACY_SERIALIZER;
|
||||||
private static final MiniMessage MINI_MESSAGE_INSTANCE;
|
|
||||||
private static IEssentials ess;
|
|
||||||
private static final Pattern NAMED_PATTERN = Pattern.compile(ChatColor.COLOR_CHAR + "[0-9a-fk-orA-FK-OR]");
|
private static final Pattern NAMED_PATTERN = Pattern.compile(ChatColor.COLOR_CHAR + "[0-9a-fk-orA-FK-OR]");
|
||||||
private static final Pattern HEX_PATTERN = Pattern.compile(ChatColor.COLOR_CHAR + "x((?:" + ChatColor.COLOR_CHAR + "[0-9a-fA-F]){6})");
|
private static final Pattern HEX_PATTERN = Pattern.compile(ChatColor.COLOR_CHAR + "x((?:" + ChatColor.COLOR_CHAR + "[0-9a-fA-F]){6})");
|
||||||
private static final String LOOKUP = "0123456789abcdefklmnor";
|
private static final String LOOKUP = "0123456789abcdefklmnor";
|
||||||
private static final String[] MINI_TAGS = new String[] {"black", "dark_blue", "dark_green", "dark_aqua", "dark_red", "dark_purple", "gold", "gray", "dark_gray", "blue", "green", "aqua", "red", "light_purple", "yellow", "white", "obf", "b", "st", "u", "i", "reset"};
|
private static final String[] MINI_TAGS = new String[] {"black", "dark_blue", "dark_green", "dark_aqua", "dark_red", "dark_purple", "gold", "gray", "dark_gray", "blue", "green", "aqua", "red", "light_purple", "yellow", "white", "obf", "b", "st", "u", "i", "reset"};
|
||||||
private static final NamedTextColor[] COLORS = new NamedTextColor[] {NamedTextColor.BLACK, NamedTextColor.DARK_BLUE, NamedTextColor.DARK_GREEN, NamedTextColor.DARK_AQUA, NamedTextColor.DARK_RED, NamedTextColor.DARK_PURPLE, NamedTextColor.GOLD, NamedTextColor.GRAY, NamedTextColor.DARK_GRAY, NamedTextColor.BLUE, NamedTextColor.GREEN, NamedTextColor.AQUA, NamedTextColor.RED, NamedTextColor.LIGHT_PURPLE, NamedTextColor.YELLOW, NamedTextColor.WHITE};
|
private static final NamedTextColor[] COLORS = new NamedTextColor[] {NamedTextColor.BLACK, NamedTextColor.DARK_BLUE, NamedTextColor.DARK_GREEN, NamedTextColor.DARK_AQUA, NamedTextColor.DARK_RED, NamedTextColor.DARK_PURPLE, NamedTextColor.GOLD, NamedTextColor.GRAY, NamedTextColor.DARK_GRAY, NamedTextColor.BLUE, NamedTextColor.GREEN, NamedTextColor.AQUA, NamedTextColor.RED, NamedTextColor.LIGHT_PURPLE, NamedTextColor.YELLOW, NamedTextColor.WHITE};
|
||||||
|
private static IEssentials ess;
|
||||||
|
private static MiniMessage miniMessageInstance;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
final LegacyComponentSerializer.Builder builder = LegacyComponentSerializer.builder().flattener(ComponentFlattener.basic()).useUnusualXRepeatedCharacterHexFormat();
|
final LegacyComponentSerializer.Builder builder = LegacyComponentSerializer.builder().flattener(ComponentFlattener.basic()).useUnusualXRepeatedCharacterHexFormat();
|
||||||
@ -29,15 +29,7 @@ public final class AdventureUtil {
|
|||||||
builder.hexColors();
|
builder.hexColors();
|
||||||
}
|
}
|
||||||
LEGACY_SERIALIZER = builder.build();
|
LEGACY_SERIALIZER = builder.build();
|
||||||
|
miniMessageInstance = createMiniMessageInstance();
|
||||||
MINI_MESSAGE_INSTANCE = MiniMessage.builder()
|
|
||||||
.tags(TagResolver.builder()
|
|
||||||
.resolvers(TagResolver.standard())
|
|
||||||
.resolver(TagResolver.resolver("primary", supplyTag(true)))
|
|
||||||
.resolver(TagResolver.resolver("secondary", supplyTag(false)))
|
|
||||||
.build())
|
|
||||||
.build();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private AdventureUtil() {
|
private AdventureUtil() {
|
||||||
@ -45,10 +37,21 @@ public final class AdventureUtil {
|
|||||||
|
|
||||||
public static void setEss(final IEssentials ess) {
|
public static void setEss(final IEssentials ess) {
|
||||||
AdventureUtil.ess = ess;
|
AdventureUtil.ess = ess;
|
||||||
|
miniMessageInstance = createMiniMessageInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static MiniMessage createMiniMessageInstance() {
|
||||||
|
return MiniMessage.builder()
|
||||||
|
.tags(TagResolver.builder()
|
||||||
|
.resolvers(TagResolver.standard())
|
||||||
|
.resolver(TagResolver.resolver("primary", supplyTag(true)))
|
||||||
|
.resolver(TagResolver.resolver("secondary", supplyTag(false)))
|
||||||
|
.build())
|
||||||
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static MiniMessage miniMessage() {
|
public static MiniMessage miniMessage() {
|
||||||
return MINI_MESSAGE_INSTANCE;
|
return miniMessageInstance;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -129,6 +129,15 @@ public final class NumberUtil {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isHexadecimal(final String sNum) {
|
||||||
|
try {
|
||||||
|
Integer.parseInt(sNum, 16);
|
||||||
|
return true;
|
||||||
|
} catch (final NumberFormatException e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Backport from Guava.
|
* Backport from Guava.
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user