diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/BukkitPlatform.java b/Bukkit/src/main/java/com/plotsquared/bukkit/BukkitPlatform.java index 74a49f00b..ab810d9a6 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/BukkitPlatform.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/BukkitPlatform.java @@ -89,7 +89,6 @@ import com.plotsquared.core.plot.PlotAreaType; import com.plotsquared.core.plot.PlotId; import com.plotsquared.core.plot.comment.CommentManager; import com.plotsquared.core.plot.flag.implementations.ServerPlotFlag; -import com.plotsquared.core.plot.message.PlainChatManager; import com.plotsquared.core.plot.world.PlotAreaManager; import com.plotsquared.core.plot.world.SinglePlotArea; import com.plotsquared.core.plot.world.SinglePlotAreaManager; @@ -145,6 +144,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Queue; import java.util.Set; @@ -192,6 +192,7 @@ import static com.plotsquared.core.util.ReflectionUtils.getRefClass; @Inject @ImpromptuPipeline private UUIDPipeline impromptuPipeline; @Inject @BackgroundPipeline private UUIDPipeline backgroundPipeline; @Inject private PlatformWorldManager worldManager; + private Locale serverLocale; @Override public int[] getServerVersion() { if (this.version == null) { @@ -247,6 +248,8 @@ import static com.plotsquared.core.util.ReflectionUtils.getRefClass; new BukkitModule(this), new BackupModule()); this.injector.injectMembers(this); + this.serverLocale = Locale.forLanguageTag(Settings.Enabled_Components.DEFAULT_LOCALE); + if (PremiumVerification.isPremium() && Settings.Enabled_Components.UPDATE_NOTIFICATIONS) { injector.getInstance(UpdateUtility.class).updateChecker(); } @@ -1135,7 +1138,7 @@ import static com.plotsquared.core.util.ReflectionUtils.getRefClass; return BukkitUtil.BUKKIT_AUDIENCES.audience(Bukkit.getConsoleSender()); } - public String getPluginName() { + @Override public String getPluginName() { return this.pluginName; } @@ -1143,7 +1146,16 @@ import static com.plotsquared.core.util.ReflectionUtils.getRefClass; return this.singleWorldListener; } - public Injector getInjector() { + @Override public Injector getInjector() { return this.injector; } + + @Nonnull @Override public Locale getLocale() { + return this.serverLocale; + } + + @Override public void setLocale(@Nonnull final Locale locale) { + throw new UnsupportedOperationException("Cannot replace server locale"); + } + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitBlockUtil.java b/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitBlockUtil.java index a46688819..f73fad786 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitBlockUtil.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitBlockUtil.java @@ -27,24 +27,10 @@ package com.plotsquared.bukkit.util; import com.sk89q.worldedit.bukkit.BukkitAdapter; import com.sk89q.worldedit.world.block.BlockState; -import com.sk89q.worldedit.world.item.ItemType; import org.bukkit.Material; import org.bukkit.block.Block; -import java.util.function.Supplier; - public class BukkitBlockUtil { - public static Supplier supplyItem(Block block) { - return new Supplier() { - @Override public ItemType get() { - return BukkitAdapter.asItemType(block.getType()); - } - }; - } - - public static Supplier supplyItem(Material type) { - return () -> BukkitAdapter.asItemType(type); - } public static BlockState get(Block block) { return get(block.getType()); @@ -53,4 +39,5 @@ public class BukkitBlockUtil { public static BlockState get(Material material) { return BukkitAdapter.asBlockType(material).getDefaultState(); } + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitChatManager.java b/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitChatManager.java deleted file mode 100644 index c341a0f69..000000000 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitChatManager.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * _____ _ _ _____ _ - * | __ \| | | | / ____| | | - * | |__) | | ___ | |_| (___ __ _ _ _ __ _ _ __ ___ __| | - * | ___/| |/ _ \| __|\___ \ / _` | | | |/ _` | '__/ _ \/ _` | - * | | | | (_) | |_ ____) | (_| | |_| | (_| | | | __/ (_| | - * |_| |_|\___/ \__|_____/ \__, |\__,_|\__,_|_| \___|\__,_| - * | | - * |_| - * PlotSquared plot management system for Minecraft - * Copyright (C) 2020 IntellectualSites - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package com.plotsquared.bukkit.util; - -import com.plotsquared.bukkit.chat.FancyMessage; -import com.plotsquared.bukkit.player.BukkitPlayer; -import com.plotsquared.core.configuration.Captions; -import com.plotsquared.core.configuration.Settings; -import com.plotsquared.core.player.ConsolePlayer; -import com.plotsquared.core.player.PlotPlayer; -import com.plotsquared.core.plot.message.PlotMessage; -import org.bukkit.ChatColor; - -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -public class BukkitChatManager extends ChatManager { - - @Override public FancyMessage builder() { - return new FancyMessage(""); - } - - @Override public void color(PlotMessage message, String color) { - message.$(this).color(ChatColor.getByChar(Captions.color(color).substring(1))); - } - - @Override public void tooltip(PlotMessage message, PlotMessage... tooltips) { - List lines = - Arrays.stream(tooltips).map(tooltip -> tooltip.$(this)).collect(Collectors.toList()); - message.$(this).formattedTooltip(lines); - } - - @Override public void command(PlotMessage message, String command) { - message.$(this).command(command); - } - - @Override public void text(PlotMessage message, String text) { - message.$(this).then(ChatColor.stripColor(text)); - } - - @Override public void send(PlotMessage plotMessage, PlotPlayer player) { - if (player instanceof ConsolePlayer || !Settings.Chat.INTERACTIVE) { - player.sendMessage(plotMessage.$(this).toOldMessageFormat()); - } else { - plotMessage.$(this).send(((BukkitPlayer) player).player); - } - } - - @Override public void suggest(PlotMessage plotMessage, String command) { - plotMessage.$(this).suggest(command); - } - -} diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/task/BukkitPlotSquaredTask.java b/Bukkit/src/main/java/com/plotsquared/bukkit/util/task/BukkitPlotSquaredTask.java index d6b2cc7bf..3d09903b4 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/task/BukkitPlotSquaredTask.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/util/task/BukkitPlotSquaredTask.java @@ -26,7 +26,6 @@ package com.plotsquared.bukkit.util.task; import com.plotsquared.core.util.task.PlotSquaredTask; -import lombok.RequiredArgsConstructor; import org.bukkit.scheduler.BukkitRunnable; import javax.annotation.Nonnull; @@ -34,11 +33,14 @@ import javax.annotation.Nonnull; /** * Bukkit implementation of {@link PlotSquaredTask} */ -@RequiredArgsConstructor public final class BukkitPlotSquaredTask extends BukkitRunnable implements PlotSquaredTask { @Nonnull private final Runnable runnable; + public BukkitPlotSquaredTask(@Nonnull final Runnable runnable) { + this.runnable = runnable; + } + @Override public void runTask() { this.runnable.run(); } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/task/BukkitTaskManager.java b/Bukkit/src/main/java/com/plotsquared/bukkit/util/task/BukkitTaskManager.java index 643c4d8f3..3bd904d3d 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/task/BukkitTaskManager.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/util/task/BukkitTaskManager.java @@ -33,7 +33,6 @@ import com.plotsquared.core.util.task.PlotSquaredTask; import com.plotsquared.core.util.task.TaskManager; import com.plotsquared.core.util.task.TaskTime; import org.bukkit.Bukkit; -import org.jetbrains.annotations.NotNull; import javax.annotation.Nonnull; import java.util.concurrent.Callable; @@ -88,7 +87,7 @@ import java.util.concurrent.TimeUnit; return this.callMethodSync(function).get(timeout, TimeUnit.MILLISECONDS); } - @Override public Future callMethodSync(@NotNull final Callable method) { + @Override public Future callMethodSync(@Nonnull final Callable method) { return Bukkit.getScheduler().callSyncMethod(this.bukkitMain, method); } diff --git a/Core/src/main/java/com/plotsquared/core/PlotAPI.java b/Core/src/main/java/com/plotsquared/core/PlotAPI.java index 55d4f7af8..75be2a0e5 100644 --- a/Core/src/main/java/com/plotsquared/core/PlotAPI.java +++ b/Core/src/main/java/com/plotsquared/core/PlotAPI.java @@ -26,8 +26,9 @@ package com.plotsquared.core; import com.plotsquared.core.configuration.caption.Caption; -import com.plotsquared.core.configuration.Captions; +import com.plotsquared.core.configuration.caption.StaticCaption; import com.plotsquared.core.location.Location; +import com.plotsquared.core.player.ConsolePlayer; import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.plot.Plot; import com.plotsquared.core.plot.PlotArea; @@ -36,7 +37,9 @@ import com.plotsquared.core.util.ChunkManager; import com.plotsquared.core.util.EventDispatcher; import com.plotsquared.core.util.SchematicHandler; import com.plotsquared.core.util.query.PlotQuery; +import net.kyori.adventure.text.minimessage.Template; +import javax.annotation.Nonnull; import java.util.Collections; import java.util.Set; import java.util.UUID; @@ -142,10 +145,11 @@ import java.util.UUID; /** * Send a message to the console. The message supports color codes. * - * @param message the message - * @see MainUtil#sendConsoleMessage(Captions, String...) + * @param message the message + * @param replacements Variable replacements */ - public void sendConsoleMessage(String message) { + public void sendConsoleMessage(@Nonnull final String message, final Template... replacements) { + ConsolePlayer.getConsole().sendMessage(StaticCaption.of(message), replacements); // TODO: Re-implement // PlotSquared.log(message); } @@ -153,12 +157,11 @@ import java.util.UUID; /** * Sends a message to the console. * - * @param caption the message - * @see #sendConsoleMessage(String) - * @see Captions + * @param caption the message + * @param replacements Variable replacements */ - public void sendConsoleMessage(Caption caption) { - sendConsoleMessage(caption.getTranslated()); + public void sendConsoleMessage(@Nonnull final Caption caption, final Template... replacements) { + ConsolePlayer.getConsole().sendMessage(caption, replacements); } /** diff --git a/Core/src/main/java/com/plotsquared/core/PlotPlatform.java b/Core/src/main/java/com/plotsquared/core/PlotPlatform.java index c22b49f2e..f48ca17ef 100644 --- a/Core/src/main/java/com/plotsquared/core/PlotPlatform.java +++ b/Core/src/main/java/com/plotsquared/core/PlotPlatform.java @@ -28,6 +28,7 @@ package com.plotsquared.core; import com.google.inject.Injector; import com.google.inject.Key; import com.plotsquared.core.backup.BackupManager; +import com.plotsquared.core.configuration.caption.LocaleHolder; import com.plotsquared.core.generator.GeneratorWrapper; import com.plotsquared.core.generator.HybridUtils; import com.plotsquared.core.generator.IndependentPlotGenerator; @@ -55,7 +56,7 @@ import java.util.Map; * * @param

Player type */ -public interface PlotPlatform

{ +public interface PlotPlatform

extends LocaleHolder { /** * Logs a message to console. diff --git a/Core/src/main/java/com/plotsquared/core/PlotSquared.java b/Core/src/main/java/com/plotsquared/core/PlotSquared.java index 763a3f3cc..4f3924e50 100644 --- a/Core/src/main/java/com/plotsquared/core/PlotSquared.java +++ b/Core/src/main/java/com/plotsquared/core/PlotSquared.java @@ -63,6 +63,7 @@ import com.plotsquared.core.plot.world.SinglePlotAreaManager; import com.plotsquared.core.util.EventDispatcher; import com.plotsquared.core.util.FileUtils; import com.plotsquared.core.util.LegacyConverter; +import com.plotsquared.core.util.MainUtil; import com.plotsquared.core.util.MathMan; import com.plotsquared.core.util.ReflectionUtils; import com.plotsquared.core.util.query.PlotQuery; @@ -166,6 +167,8 @@ public class PlotSquared { this.platform = iPlotMain; Settings.PLATFORM = platform; + MainUtil.initCache(); // TODO: REMOVE!! + // // Register configuration serializable classes // diff --git a/Core/src/main/java/com/plotsquared/core/queue/BasicLocalBlockQueue.java b/Core/src/main/java/com/plotsquared/core/queue/BasicLocalBlockQueue.java index 3bcae99d9..03aa8b437 100644 --- a/Core/src/main/java/com/plotsquared/core/queue/BasicLocalBlockQueue.java +++ b/Core/src/main/java/com/plotsquared/core/queue/BasicLocalBlockQueue.java @@ -25,6 +25,7 @@ */ package com.plotsquared.core.queue; +import com.plotsquared.core.util.MainUtil; import com.plotsquared.core.util.MathMan; import com.plotsquared.core.util.PatternUtil; import com.plotsquared.core.util.task.TaskManager; diff --git a/Core/src/main/java/com/plotsquared/core/util/MainUtil.java b/Core/src/main/java/com/plotsquared/core/util/MainUtil.java new file mode 100644 index 000000000..c4631e760 --- /dev/null +++ b/Core/src/main/java/com/plotsquared/core/util/MainUtil.java @@ -0,0 +1,87 @@ +/* + * _____ _ _ _____ _ + * | __ \| | | | / ____| | | + * | |__) | | ___ | |_| (___ __ _ _ _ __ _ _ __ ___ __| | + * | ___/| |/ _ \| __|\___ \ / _` | | | |/ _` | '__/ _ \/ _` | + * | | | | (_) | |_ ____) | (_| | |_| | (_| | | | __/ (_| | + * |_| |_|\___/ \__|_____/ \__, |\__,_|\__,_|_| \___|\__,_| + * | | + * |_| + * PlotSquared plot management system for Minecraft + * Copyright (C) 2020 IntellectualSites + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package com.plotsquared.core.util; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * plot functions + * @deprecated Do not use + */ +@Deprecated public class MainUtil { + + private static final Logger logger = + LoggerFactory.getLogger("P2/" + MainUtil.class.getSimpleName()); + + /** + * Cache of mapping x,y,z coordinates to the chunk array
+ * - Used for efficient world generation
+ */ + public static short[][] x_loc; + public static short[][] y_loc; + public static short[][] z_loc; + public static short[][][] CACHE_I = null; + public static short[][][] CACHE_J = null; + + /** + * This cache is used for world generation and just saves a bit of calculation time when checking if something is in the plot area. + */ + public static void initCache() { + if (x_loc == null) { + x_loc = new short[16][4096]; + y_loc = new short[16][4096]; + z_loc = new short[16][4096]; + for (int i = 0; i < 16; i++) { + int i4 = i << 4; + for (int j = 0; j < 4096; j++) { + int y = i4 + (j >> 8); + int a = j - ((y & 0xF) << 8); + int z1 = a >> 4; + int x1 = a - (z1 << 4); + x_loc[i][j] = (short) x1; + y_loc[i][j] = (short) y; + z_loc[i][j] = (short) z1; + } + } + } + if (CACHE_I == null) { + CACHE_I = new short[256][16][16]; + CACHE_J = new short[256][16][16]; + for (int x = 0; x < 16; x++) { + for (int z = 0; z < 16; z++) { + for (int y = 0; y < 256; y++) { + short i = (short) (y >> 4); + short j = (short) ((y & 0xF) << 8 | z << 4 | x); + CACHE_I[y][x][z] = i; + CACHE_J[y][x][z] = j; + } + } + } + } + } + +} diff --git a/Core/src/main/java/com/plotsquared/core/util/StringMan.java b/Core/src/main/java/com/plotsquared/core/util/StringMan.java index ad1e2e14c..04b5ef4d9 100644 --- a/Core/src/main/java/com/plotsquared/core/util/StringMan.java +++ b/Core/src/main/java/com/plotsquared/core/util/StringMan.java @@ -25,6 +25,7 @@ */ package com.plotsquared.core.util; +import com.plotsquared.core.PlotSquared; import com.plotsquared.core.configuration.caption.Caption; import javax.annotation.Nonnull; @@ -78,7 +79,7 @@ public class StringMan { return (String) obj; } if (obj instanceof Caption) { - return ((Caption) obj).getTranslated(); + return ((Caption) obj).getComponent(PlotSquared.platform()); } if (obj.getClass().isArray()) { StringBuilder result = new StringBuilder(); diff --git a/Core/src/main/java/com/plotsquared/core/util/task/TaskManager.java b/Core/src/main/java/com/plotsquared/core/util/task/TaskManager.java index 81d4e9d11..a017d96ee 100644 --- a/Core/src/main/java/com/plotsquared/core/util/task/TaskManager.java +++ b/Core/src/main/java/com/plotsquared/core/util/task/TaskManager.java @@ -25,7 +25,6 @@ */ package com.plotsquared.core.util.task; -import javax.annotation.Nonnegative; import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.Collection; @@ -237,7 +236,7 @@ public abstract class TaskManager { * @param Return type * @return Future completing with the result */ - public abstract Future callMethodSync(@Nonnegative final Callable method); + public abstract Future callMethodSync(@Nonnull final Callable method); /** * Run a repeating synchronous task. If using a platform scheduler,