Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,9 @@ public final class VersionUtil {
public static final BukkitVersion v1_18_2_R01 = BukkitVersion.fromString("1.18.2-R0.1-SNAPSHOT");
public static final BukkitVersion v1_19_R01 = BukkitVersion.fromString("1.19-R0.1-SNAPSHOT");
public static final BukkitVersion v1_19_2_R01 = BukkitVersion.fromString("1.19.2-R0.1-SNAPSHOT");
public static final BukkitVersion v1_19_3_R01 = BukkitVersion.fromString("1.19.3-R0.1-SNAPSHOT");
public static final BukkitVersion v1_19_4_R01 = BukkitVersion.fromString("1.19.4-R0.1-SNAPSHOT");

private static final Set<BukkitVersion> supportedVersions = ImmutableSet.of(v1_8_8_R01, v1_9_4_R01, v1_10_2_R01, v1_11_2_R01, v1_12_2_R01, v1_13_2_R01, v1_14_4_R01, v1_15_2_R01, v1_16_5_R01, v1_17_1_R01, v1_18_2_R01, v1_19_3_R01);
private static final Set<BukkitVersion> supportedVersions = ImmutableSet.of(v1_8_8_R01, v1_9_4_R01, v1_10_2_R01, v1_11_2_R01, v1_12_2_R01, v1_13_2_R01, v1_14_4_R01, v1_15_2_R01, v1_16_5_R01, v1_17_1_R01, v1_18_2_R01, v1_19_4_R01);

public static final boolean PRE_FLATTENING = VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_13_0_R01);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@

import com.earth2me.essentials.Essentials;
import com.earth2me.essentials.EssentialsLogger;
import com.earth2me.essentials.chat.processing.LegacyChatHandler;
import com.earth2me.essentials.chat.processing.SignedChatHandler;
import com.earth2me.essentials.chat.processing.ChatHandler;
import com.earth2me.essentials.metrics.MetricsWrapper;
import net.ess3.api.IEssentials;
import org.bukkit.command.Command;
Expand Down Expand Up @@ -32,13 +31,8 @@ public void onEnable() {
return;
}

final SignedChatHandler signedHandler = new SignedChatHandler((Essentials) ess, this);
if (signedHandler.tryRegisterListeners()) {
getLogger().info("Secure signed chat and previews are enabled.");
} else {
final LegacyChatHandler legacyHandler = new LegacyChatHandler((Essentials) ess, this);
legacyHandler.registerListeners();
}
final ChatHandler legacyHandler = new ChatHandler((Essentials) ess, this);
legacyHandler.registerListeners();

if (metrics == null) {
metrics = new MetricsWrapper(this, 3814, false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,10 @@ protected void handleChatFormat(AsyncPlayerChatEvent event) {
}

// Reuse cached IntermediateChat if available
ChatProcessingCache.IntermediateChat chat = cache.getIntermediateChat(event.getPlayer());
ChatProcessingCache.ProcessedChat chat = cache.getProcessedChat(event.getPlayer());
if (chat == null) {
chat = new ChatProcessingCache.IntermediateChat(user, getChatType(user, event.getMessage()), event.getMessage());
cache.setIntermediateChat(event.getPlayer(), chat);
chat = new ChatProcessingCache.ProcessedChat(user, getChatType(user, event.getMessage()), event.getMessage());
cache.setProcessedChat(event.getPlayer(), chat);
}

final long configRadius = ess.getSettings().getChatRadius();
Expand Down Expand Up @@ -118,9 +118,6 @@ protected void handleChatFormat(AsyncPlayerChatEvent event) {
synchronized (format) {
event.setFormat(format);
}

chat.setFormatResult(event.getFormat());
chat.setMessageResult(event.getMessage());
}

/**
Expand All @@ -133,7 +130,7 @@ protected void handleChatRecipients(AsyncPlayerChatEvent event) {
return;
}

final ChatProcessingCache.Chat chat = cache.getIntermediateOrElseProcessedChat(event.getPlayer());
final ChatProcessingCache.Chat chat = cache.getProcessedChat(event.getPlayer());

// If local chat is enabled, handle the recipients here; else we have nothing to do
if (chat.getRadius() < 1) {
Expand Down Expand Up @@ -264,17 +261,9 @@ protected void callChatEvent(final AsyncPlayerChatEvent event, final ChatType ch
* {@link #handleChatFormat(AsyncPlayerChatEvent)} when previews are not available.
*/
protected void handleChatPostFormat(AsyncPlayerChatEvent event) {
final ChatProcessingCache.IntermediateChat intermediateChat = cache.clearIntermediateChat(event.getPlayer());
if (isAborted(event) || intermediateChat == null) {
return;
if (isAborted(event)) {
cache.clearProcessedChat(event.getPlayer());
}

// in case of modifications by other plugins during the preview
intermediateChat.setFormatResult(event.getFormat());
intermediateChat.setMessageResult(event.getMessage());

final ChatProcessingCache.ProcessedChat processed = new ChatProcessingCache.ProcessedChat(ess, intermediateChat);
cache.setProcessedChat(event.getPlayer(), processed);
}

/**
Expand All @@ -295,11 +284,6 @@ boolean isAborted(final AsyncPlayerChatEvent event) {
return event.isCancelled();
}

boolean isPlayerChat(final AsyncPlayerChatEvent event) {
// Used to distinguish chats from Player#chat (sync) from chats sent by the player (async)
return event.isAsynchronous();
}

ChatType getChatType(final User user, final String message) {
if (message.length() == 0) {
//Ignore empty chat events generated by plugins
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.plugin.PluginManager;

public class LegacyChatHandler extends AbstractChatHandler {
public LegacyChatHandler(Essentials ess, EssentialsChat essChat) {
public class ChatHandler extends AbstractChatHandler {
public ChatHandler(Essentials ess, EssentialsChat essChat) {
super(ess, essChat);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,57 +2,27 @@

import com.earth2me.essentials.Trade;
import com.earth2me.essentials.User;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import net.ess3.api.IEssentials;
import net.essentialsx.api.v2.ChatType;
import org.bukkit.entity.Player;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;

public class ChatProcessingCache {

private final Map<Player, IntermediateChat> intermediateChats = Collections.synchronizedMap(new HashMap<>());

private final Cache<Player, ProcessedChat> processedChats = CacheBuilder.newBuilder()
.expireAfterWrite(5, TimeUnit.MINUTES)
.build();

public IntermediateChat getIntermediateChat(final Player player) {
return intermediateChats.get(player);
}

public void setIntermediateChat(final Player player, final IntermediateChat intermediateChat) {
intermediateChats.put(player, intermediateChat);
}

public IntermediateChat clearIntermediateChat(final Player player) {
return intermediateChats.remove(player);
}
private final Map<Player, ProcessedChat> chats = Collections.synchronizedMap(new HashMap<>());

public ProcessedChat getProcessedChat(final Player player) {
return processedChats.getIfPresent(player);
return chats.get(player);
}

public void setProcessedChat(final Player player, final ProcessedChat chat) {
processedChats.put(player, chat);
}

public ProcessedChat clearProcessedChat(final Player player) {
final ProcessedChat chat = processedChats.getIfPresent(player);
processedChats.invalidate(player);
return chat;
chats.put(player, chat);
}

public Chat getIntermediateOrElseProcessedChat(final Player player) {
final IntermediateChat chat = getIntermediateChat(player);
if (chat != null) {
return chat;
}
return getProcessedChat(player);
public void clearProcessedChat(final Player player) {
chats.remove(player);
}

public abstract static class Chat {
Expand Down Expand Up @@ -89,58 +59,19 @@ public final String getLongType() {
}

public static class ProcessedChat extends Chat {
private final String message;
private final String format;
private final Trade charge;

public ProcessedChat(final IEssentials ess, final IntermediateChat sourceChat) {
super(sourceChat.getUser(), sourceChat.getType(), sourceChat.getOriginalMessage());
this.message = sourceChat.messageResult;
this.format = sourceChat.formatResult;
this.radius = sourceChat.radius;
this.charge = new Trade(getLongType(), ess);
}

public String getMessage() {
return message;
}

public String getFormat() {
return format;
}

public Trade getCharge() {
return charge;
}
}

public static class IntermediateChat extends Chat {
private String messageResult;
private String formatResult;

public IntermediateChat(final User user, final ChatType type, final String originalMessage) {
public ProcessedChat(final User user, final ChatType type, final String originalMessage) {
super(user, type, originalMessage);
this.charge = new Trade(getLongType(), user.getEssentials());
}

public void setRadius(final long radius) {
this.radius = radius;
}

public String getMessageResult() {
return messageResult;
}

public void setMessageResult(String messageResult) {
this.messageResult = messageResult;
}

public String getFormatResult() {
return formatResult;
}

public void setFormatResult(String formatResult) {
this.formatResult = formatResult;
public Trade getCharge() {
return charge;
}
}

}

This file was deleted.

2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ however, have some new requirements:
* **EssentialsX requires CraftBukkit, Spigot or Paper to run.** Other server software may work, but these are not tested
by the team and we may not be able to help with any issues that occur.
* **EssentialsX currently supports Minecraft versions 1.8.8, 1.9.4, 1.10.2, 1.11.2, 1.12.2, 1.13.2, 1.14.4, 1.15.2,
1.16.5, 1.17.1, 1.18.2, and 1.19.3.**
1.16.5, 1.17.1, 1.18.2, and 1.19.4.**
* **EssentialsX currently requires Java 8 or higher.** We recommend using the latest Java version supported by your
server software.
* **EssentialsX requires [Vault](http://dev.bukkit.org/bukkit-plugins/vault/) to enable using chat prefix/suffixes and
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ plugins {
val baseExtension = extensions.create<EssentialsBaseExtension>("essentials", project)

val checkstyleVersion = "8.36.2"
val spigotVersion = "1.19.3-R0.1-SNAPSHOT"
val spigotVersion = "1.19.4-R0.1-SNAPSHOT"
val junit5Version = "5.7.0"
val mockitoVersion = "3.2.0"

Expand Down