Fixed message formatting

This commit is contained in:
stijnb1234 2020-02-28 16:38:47 +01:00
parent f6bf85c654
commit f5f8ba67e9
4 changed files with 178 additions and 161 deletions

View file

@ -3,13 +3,14 @@ package nl.SBDeveloper.V10Lift.Managers;
import nl.SBDeveloper.V10Lift.Utils.XMaterial;
import org.bukkit.Material;
import java.util.ArrayList;
import java.util.HashSet;
public class AntiCopyBlockManager {
private ArrayList<XMaterial> antiCopy = new ArrayList<>();
private HashSet<XMaterial> antiCopy = new HashSet<>();
public AntiCopyBlockManager() {
//TODO Add more anti copy materials
//TODO Add to config
antiCopy.add(XMaterial.REDSTONE_TORCH);
antiCopy.add(XMaterial.REDSTONE_WALL_TORCH);
antiCopy.add(XMaterial.REPEATER);
@ -56,6 +57,26 @@ public class AntiCopyBlockManager {
antiCopy.add(XMaterial.DETECTOR_RAIL);
antiCopy.add(XMaterial.ACTIVATOR_RAIL);
antiCopy.add(XMaterial.LADDER);
/* Because of datatypes */
antiCopy.add(XMaterial.BEEHIVE);
antiCopy.add(XMaterial.BELL);
antiCopy.add(XMaterial.BREWING_STAND);
antiCopy.add(XMaterial.BUBBLE_COLUMN);
antiCopy.add(XMaterial.CAKE);
antiCopy.add(XMaterial.CAMPFIRE);
antiCopy.add(XMaterial.COCOA);
antiCopy.add(XMaterial.COMMAND_BLOCK);
antiCopy.add(XMaterial.CHAIN_COMMAND_BLOCK);
antiCopy.add(XMaterial.REPEATING_COMMAND_BLOCK);
antiCopy.add(XMaterial.DAYLIGHT_DETECTOR);
antiCopy.add(XMaterial.DISPENSER);
antiCopy.add(XMaterial.END_PORTAL_FRAME);
antiCopy.add(XMaterial.FARMLAND);
antiCopy.add(XMaterial.FIRE);
antiCopy.add(XMaterial.FURNACE);
antiCopy.add(XMaterial.HOPPER);
antiCopy.add(XMaterial.JUKEBOX);
}
public boolean isAntiCopy(Material mat) {

View file

@ -3,20 +3,14 @@ package nl.SBDeveloper.V10Lift.Managers;
import nl.SBDeveloper.V10Lift.Utils.XMaterial;
import org.bukkit.Material;
import java.util.ArrayList;
import java.util.HashSet;
public class ForbiddenBlockManager {
private ArrayList<XMaterial> forbidden = new ArrayList<>();
private HashSet<XMaterial> forbidden = new HashSet<>();
public ForbiddenBlockManager() {
//TODO Add more forbidden materials
/*forbidden.add(XMaterial.ACACIA_DOOR);
forbidden.add(XMaterial.BIRCH_DOOR);
forbidden.add(XMaterial.DARK_OAK_DOOR);
forbidden.add(XMaterial.IRON_DOOR);
forbidden.add(XMaterial.JUNGLE_DOOR);
forbidden.add(XMaterial.OAK_DOOR);
forbidden.add(XMaterial.SPRUCE_DOOR);*/
//TODO Add to config
forbidden.add(XMaterial.BLACK_BED);
forbidden.add(XMaterial.BLUE_BED);
forbidden.add(XMaterial.BROWN_BED);

View file

@ -32,14 +32,18 @@ public class ConfigUtil {
* @param path The path to look for
*/
public static void sendMessage(CommandSender p, @Nonnull String path) {
String fileMessage = V10LiftPlugin.getMessages().getFile().getString(path);
if (fileMessage == null) {
if (V10LiftPlugin.getMessages().getFile().get(path) == null) {
throw new NullPointerException("Message " + path + " not found in messages.yml!");
}
String[] messages = fileMessage.split("\n");
for (String message : messages) {
p.sendMessage(ChatColor.translateAlternateColorCodes('&', message));
if (V10LiftPlugin.getMessages().getFile().isList(path)) {
//Multi line message
for (String message : V10LiftPlugin.getMessages().getFile().getStringList(path)) {
p.sendMessage(ChatColor.translateAlternateColorCodes('&', message));
}
} else {
//Single line message
p.sendMessage(ChatColor.translateAlternateColorCodes('&', Objects.requireNonNull(V10LiftPlugin.getMessages().getFile().getString(path))));
}
}
@ -51,33 +55,43 @@ public class ConfigUtil {
* @param replacement The replacements -> key: %Name% = value: TheName
*/
public static void sendMessage(CommandSender p, @Nonnull String path, Map<String, String> replacement) {
String fileMessage = V10LiftPlugin.getMessages().getFile().getString(path);
if (fileMessage == null) {
if (V10LiftPlugin.getMessages().getFile().get(path) == null) {
throw new NullPointerException("Message " + path + " not found in messages.yml!");
}
if (V10LiftPlugin.getMessages().getFile().isList(path)) {
//Multi line message
for (String message : V10LiftPlugin.getMessages().getFile().getStringList(path)) {
p.sendMessage(formatMessage(message, replacement));
}
} else {
//Single line message
String message = V10LiftPlugin.getMessages().getFile().getString(path);
p.sendMessage(formatMessage(message, replacement));
}
}
@Nonnull
private static String formatMessage(String message, @Nonnull Map<String, String> replacement) {
Map<String, String> fixedMap = new HashMap<>();
for (Map.Entry<String, String> ent : replacement.entrySet()) {
fixedMap.put(ent.getKey().replaceAll("%", ""), ent.getValue());
}
String[] messages = fileMessage.split("\n");
for (String message : messages) {
Pattern pattern = Pattern.compile("%(.*?)%");
Matcher matcher = pattern.matcher(message);
StringBuilder builder = new StringBuilder();
int i = 0;
while (matcher.find()) {
String repl = fixedMap.get(matcher.group(1));
builder.append(message, i, matcher.start());
if (repl == null)
builder.append(matcher.group(0));
else
builder.append(repl);
i = matcher.end();
}
builder.append(message.substring(i));
p.sendMessage(ChatColor.translateAlternateColorCodes('&', builder.toString()));
Pattern pattern = Pattern.compile("%(.*?)%");
Matcher matcher = pattern.matcher(Objects.requireNonNull(message));
StringBuilder builder = new StringBuilder();
int i = 0;
while (matcher.find()) {
String repl = fixedMap.get(matcher.group(1));
builder.append(message, i, matcher.start());
if (repl == null)
builder.append(matcher.group(0));
else
builder.append(repl);
i = matcher.end();
}
builder.append(message.substring(i));
return ChatColor.translateAlternateColorCodes('&', builder.toString());
}
}