From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: AlphaKR93 Date: Thu, 6 Jul 2023 23:56:45 +0900 Subject: [PATCH] Reduce allocations diff --git a/src/main/java/ca/spottedleaf/starlight/common/light/StarLightEngine.java b/src/main/java/ca/spottedleaf/starlight/common/light/StarLightEngine.java index ad1eeebe6de219143492b94da309cb54ae9e0a5b..9c5cd176f9e7c525877c9fd219a4b8d3e2e6231d 100644 --- a/src/main/java/ca/spottedleaf/starlight/common/light/StarLightEngine.java +++ b/src/main/java/ca/spottedleaf/starlight/common/light/StarLightEngine.java @@ -1088,13 +1088,14 @@ public abstract class StarLightEngine { protected static final AxisDirection[][] OLD_CHECK_DIRECTIONS = new AxisDirection[1 << 6][]; protected static final int ALL_DIRECTIONS_BITSET = (1 << 6) - 1; + private static final AxisDirection[] EMPTY_DIRECTION = new AxisDirection[0]; // Plazma static { for (int i = 0; i < OLD_CHECK_DIRECTIONS.length; ++i) { final List directions = new ArrayList<>(); for (int bitset = i, len = Integer.bitCount(i), index = 0; index < len; ++index, bitset ^= IntegerUtil.getTrailingBit(bitset)) { directions.add(AXIS_DIRECTIONS[IntegerUtil.trailingZeros(bitset)]); } - OLD_CHECK_DIRECTIONS[i] = directions.toArray(new AxisDirection[0]); + OLD_CHECK_DIRECTIONS[i] = directions.toArray(EMPTY_DIRECTION); // Plazma } } diff --git a/src/main/java/com/destroystokyo/paper/antixray/ChunkPacketBlockControllerAntiXray.java b/src/main/java/com/destroystokyo/paper/antixray/ChunkPacketBlockControllerAntiXray.java index 42fdce97d99618a53f2e9c51804ff2205b574f69..20ad001e6418606d0d33f9a1148cbec86f0d4a3a 100644 --- a/src/main/java/com/destroystokyo/paper/antixray/ChunkPacketBlockControllerAntiXray.java +++ b/src/main/java/com/destroystokyo/paper/antixray/ChunkPacketBlockControllerAntiXray.java @@ -92,8 +92,8 @@ public final class ChunkPacketBlockControllerAntiXray extends ChunkPacketBlockCo Set presetBlockStateSet = new LinkedHashSet<>(); // Therefore addAll(Collection) is used, which guarantees this order in the doc presetBlockStateSet.addAll(presetBlockStateList); - presetBlockStates = presetBlockStateSet.isEmpty() ? new BlockState[]{Blocks.DIAMOND_ORE.defaultBlockState()} : presetBlockStateSet.toArray(new BlockState[0]); - presetBlockStatesFull = presetBlockStateSet.isEmpty() ? new BlockState[]{Blocks.DIAMOND_ORE.defaultBlockState()} : presetBlockStateList.toArray(new BlockState[0]); + presetBlockStates = presetBlockStateSet.isEmpty() ? new BlockState[]{Blocks.DIAMOND_ORE.defaultBlockState()} : presetBlockStateSet.toArray(org.plazmamc.plazma.EmptyConstants.BLOCK_STATE); // Plazma + presetBlockStatesFull = presetBlockStateSet.isEmpty() ? new BlockState[]{Blocks.DIAMOND_ORE.defaultBlockState()} : presetBlockStateList.toArray(org.plazmamc.plazma.EmptyConstants.BLOCK_STATE); // Plazma presetBlockStatesStone = null; presetBlockStatesDeepslate = null; presetBlockStatesNetherrack = null; diff --git a/src/main/java/com/destroystokyo/paper/util/maplist/EntityList.java b/src/main/java/com/destroystokyo/paper/util/maplist/EntityList.java index 0133ea6feb1ab88f021f66855669f58367e7420b..628e8e7c982d498b1a8297bebbe35ea1879fe5b8 100644 --- a/src/main/java/com/destroystokyo/paper/util/maplist/EntityList.java +++ b/src/main/java/com/destroystokyo/paper/util/maplist/EntityList.java @@ -17,9 +17,9 @@ public final class EntityList implements Iterable { this.entityToIndex.defaultReturnValue(Integer.MIN_VALUE); } - protected static final Entity[] EMPTY_LIST = new Entity[0]; + //protected static final Entity[] EMPTY_LIST = new Entity[0]; // Plazma - protected Entity[] entities = EMPTY_LIST; + protected Entity[] entities = org.plazmamc.plazma.EmptyConstants.ENTITY; // Plazma protected int count; public int size() { diff --git a/src/main/java/com/destroystokyo/paper/util/maplist/IBlockDataList.java b/src/main/java/com/destroystokyo/paper/util/maplist/IBlockDataList.java index 277cfd9d1e8fff5d9b5e534b75c3c5162d58b0b7..8656dfe589cdfc80207f42cef09684ba637f1700 100644 --- a/src/main/java/com/destroystokyo/paper/util/maplist/IBlockDataList.java +++ b/src/main/java/com/destroystokyo/paper/util/maplist/IBlockDataList.java @@ -20,9 +20,9 @@ public final class IBlockDataList { this.map.defaultReturnValue(Long.MAX_VALUE); } - private static final long[] EMPTY_LIST = new long[0]; + //private static final long[] EMPTY_LIST = new long[0]; // Plazma - private long[] byIndex = EMPTY_LIST; + private long[] byIndex = org.plazmamc.plazma.EmptyConstants.LONG; // Plazma private int size; public static int getLocationKey(final int x, final int y, final int z) { diff --git a/src/main/java/com/destroystokyo/paper/util/maplist/ReferenceList.java b/src/main/java/com/destroystokyo/paper/util/maplist/ReferenceList.java index 190c5f0b02a3d99054704ae1afbffb3498ddffe1..98a3a2ab266e88f2d21664f4d0f4b33a2247d6f7 100644 --- a/src/main/java/com/destroystokyo/paper/util/maplist/ReferenceList.java +++ b/src/main/java/com/destroystokyo/paper/util/maplist/ReferenceList.java @@ -15,9 +15,9 @@ public final class ReferenceList implements Iterable { this.referenceToIndex.defaultReturnValue(Integer.MIN_VALUE); } - protected static final Object[] EMPTY_LIST = new Object[0]; + //protected static final Object[] EMPTY_LIST = new Object[0]; // Plazma - protected Object[] references = EMPTY_LIST; + protected Object[] references = org.plazmamc.plazma.EmptyConstants.OBJECT; // Plazma protected int count; public int size() { diff --git a/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkTaskScheduler.java b/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkTaskScheduler.java index f975cb93716e137d973ff2f9011acdbef58859a2..7b0ac438d00de2c7a27ec8aefc1d280e9c2aef8b 100644 --- a/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkTaskScheduler.java +++ b/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkTaskScheduler.java @@ -849,9 +849,10 @@ public final class ChunkTaskScheduler { } } + private static final ChunkInfo[] EMPTY_CHUNK_INFO = new ChunkInfo[0]; // Plazma public static ChunkInfo[] getChunkInfos() { synchronized (WAITING_CHUNKS) { - return WAITING_CHUNKS.toArray(new ChunkInfo[0]); + return WAITING_CHUNKS.toArray(EMPTY_CHUNK_INFO); // Plazma } } diff --git a/src/main/java/io/papermc/paper/command/subcommands/VersionCommand.java b/src/main/java/io/papermc/paper/command/subcommands/VersionCommand.java index ae60bd96b5284d54676d8e7e4dd5d170b526ec1e..e955582b928085af032170467be015a3e857ec28 100644 --- a/src/main/java/io/papermc/paper/command/subcommands/VersionCommand.java +++ b/src/main/java/io/papermc/paper/command/subcommands/VersionCommand.java @@ -14,7 +14,7 @@ public final class VersionCommand implements PaperSubcommand { public boolean execute(final CommandSender sender, final String subCommand, final String[] args) { final @Nullable Command ver = MinecraftServer.getServer().server.getCommandMap().getCommand("version"); if (ver != null) { - ver.execute(sender, "paper", new String[0]); + ver.execute(sender, "paper", org.plazmamc.plazma.EmptyConstants.STRING); // Plazma } return true; } diff --git a/src/main/java/io/papermc/paper/plugin/manager/PaperPluginInstanceManager.java b/src/main/java/io/papermc/paper/plugin/manager/PaperPluginInstanceManager.java index 9c7552968b8c017c71a7a77557a66a03ed89f125..38d31c03db38235a47400c99dbc08b2d03f20532 100644 --- a/src/main/java/io/papermc/paper/plugin/manager/PaperPluginInstanceManager.java +++ b/src/main/java/io/papermc/paper/plugin/manager/PaperPluginInstanceManager.java @@ -67,8 +67,9 @@ class PaperPluginInstanceManager { return this.lookupNames.get(name.replace(' ', '_').toLowerCase(java.util.Locale.ENGLISH)); // Paper } + private static final Plugin[] EMPTY_PLUGIN = new Plugin[0]; // Plazma public @NotNull Plugin[] getPlugins() { - return this.plugins.toArray(new Plugin[0]); + return this.plugins.toArray(EMPTY_PLUGIN); // Plazma } public boolean isPluginEnabled(@NotNull String name) { @@ -125,6 +126,7 @@ class PaperPluginInstanceManager { } // The behavior of this is that all errors are logged instead of being thrown + private static final JavaPlugin[] EMPTY_JAVA_PLUGIN = new JavaPlugin[0]; // Plazma public @NotNull Plugin[] loadPlugins(@NotNull Path directory) { Preconditions.checkArgument(Files.isDirectory(directory), "Directory must be a directory"); // Avoid creating a directory if it doesn't exist @@ -137,7 +139,7 @@ class PaperPluginInstanceManager { this.server.getLogger().log(Level.SEVERE, "Unknown error occurred while loading plugins through PluginManager.", e); } - return runtimePluginEntrypointHandler.getPluginProviderStorage().getLoaded().toArray(new JavaPlugin[0]); + return runtimePluginEntrypointHandler.getPluginProviderStorage().getLoaded().toArray(EMPTY_JAVA_PLUGIN); // Plazma } // Plugins are disabled in order like this inorder to "rougly" prevent diff --git a/src/main/java/io/papermc/paper/world/ChunkEntitySlices.java b/src/main/java/io/papermc/paper/world/ChunkEntitySlices.java index 7e8dc9e8f381abfdcce2746edc93122d623622d1..9c2ccf975c476db4bf71298d08ffce2c323d43e0 100644 --- a/src/main/java/io/papermc/paper/world/ChunkEntitySlices.java +++ b/src/main/java/io/papermc/paper/world/ChunkEntitySlices.java @@ -303,7 +303,7 @@ public final class ChunkEntitySlices { protected static final class BasicEntityList { - protected static final Entity[] EMPTY = new Entity[0]; + protected static final Entity[] EMPTY = org.plazmamc.plazma.EmptyConstants.ENTITY; // Plazma protected static final int DEFAULT_CAPACITY = 4; protected E[] storage; diff --git a/src/main/java/net/minecraft/CrashReport.java b/src/main/java/net/minecraft/CrashReport.java index c468733f44ccb3ff4ba3c20921a4ec52658f0689..52dd6bf580f22081a530aee1277276e64270c91b 100644 --- a/src/main/java/net/minecraft/CrashReport.java +++ b/src/main/java/net/minecraft/CrashReport.java @@ -28,7 +28,7 @@ public class CrashReport { private final List details = Lists.newArrayList(); private File saveFile; private boolean trackingStackTrace = true; - private StackTraceElement[] uncategorizedStackTrace = new StackTraceElement[0]; + private StackTraceElement[] uncategorizedStackTrace = org.plazmamc.plazma.EmptyConstants.STACK_TRACE_ELEMENT; // Plazma private final SystemReport systemReport = new SystemReport(); public CrashReport(String message, Throwable cause) { diff --git a/src/main/java/net/minecraft/CrashReportCategory.java b/src/main/java/net/minecraft/CrashReportCategory.java index b54ddd0ba0b001fbcb1838a838ca4890df936f1b..a49ce64ea944f5cab83ba1bee5ab4c749950af9e 100644 --- a/src/main/java/net/minecraft/CrashReportCategory.java +++ b/src/main/java/net/minecraft/CrashReportCategory.java @@ -12,7 +12,7 @@ import net.minecraft.world.level.block.state.BlockState; public class CrashReportCategory { private final String title; private final List entries = Lists.newArrayList(); - private StackTraceElement[] stackTrace = new StackTraceElement[0]; + private StackTraceElement[] stackTrace = org.plazmamc.plazma.EmptyConstants.STACK_TRACE_ELEMENT; // Plazma public CrashReportCategory(String title) { this.title = title; diff --git a/src/main/java/net/minecraft/Util.java b/src/main/java/net/minecraft/Util.java index c60c73d9f998260f3abe6fe445255c6e7c38b0c3..cf0d0b75b3e5833406d84aaa7b432d80314970d4 100644 --- a/src/main/java/net/minecraft/Util.java +++ b/src/main/java/net/minecraft/Util.java @@ -401,7 +401,7 @@ public class Util { } else if (futures.size() == 1) { return futures.get(0).thenApply(List::of); } else { - CompletableFuture completableFuture = CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])); + CompletableFuture completableFuture = CompletableFuture.allOf(futures.toArray(org.plazmamc.plazma.EmptyConstants.COMPLETABLE_FUTURES)); // Plazma return completableFuture.thenApply((void_) -> { return futures.stream().map(CompletableFuture::join).toList(); }); diff --git a/src/main/java/net/minecraft/advancements/AdvancementRewards.java b/src/main/java/net/minecraft/advancements/AdvancementRewards.java index 1cf85f7920023331c325822046edb33f310acd20..1f937dab74d368a0f75687ba696c9a9424163051 100644 --- a/src/main/java/net/minecraft/advancements/AdvancementRewards.java +++ b/src/main/java/net/minecraft/advancements/AdvancementRewards.java @@ -24,7 +24,8 @@ import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; public class AdvancementRewards { - public static final AdvancementRewards EMPTY = new AdvancementRewards(0, new ResourceLocation[0], new ResourceLocation[0], CommandFunction.CacheableFunction.NONE); + private static final ResourceLocation[] EMPTY_LOCATION = new ResourceLocation[0]; // Plazma + public static final AdvancementRewards EMPTY = new AdvancementRewards(0, EMPTY_LOCATION, EMPTY_LOCATION, CommandFunction.CacheableFunction.NONE); // Plazma private final int experience; private final ResourceLocation[] loot; private final ResourceLocation[] recipes; diff --git a/src/main/java/net/minecraft/advancements/RequirementsStrategy.java b/src/main/java/net/minecraft/advancements/RequirementsStrategy.java index 051c1fb81d79c40be683edb86579bb975643bcb3..f22dec61e0cc1db80ad435d168b8e877bba3695d 100644 --- a/src/main/java/net/minecraft/advancements/RequirementsStrategy.java +++ b/src/main/java/net/minecraft/advancements/RequirementsStrategy.java @@ -14,7 +14,7 @@ public interface RequirementsStrategy { return strings; }; RequirementsStrategy OR = (criteriaNames) -> { - return new String[][]{criteriaNames.toArray(new String[0])}; + return new String[][]{criteriaNames.toArray(org.plazmamc.plazma.EmptyConstants.STRING)}; // Plazma }; String[][] createRequirements(Collection criteriaNames); diff --git a/src/main/java/net/minecraft/advancements/critereon/ContextAwarePredicate.java b/src/main/java/net/minecraft/advancements/critereon/ContextAwarePredicate.java index bb1f97878f1fbf192207576cc515981f696294c3..2a89d13bd21bc549e498ea718cc8c88ab7460885 100644 --- a/src/main/java/net/minecraft/advancements/critereon/ContextAwarePredicate.java +++ b/src/main/java/net/minecraft/advancements/critereon/ContextAwarePredicate.java @@ -11,7 +11,7 @@ import net.minecraft.world.level.storage.loot.predicates.LootItemCondition; import net.minecraft.world.level.storage.loot.predicates.LootItemConditions; public class ContextAwarePredicate { - public static final ContextAwarePredicate ANY = new ContextAwarePredicate(new LootItemCondition[0]); + public static final ContextAwarePredicate ANY = new ContextAwarePredicate(org.plazmamc.plazma.EmptyConstants.LOOT_ITEM_CONDITIONS); // Plazma private final LootItemCondition[] conditions; private final Predicate compositePredicates; diff --git a/src/main/java/net/minecraft/advancements/critereon/EntityPredicate.java b/src/main/java/net/minecraft/advancements/critereon/EntityPredicate.java index 9304f85ac41a89b39db59ef4b6e363d0f46cdbec..a2bf13d895456566bc0938b6931fb61a9606f129 100644 --- a/src/main/java/net/minecraft/advancements/critereon/EntityPredicate.java +++ b/src/main/java/net/minecraft/advancements/critereon/EntityPredicate.java @@ -88,7 +88,7 @@ public class EntityPredicate { return contextAwarePredicates; } else { - return new ContextAwarePredicate[0]; + return org.plazmamc.plazma.EmptyConstants.CONTEXT_AWARE_PREDICATES; // Plazma } } diff --git a/src/main/java/net/minecraft/advancements/critereon/ItemPredicate.java b/src/main/java/net/minecraft/advancements/critereon/ItemPredicate.java index e6960637aafdcd8ad9fa20991d57f9c9c4998036..79145d941c2750b799c3bf5eff3010a426a58153 100644 --- a/src/main/java/net/minecraft/advancements/critereon/ItemPredicate.java +++ b/src/main/java/net/minecraft/advancements/critereon/ItemPredicate.java @@ -213,7 +213,7 @@ public class ItemPredicate { return itemPredicates; } else { - return new ItemPredicate[0]; + return org.plazmamc.plazma.EmptyConstants.ITEM_PREDICATES; // Plazma } } diff --git a/src/main/java/net/minecraft/advancements/critereon/KilledByCrossbowTrigger.java b/src/main/java/net/minecraft/advancements/critereon/KilledByCrossbowTrigger.java index 818fd4b06c804e9640e3efb63f1e1b34dd73c636..318a7a0a161c0f73c4565e593ee1d66fbadab041 100644 --- a/src/main/java/net/minecraft/advancements/critereon/KilledByCrossbowTrigger.java +++ b/src/main/java/net/minecraft/advancements/critereon/KilledByCrossbowTrigger.java @@ -64,7 +64,7 @@ public class KilledByCrossbowTrigger extends SimpleCriterionTrigger { } public void clear() { - this.data = new byte[0]; + this.data = org.plazmamc.plazma.EmptyConstants.BYTE; // Plazma } @Override diff --git a/src/main/java/net/minecraft/nbt/CompoundTag.java b/src/main/java/net/minecraft/nbt/CompoundTag.java index 7e94ebe06fc62293e665d6db19e42d947e7eb30f..bfe9fcc1f1ccc663672f6220aeb2d9244164cd8f 100644 --- a/src/main/java/net/minecraft/nbt/CompoundTag.java +++ b/src/main/java/net/minecraft/nbt/CompoundTag.java @@ -379,7 +379,7 @@ public class CompoundTag implements Tag { throw new ReportedException(this.createReport(key, ByteArrayTag.TYPE, var3)); } - return new byte[0]; + return org.plazmamc.plazma.EmptyConstants.BYTE; // Plazma } public int[] getIntArray(String key) { @@ -391,7 +391,7 @@ public class CompoundTag implements Tag { throw new ReportedException(this.createReport(key, IntArrayTag.TYPE, var3)); } - return new int[0]; + return org.plazmamc.plazma.EmptyConstants.INT; // Plazma } public long[] getLongArray(String key) { @@ -403,7 +403,7 @@ public class CompoundTag implements Tag { throw new ReportedException(this.createReport(key, LongArrayTag.TYPE, var3)); } - return new long[0]; + return org.plazmamc.plazma.EmptyConstants.LONG; // Plazma } public CompoundTag getCompound(String key) { diff --git a/src/main/java/net/minecraft/nbt/IntArrayTag.java b/src/main/java/net/minecraft/nbt/IntArrayTag.java index 25ad2c6ff968f4a6b16b4dea3f67341a4261f2a4..435bdec39b9f744eb8a7ad327c7facf40c08d612 100644 --- a/src/main/java/net/minecraft/nbt/IntArrayTag.java +++ b/src/main/java/net/minecraft/nbt/IntArrayTag.java @@ -189,7 +189,7 @@ public class IntArrayTag extends CollectionTag { } public void clear() { - this.data = new int[0]; + this.data = org.plazmamc.plazma.EmptyConstants.INT; // Plazma } @Override diff --git a/src/main/java/net/minecraft/nbt/ListTag.java b/src/main/java/net/minecraft/nbt/ListTag.java index b74b77ec2fd45c7a44e4f2696c4f57075c3d4080..f55dd4d1e094b0ccda307d83e9c3b5f180236547 100644 --- a/src/main/java/net/minecraft/nbt/ListTag.java +++ b/src/main/java/net/minecraft/nbt/ListTag.java @@ -230,7 +230,7 @@ public class ListTag extends CollectionTag { } } - return new int[0]; + return org.plazmamc.plazma.EmptyConstants.INT; // Plazma } public long[] getLongArray(int index) { @@ -241,7 +241,7 @@ public class ListTag extends CollectionTag { } } - return new long[0]; + return org.plazmamc.plazma.EmptyConstants.LONG; // Plazma } public double getDouble(int index) { diff --git a/src/main/java/net/minecraft/nbt/LongArrayTag.java b/src/main/java/net/minecraft/nbt/LongArrayTag.java index bdc0adc652228328ebe8fe2455c73c257a89d3c5..22f5b4ddde241436962aef4abe013541c7184493 100644 --- a/src/main/java/net/minecraft/nbt/LongArrayTag.java +++ b/src/main/java/net/minecraft/nbt/LongArrayTag.java @@ -193,7 +193,7 @@ public class LongArrayTag extends CollectionTag { @Override public void clear() { - this.data = new long[0]; + this.data = org.plazmamc.plazma.EmptyConstants.LONG; // Plazma } @Override diff --git a/src/main/java/net/minecraft/network/CipherBase.java b/src/main/java/net/minecraft/network/CipherBase.java index a2920b8a9eff77d9c5d1d7f70ad3abdacba8f0fa..50d620fc893ca010b7ecb43b7a4617d67510d03f 100644 --- a/src/main/java/net/minecraft/network/CipherBase.java +++ b/src/main/java/net/minecraft/network/CipherBase.java @@ -7,8 +7,8 @@ import javax.crypto.ShortBufferException; public class CipherBase { private final Cipher cipher; - private byte[] heapIn = new byte[0]; - private byte[] heapOut = new byte[0]; + private byte[] heapIn = org.plazmamc.plazma.EmptyConstants.BYTE; // Plazma + private byte[] heapOut = org.plazmamc.plazma.EmptyConstants.BYTE; // Plazma protected CipherBase(Cipher cipher) { this.cipher = cipher; diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java index 13144ea01bc27db95a13b267d39529b012a4c9c4..9a6d6f947f33481e8a7aa09469955218d31e194a 100644 --- a/src/main/java/net/minecraft/network/Connection.java +++ b/src/main/java/net/minecraft/network/Connection.java @@ -325,7 +325,7 @@ public class Connection extends SimpleChannelInboundHandler> { } public void setListener(PacketListener listener) { - Validate.notNull(listener, "packetListener", new Object[0]); + Validate.notNull(listener, "packetListener", org.plazmamc.plazma.EmptyConstants.OBJECT); // Plazma this.packetListener = listener; } // Paper start diff --git a/src/main/java/net/minecraft/network/chat/contents/TranslatableContents.java b/src/main/java/net/minecraft/network/chat/contents/TranslatableContents.java index 8a68baf6bd46b59cf57c94ffe5651d47a7cae99c..6a979d584b1f27d6838332318488814d3db89a47 100644 --- a/src/main/java/net/minecraft/network/chat/contents/TranslatableContents.java +++ b/src/main/java/net/minecraft/network/chat/contents/TranslatableContents.java @@ -21,7 +21,7 @@ import net.minecraft.network.chat.Style; import net.minecraft.world.entity.Entity; public class TranslatableContents implements ComponentContents { - public static final Object[] NO_ARGS = new Object[0]; + public static final Object[] NO_ARGS = org.plazmamc.plazma.EmptyConstants.OBJECT; // Plazma private static final FormattedText TEXT_PERCENT = FormattedText.of("%"); private static final FormattedText TEXT_NULL = FormattedText.of("null"); private final String key; diff --git a/src/main/java/net/minecraft/network/protocol/game/ClientboundSectionBlocksUpdatePacket.java b/src/main/java/net/minecraft/network/protocol/game/ClientboundSectionBlocksUpdatePacket.java index e3f355c85eb7cc8c1683e3009502c10a5ed32daa..50bc08280120ceaa321e30482358b3f4dbe8b3bd 100644 --- a/src/main/java/net/minecraft/network/protocol/game/ClientboundSectionBlocksUpdatePacket.java +++ b/src/main/java/net/minecraft/network/protocol/game/ClientboundSectionBlocksUpdatePacket.java @@ -63,7 +63,7 @@ public class ClientboundSectionBlocksUpdatePacket implements Packet blockChanges) { this.sectionPos = sectionPos; this.positions = blockChanges.keySet().toShortArray(); - this.states = blockChanges.values().toArray(new BlockState[0]); + this.states = blockChanges.values().toArray(org.plazmamc.plazma.EmptyConstants.BLOCK_STATE); // Plazma } // Paper end diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java index 93ff3ef401d4212cede5290990528988c7ca3a0c..6e13d11d685930acad1c3a80571b73258a6f6f9d 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1369,10 +1369,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop loadStatusIcon() { Optional optional = Optional.of(this.getFile("server-icon.png").toPath()).filter((path) -> { - return Files.isRegularFile(path, new LinkOption[0]); + return Files.isRegularFile(path, org.plazmamc.plazma.EmptyConstants.LINK_OPTION); // Plazma }).or(() -> { return this.storageSource.getIconFile().filter((path) -> { - return Files.isRegularFile(path, new LinkOption[0]); + return Files.isRegularFile(path, org.plazmamc.plazma.EmptyConstants.LINK_OPTION); // Plazma }); }); diff --git a/src/main/java/net/minecraft/server/PlayerAdvancements.java b/src/main/java/net/minecraft/server/PlayerAdvancements.java index 69d349613f01ab0ac1890734657da52984704f29..1c5ba90fcd291b68fbdf9cecc5c3b1f39e266305 100644 --- a/src/main/java/net/minecraft/server/PlayerAdvancements.java +++ b/src/main/java/net/minecraft/server/PlayerAdvancements.java @@ -124,7 +124,7 @@ public class PlayerAdvancements { } private void load(ServerAdvancementManager advancementLoader) { - if (Files.isRegularFile(this.playerSavePath, new LinkOption[0])) { + if (Files.isRegularFile(this.playerSavePath, org.plazmamc.plazma.EmptyConstants.LINK_OPTION)) { // Plazma try { JsonReader jsonreader = new JsonReader(Files.newBufferedReader(this.playerSavePath, StandardCharsets.UTF_8)); diff --git a/src/main/java/net/minecraft/server/RunningOnDifferentThreadException.java b/src/main/java/net/minecraft/server/RunningOnDifferentThreadException.java index 0f52e8a61ca7e57e9f52473dceb9cc3464c0c86d..9ee75ed89b2034d1654680f32ec05948c0bfac41 100644 --- a/src/main/java/net/minecraft/server/RunningOnDifferentThreadException.java +++ b/src/main/java/net/minecraft/server/RunningOnDifferentThreadException.java @@ -4,12 +4,12 @@ public final class RunningOnDifferentThreadException extends RuntimeException { public static final RunningOnDifferentThreadException RUNNING_ON_DIFFERENT_THREAD = new RunningOnDifferentThreadException(); private RunningOnDifferentThreadException() { - this.setStackTrace(new StackTraceElement[0]); + this.setStackTrace(org.plazmamc.plazma.EmptyConstants.STACK_TRACE_ELEMENT); // Plazma } @Override public synchronized Throwable fillInStackTrace() { - this.setStackTrace(new StackTraceElement[0]); + this.setStackTrace(org.plazmamc.plazma.EmptyConstants.STACK_TRACE_ELEMENT); // Plazma return this; } } diff --git a/src/main/java/net/minecraft/server/ServerFunctionLibrary.java b/src/main/java/net/minecraft/server/ServerFunctionLibrary.java index 975422a57b83a31e63a600bb4ff9c4e2baaf6da7..b80dff95660314e4dd27e2ada94aa31598883b4e 100644 --- a/src/main/java/net/minecraft/server/ServerFunctionLibrary.java +++ b/src/main/java/net/minecraft/server/ServerFunctionLibrary.java @@ -81,7 +81,7 @@ public class ServerFunctionLibrary implements PreparableReloadListener { }, prepareExecutor)); } - CompletableFuture[] completableFutures = map.values().toArray(new CompletableFuture[0]); + CompletableFuture[] completableFutures = map.values().toArray(org.plazmamc.plazma.EmptyConstants.COMPLETABLE_FUTURES); // Plazma return CompletableFuture.allOf(completableFutures).handle((unused, ex) -> { return map; }); diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java index 3a7c694ff0e248df3f4d168a5e2e883c0e3cb167..e139d15eda25c47292da549e2d4603a5056788bd 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -1454,6 +1454,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider private final int range; SectionPos lastSectionPos; public final Set seenBy = new ReferenceOpenHashSet<>(); // Paper - optimise map impl + private static final ServerPlayerConnection[] EMPTY_CONNECTION = new ServerPlayerConnection[0]; // Plazma public TrackedEntity(Entity entity, int i, int j, boolean flag) { this.serverEntity = new ServerEntity(ChunkMap.this.level, entity, j, flag, this::broadcast, this.seenBy); // CraftBukkit @@ -1490,7 +1491,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider // stuff could have been removed, so we need to check the trackedPlayers set // for players that were removed - for (ServerPlayerConnection conn : this.seenBy.toArray(new ServerPlayerConnection[0])) { // avoid CME + for (ServerPlayerConnection conn : this.seenBy.toArray(EMPTY_CONNECTION)) { // avoid CME // Plazma if (newTrackerCandidates == null || !newTrackerCandidates.contains(conn.getPlayer())) { this.updatePlayer(conn.getPlayer()); } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java index e009dba395779e2c89a36fe4524e5d40474a29e6..c4cafcc1fb0f3b6bc17b7907ee7c6c034d4bf005 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1392,7 +1392,7 @@ public class ServerLevel extends Level implements WorldGenLevel { public static List getCurrentlyTickingEntities() { Entity ticking = currentlyTickingEntity.get(); - List ret = java.util.Arrays.asList(ticking == null ? new Entity[0] : new Entity[] { ticking }); + List ret = java.util.Arrays.asList(ticking == null ? org.plazmamc.plazma.EmptyConstants.ENTITY : new Entity[] { ticking }); // Plazma return ret; } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java index 93666cc703b349cbd7752c8c59c980da11e5d34c..2314b39ad62c6d8332ddec6c902dba5aacebfa76 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -436,7 +436,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic if (this.keepAlivePending) { if (!this.processedDisconnect && elapsedTime >= KEEPALIVE_LIMIT) { // check keepalive limit, don't fire if already disconnected ServerGamePacketListenerImpl.LOGGER.warn("{} was kicked due to keepalive timeout!", this.player.getScoreboardName()); // more info - this.disconnect(Component.translatable("disconnect.timeout", new Object[0]), org.bukkit.event.player.PlayerKickEvent.Cause.TIMEOUT); // Paper - kick event cause + this.disconnect(Component.translatable("disconnect.timeout", org.plazmamc.plazma.EmptyConstants.OBJECT), org.bukkit.event.player.PlayerKickEvent.Cause.TIMEOUT); // Paper - kick event cause // Plazma } } else { if (elapsedTime >= 15000L) { // 15 seconds @@ -924,13 +924,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic // PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); // Paper - run this async // CraftBukkit start if (this.chatSpamTickCount.addAndGet(io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.tabSpamIncrement) > io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.tabSpamLimit && !this.server.getPlayerList().isOp(this.player.getGameProfile())) { // Paper start - split and make configurable - server.scheduleOnMain(() -> this.disconnect(Component.translatable("disconnect.spam", new Object[0]), org.bukkit.event.player.PlayerKickEvent.Cause.SPAM)); // Paper - kick event cause + server.scheduleOnMain(() -> this.disconnect(Component.translatable("disconnect.spam", org.plazmamc.plazma.EmptyConstants.OBJECT), org.bukkit.event.player.PlayerKickEvent.Cause.SPAM)); // Paper - kick event cause // Plazma return; } // Paper start String str = packet.getCommand(); int index = -1; if (str.length() > 64 && ((index = str.indexOf(' ')) == -1 || index >= 64)) { - server.scheduleOnMain(() -> this.disconnect(Component.translatable("disconnect.spam", new Object[0]), org.bukkit.event.player.PlayerKickEvent.Cause.SPAM)); // Paper + server.scheduleOnMain(() -> this.disconnect(Component.translatable("disconnect.spam", org.plazmamc.plazma.EmptyConstants.OBJECT), org.bukkit.event.player.PlayerKickEvent.Cause.SPAM)); // Paper // Plazma return; } // Paper end @@ -3434,7 +3434,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic // Paper start if (!org.bukkit.Bukkit.isPrimaryThread()) { if (this.recipeSpamPackets.addAndGet(io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.recipeSpamIncrement) > io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.recipeSpamLimit) { - this.server.scheduleOnMain(() -> this.disconnect(net.minecraft.network.chat.Component.translatable("disconnect.spam", new Object[0]), org.bukkit.event.player.PlayerKickEvent.Cause.SPAM)); // Paper - kick event cause + this.server.scheduleOnMain(() -> this.disconnect(net.minecraft.network.chat.Component.translatable("disconnect.spam", org.plazmamc.plazma.EmptyConstants.OBJECT), org.bukkit.event.player.PlayerKickEvent.Cause.SPAM)); // Paper - kick event cause // Plazma return; } } diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java index 0f1ebdc20460da22c1ff2fee2ff6428654139969..85b8007f0da3b7d77d1caff64000e4fc174f73bf 100644 --- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java @@ -239,8 +239,8 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, @Override public void handleHello(ServerboundHelloPacket packet) { - Validate.validState(this.state == ServerLoginPacketListenerImpl.State.HELLO, "Unexpected hello packet", new Object[0]); - if (!org.plazmamc.plazma.configurations.GlobalConfiguration.get().player.allowAnyUsername) Validate.validState(ServerLoginPacketListenerImpl.isValidUsername(packet.name()), "Invalid characters in username", new Object[0]); // Plazma + Validate.validState(this.state == ServerLoginPacketListenerImpl.State.HELLO, "Unexpected hello packet", org.plazmamc.plazma.EmptyConstants.OBJECT); // Plazma + if (!org.plazmamc.plazma.configurations.GlobalConfiguration.get().player.allowAnyUsername) Validate.validState(ServerLoginPacketListenerImpl.isValidUsername(packet.name()), "Invalid characters in username", org.plazmamc.plazma.EmptyConstants.OBJECT); // Plazma // Plazma - again // Paper start - validate usernames if (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.isProxyOnlineMode() && io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.performUsernameValidation) { if (!this.iKnowThisMayNotBeTheBestIdeaButPleaseDisableUsernameValidation && !validateUsername(packet.name())) { @@ -299,7 +299,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, @Override public void handleKey(ServerboundKeyPacket packet) { - Validate.validState(this.state == ServerLoginPacketListenerImpl.State.KEY, "Unexpected key packet", new Object[0]); + Validate.validState(this.state == ServerLoginPacketListenerImpl.State.KEY, "Unexpected key packet", org.plazmamc.plazma.EmptyConstants.OBJECT); // Plazma final String s; diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java index b711efca8a834adaf0db902fab34c3c80c9cbad6..4c793f4f7b79e35c4c42d330bb63d29c0ef32124 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -710,7 +710,7 @@ public abstract class PlayerList { while (iterator.hasNext()) { entityplayer = (ServerPlayer) iterator.next(); this.save(entityplayer); // CraftBukkit - Force the player's inventory to be saved - entityplayer.connection.disconnect(Component.translatable("multiplayer.disconnect.duplicate_login", new Object[0]), org.bukkit.event.player.PlayerKickEvent.Cause.DUPLICATE_LOGIN); // Paper - kick event cause + entityplayer.connection.disconnect(Component.translatable("multiplayer.disconnect.duplicate_login", org.plazmamc.plazma.EmptyConstants.OBJECT), org.bukkit.event.player.PlayerKickEvent.Cause.DUPLICATE_LOGIN); // Paper - kick event cause // Plazma } // Instead of kicking then returning, we need to store the kick reason diff --git a/src/main/java/net/minecraft/server/players/StoredUserList.java b/src/main/java/net/minecraft/server/players/StoredUserList.java index 9e8112fbc40a1d89c0f73ea4452e0fa1bb459bf4..5a9fc24037c92fb17ba4baec79e4f344e16a4128 100644 --- a/src/main/java/net/minecraft/server/players/StoredUserList.java +++ b/src/main/java/net/minecraft/server/players/StoredUserList.java @@ -96,7 +96,7 @@ public abstract class StoredUserList> { } public String[] getUserList() { - return (String[]) this.map.keySet().toArray(new String[0]); + return (String[]) this.map.keySet().toArray(org.plazmamc.plazma.EmptyConstants.STRING); // Plazma } public boolean isEmpty() { diff --git a/src/main/java/net/minecraft/util/MemoryReserve.java b/src/main/java/net/minecraft/util/MemoryReserve.java index 0ee04fe6ff6a4d09754f326526ae04fe7226bab2..79046f2d1803eb346d1f184004e6cb09d2a91a36 100644 --- a/src/main/java/net/minecraft/util/MemoryReserve.java +++ b/src/main/java/net/minecraft/util/MemoryReserve.java @@ -11,6 +11,6 @@ public class MemoryReserve { } public static void release() { - reserve = new byte[0]; + reserve = org.plazmamc.plazma.EmptyConstants.BYTE; // Plazma } } diff --git a/src/main/java/net/minecraft/util/ZeroBitStorage.java b/src/main/java/net/minecraft/util/ZeroBitStorage.java index 311625277a26c9c187025a1036978229241b965f..04a1b316cd6d612a0948d845d7851d3622e4c2af 100644 --- a/src/main/java/net/minecraft/util/ZeroBitStorage.java +++ b/src/main/java/net/minecraft/util/ZeroBitStorage.java @@ -5,7 +5,7 @@ import java.util.function.IntConsumer; import org.apache.commons.lang3.Validate; public class ZeroBitStorage implements BitStorage { - public static final long[] RAW = new long[0]; + //public static final long[] RAW = new long[0]; // Plazma private final int size; public ZeroBitStorage(int size) { @@ -33,7 +33,7 @@ public class ZeroBitStorage implements BitStorage { @Override public long[] getRaw() { - return RAW; + return org.plazmamc.plazma.EmptyConstants.LONG; // Plazma } @Override diff --git a/src/main/java/net/minecraft/util/monitoring/jmx/MinecraftServerStatistics.java b/src/main/java/net/minecraft/util/monitoring/jmx/MinecraftServerStatistics.java index 8d227c8a1e7e8fa21a8d673e8c9acc38104c6fb0..71dc96d2dacde1dc958f8547fc44df8c1a91853c 100644 --- a/src/main/java/net/minecraft/util/monitoring/jmx/MinecraftServerStatistics.java +++ b/src/main/java/net/minecraft/util/monitoring/jmx/MinecraftServerStatistics.java @@ -35,12 +35,13 @@ public final class MinecraftServerStatistics implements DynamicMBean { return entry.name; }, Function.identity())); + private static final MBeanNotificationInfo[] EMPTY_INFO = new MBeanNotificationInfo[0]; // Plazma private MinecraftServerStatistics(MinecraftServer server) { this.server = server; MBeanAttributeInfo[] mBeanAttributeInfos = this.attributeDescriptionByName.values().stream().map(MinecraftServerStatistics.AttributeDescription::asMBeanAttributeInfo).toArray((i) -> { return new MBeanAttributeInfo[i]; }); - this.mBeanInfo = new MBeanInfo(MinecraftServerStatistics.class.getSimpleName(), "metrics for dedicated server", mBeanAttributeInfos, (MBeanConstructorInfo[])null, (MBeanOperationInfo[])null, new MBeanNotificationInfo[0]); + this.mBeanInfo = new MBeanInfo(MinecraftServerStatistics.class.getSimpleName(), "metrics for dedicated server", mBeanAttributeInfos, (MBeanConstructorInfo[])null, (MBeanOperationInfo[])null, EMPTY_INFO); // Plazma } public static void registerJmxMonitoring(MinecraftServer server) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java index 6c04c8e7776b2830ac368229da834532e8ce163e..e0200f84270068612e67671cb027cc0c5145bdf9 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java @@ -251,7 +251,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.goalSelector.addGoal(8, new Bee.BeeWanderGoal()); this.goalSelector.addGoal(9, new FloatGoal(this)); this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - this.targetSelector.addGoal(1, (new Bee.BeeHurtByOtherGoal(this)).setAlertOthers(new Class[0])); + this.targetSelector.addGoal(1, (new Bee.BeeHurtByOtherGoal(this)).setAlertOthers(org.plazmamc.plazma.EmptyConstants.CLASS)); // Plazma this.targetSelector.addGoal(2, new Bee.BeeBecomeAngryTargetGoal(this)); this.targetSelector.addGoal(3, new ResetUniversalAngerTargetGoal<>(this, true)); } diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java index 64aba511e615983988cdb6a0fd45b7d9d4f2f16d..bb6d976bfc942d42b0ebb672246b795c9f6fce98 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java @@ -122,7 +122,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { this.goalSelector.addGoal(8, new RandomLookAroundGoal(this)); this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, new DefendVillageTargetGoal(this)); - this.targetSelector.addGoal(2, new HurtByTargetGoal(this, new Class[0])); + this.targetSelector.addGoal(2, new HurtByTargetGoal(this, org.plazmamc.plazma.EmptyConstants.CLASS)); // Plazma this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::isAngryAt)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Mob.class, 5, false, false, (entityliving) -> { return entityliving instanceof Enemy && !(entityliving instanceof Creeper); diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java index bd7c5f6768a54a3d8ffd585d91414e65936991da..82464cba4f582596252e2b18a09b860e9c3b330c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java @@ -336,7 +336,7 @@ public class Panda extends Animal { this.goalSelector.addGoal(13, new FollowParentGoal(this, 1.25D)); this.goalSelector.addGoal(14, new WaterAvoidingRandomStrollGoal(this, 1.0D)); this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - this.targetSelector.addGoal(1, (new Panda.PandaHurtByTargetGoal(this, new Class[0])).setAlertOthers(new Class[0])); + this.targetSelector.addGoal(1, (new Panda.PandaHurtByTargetGoal(this, org.plazmamc.plazma.EmptyConstants.CLASS)).setAlertOthers(org.plazmamc.plazma.EmptyConstants.CLASS)); // Plazma } public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java index 81a33954aedffd18fcfa96babeaf6388715ab3f3..a85da190d9c51303296f4bbf16f26eb2e454e211 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java @@ -460,7 +460,7 @@ public class Rabbit extends Animal implements VariantHolder { if (variant == Rabbit.Variant.EVIL) { this.getAttribute(Attributes.ARMOR).setBaseValue(8.0D); this.goalSelector.addGoal(4, new Rabbit.EvilRabbitAttackGoal(this)); - this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[0])).setAlertOthers()); + this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, org.plazmamc.plazma.EmptyConstants.CLASS)).setAlertOthers()); // Plazma this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Wolf.class, true)); if (!this.hasCustomName()) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java index 64bceae4d06b35fcbecb0daca2496ba30e39d995..805d2027fcb6c06537b3357fe104742a05391224 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java @@ -239,7 +239,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, new OwnerHurtByTargetGoal(this)); this.targetSelector.addGoal(2, new OwnerHurtTargetGoal(this)); - this.targetSelector.addGoal(3, (new HurtByTargetGoal(this, new Class[0])).setAlertOthers()); + this.targetSelector.addGoal(3, (new HurtByTargetGoal(this, org.plazmamc.plazma.EmptyConstants.CLASS)).setAlertOthers()); // Plazma this.targetSelector.addGoal(4, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::isAngryAt)); // this.targetSelector.addGoal(5, new NonTameRandomTargetGoal<>(this, Animal.class, false, Wolf.PREY_SELECTOR)); // Purpur - moved to updatePathfinders() this.targetSelector.addGoal(6, new NonTameRandomTargetGoal<>(this, Turtle.class, false, Turtle.BABY_ON_LAND_SELECTOR)); diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java index c94a1b75593ad01e7f79fdc84818ea8ec269e124..b45c1d611ccd80c3b1405aaef153c37bd046f083 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -254,7 +254,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 8.0F)); this.goalSelector.addGoal(7, new RandomLookAroundGoal(this)); this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - this.targetSelector.addGoal(1, new HurtByTargetGoal(this, new Class[0])); + this.targetSelector.addGoal(1, new HurtByTargetGoal(this, org.plazmamc.plazma.EmptyConstants.CLASS)); // Plazma this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, LivingEntity.class, 0, false, false, WitherBoss.LIVING_ENTITY_SELECTOR)); } diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java index 917648c2cc52790f40123b27b1cafa3fc3ba4b3f..c765ee642c4b77bfb3f21163c9e7a24b366e0a70 100644 --- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java @@ -79,7 +79,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 8.0F)); this.goalSelector.addGoal(6, new RandomLookAroundGoal(this)); this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - this.targetSelector.addGoal(1, new HurtByTargetGoal(this, new Class[0])); + this.targetSelector.addGoal(1, new HurtByTargetGoal(this, org.plazmamc.plazma.EmptyConstants.CLASS)); // Plazma this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, true)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java index 304ea7fdcd410a7c88ec61143364e14de8db0b0c..3eea42997caa1b66ac4d9d8da65e3bfe2f67cd0f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java @@ -153,7 +153,7 @@ public class Creeper extends Monster implements PowerableMob { this.goalSelector.addGoal(6, new RandomLookAroundGoal(this)); this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Player.class, true)); - this.targetSelector.addGoal(2, new HurtByTargetGoal(this, new Class[0])); + this.targetSelector.addGoal(2, new HurtByTargetGoal(this, org.plazmamc.plazma.EmptyConstants.CLASS)); // Plazma } public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java index 44331be61edffd5afadf3e637dd181bff1133d4f..ff6d4b73cd84c44908315080714d57fef1b5614c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -136,7 +136,7 @@ public class EnderMan extends Monster implements NeutralMob { this.goalSelector.addGoal(11, new EnderMan.EndermanTakeBlockGoal(this)); this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, new EnderMan.EndermanLookForPlayerGoal(this, this::isAngryAt)); - this.targetSelector.addGoal(2, new HurtByTargetGoal(this, new Class[0])); + this.targetSelector.addGoal(2, new HurtByTargetGoal(this, org.plazmamc.plazma.EmptyConstants.CLASS)); // Plazma this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Endermite.class, 10, true, false, (entityliving) -> entityliving.level().purpurConfig.endermanAggroEndermites && entityliving instanceof Endermite endermite && (!entityliving.level().purpurConfig.endermanAggroEndermitesOnlyIfPlayerSpawned || endermite.isPlayerSpawned()))); // Purpur this.targetSelector.addGoal(4, new ResetUniversalAngerTargetGoal<>(this, false)); } diff --git a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java index 83641c7cf51453e98809900e23f44a68018555ff..b03d42939d55607c74b747ce6704d2fbcf780834 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java +++ b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java @@ -87,7 +87,7 @@ public class Silverfish extends Monster { this.goalSelector.addGoal(4, new MeleeAttackGoal(this, 1.0D, false)); this.goalSelector.addGoal(5, new Silverfish.SilverfishMergeWithStoneGoal(this)); this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[0])).setAlertOthers()); + this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, org.plazmamc.plazma.EmptyConstants.CLASS)).setAlertOthers()); // Plazma this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); } diff --git a/src/main/java/net/minecraft/world/entity/monster/Spider.java b/src/main/java/net/minecraft/world/entity/monster/Spider.java index b3ab0f8cdbd678970e39e89c2062772374466b67..0e7a4ef59b01b5cc6ba89ff4f986604ba9aebe45 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Spider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Spider.java @@ -93,7 +93,7 @@ public class Spider extends Monster { this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 8.0F)); this.goalSelector.addGoal(6, new RandomLookAroundGoal(this)); this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - this.targetSelector.addGoal(1, new HurtByTargetGoal(this, new Class[0])); + this.targetSelector.addGoal(1, new HurtByTargetGoal(this, org.plazmamc.plazma.EmptyConstants.CLASS)); // Plazma this.targetSelector.addGoal(2, new Spider.SpiderTargetGoal<>(this, Player.class)); this.targetSelector.addGoal(3, new Spider.SpiderTargetGoal<>(this, IronGolem.class)); } diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java index 7c5efb5582f43d9f333f926ad7dba1ed9920333a..3780f752ec2df3a43746dd3f0107ab37cbd226de 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -165,7 +165,7 @@ public class Zombie extends Monster { this.goalSelector.addGoal(2, new ZombieAttackGoal(this, 1.0D, false)); this.goalSelector.addGoal(6, new MoveThroughVillageGoal(this, 1.0D, true, 4, this::canBreakDoors)); this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0D)); - this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[0])).setAlertOthers(ZombifiedPiglin.class)); + this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, org.plazmamc.plazma.EmptyConstants.CLASS)).setAlertOthers(ZombifiedPiglin.class)); // Plazma this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); // Purpur start if ( this.level().spigotConfig.zombieAggressiveTowardsVillager ) this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false) { // Spigot diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java index 7bb99d7fd8e05805e0cac7bec0b2771990057f58..393de8e7abc323f922bfc968fe3fe7a991a2ecd4 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java @@ -124,7 +124,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { protected void addBehaviourGoals() { this.goalSelector.addGoal(2, new ZombieAttackGoal(this, 1.0D, false)); this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0D)); - this.targetSelector.addGoal(1, pathfinderGoalHurtByTarget = (new HurtByTargetGoal(this, new Class[0])).setAlertOthers()); // Paper - assign field + this.targetSelector.addGoal(1, pathfinderGoalHurtByTarget = (new HurtByTargetGoal(this, org.plazmamc.plazma.EmptyConstants.CLASS)).setAlertOthers()); // Paper - assign field // Plazma this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::isAngryAt)); this.targetSelector.addGoal(3, new ResetUniversalAngerTargetGoal<>(this, true)); } diff --git a/src/main/java/net/minecraft/world/item/crafting/ShapedRecipe.java b/src/main/java/net/minecraft/world/item/crafting/ShapedRecipe.java index 6693dd51440da3f0fc338c4e2cb67d3222eed182..a7849d3d669929ea9a25d688ea6247a6299b0bdf 100644 --- a/src/main/java/net/minecraft/world/item/crafting/ShapedRecipe.java +++ b/src/main/java/net/minecraft/world/item/crafting/ShapedRecipe.java @@ -263,7 +263,7 @@ public class ShapedRecipe extends io.papermc.paper.inventory.recipe.RecipeBookEx } if (pattern.length == l) { - return new String[0]; + return org.plazmamc.plazma.EmptyConstants.STRING; // Plazma } else { String[] astring1 = new String[pattern.length - l - k]; diff --git a/src/main/java/net/minecraft/world/item/crafting/ShapelessRecipe.java b/src/main/java/net/minecraft/world/item/crafting/ShapelessRecipe.java index 565318c2afaa1661ed9963453a6354dff499f47a..abd5df5a47d6cc5de0018ad7207232be5bd01d53 100644 --- a/src/main/java/net/minecraft/world/item/crafting/ShapelessRecipe.java +++ b/src/main/java/net/minecraft/world/item/crafting/ShapelessRecipe.java @@ -87,10 +87,11 @@ public class ShapelessRecipe extends io.papermc.paper.inventory.recipe.RecipeBoo return this.ingredients; } + private static final Ingredient[] EMPTY_INGREDIENT = new Ingredient[0]; // Plazma public boolean matches(CraftingContainer inventory, Level world) { // Pufferfish start if (!this.isBukkit) { - java.util.List ingredients = com.google.common.collect.Lists.newArrayList(this.ingredients.toArray(new Ingredient[0])); + java.util.List ingredients = com.google.common.collect.Lists.newArrayList(this.ingredients.toArray(EMPTY_INGREDIENT)); // Plazma inventory: for (int index = 0; index < inventory.getContainerSize(); index++) { ItemStack itemStack = inventory.getItem(index); diff --git a/src/main/java/net/minecraft/world/level/block/ComposterBlock.java b/src/main/java/net/minecraft/world/level/block/ComposterBlock.java index 596b77306f690a2298835f0f0fea1abee2a7c85d..e781b38bd0925f0250a93222c729a1754ee780bc 100644 --- a/src/main/java/net/minecraft/world/level/block/ComposterBlock.java +++ b/src/main/java/net/minecraft/world/level/block/ComposterBlock.java @@ -443,7 +443,7 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder { @Override public int[] getSlotsForFace(Direction side) { - return side == Direction.DOWN ? new int[]{0} : new int[0]; + return side == Direction.DOWN ? org.plazmamc.plazma.EmptyConstants.ZERO_INT : org.plazmamc.plazma.EmptyConstants.INT; // Plazma } @Override @@ -492,7 +492,7 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder { @Override public int[] getSlotsForFace(Direction side) { - return side == Direction.UP ? new int[]{0} : new int[0]; + return side == Direction.UP ? org.plazmamc.plazma.EmptyConstants.ZERO_INT : org.plazmamc.plazma.EmptyConstants.INT; // Plazma } @Override @@ -534,7 +534,7 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder { @Override public int[] getSlotsForFace(Direction side) { - return new int[0]; + return org.plazmamc.plazma.EmptyConstants.INT; // Plazma } @Override diff --git a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java index f03608a133338b0f5522a07239e06fd2245db1e5..31f2f322e7018a264719cc916f70fc8c28e91811 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java @@ -758,7 +758,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen // Paper start - optimize hopper item suck in static final AABB HOPPER_ITEM_SUCK_OVERALL = Hopper.SUCK.bounds(); - static final AABB[] HOPPER_ITEM_SUCK_INDIVIDUAL = Hopper.SUCK.toAabbs().toArray(new AABB[0]); + static final AABB[] HOPPER_ITEM_SUCK_INDIVIDUAL = Hopper.SUCK.toAabbs().toArray(new AABB[0]); // Plazma // Paper end - optimize hopper item suck in public static List getItemsAtAndAbove(Level world, Hopper hopper) { diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFile.java b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFile.java index 0c5ac12b1f395bba8b7fc50baf8e825ba6488f6c..ea60ec1bfb4f709921b9328d2f4fa21bec1723b3 100644 --- a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFile.java +++ b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFile.java @@ -445,7 +445,7 @@ public class RegionFile implements AutoCloseable { initOversizedState(); // Paper this.usedSectors = new RegionBitmap(); this.version = outputChunkStreamVersion; - if (!Files.isDirectory(directory, new LinkOption[0])) { + if (!Files.isDirectory(directory, org.plazmamc.plazma.EmptyConstants.LINK_OPTION)) { // Plazma throw new IllegalArgumentException("Expected directory, got " + directory.toAbsolutePath()); } else { this.externalFileDir = directory; @@ -701,7 +701,7 @@ public class RegionFile implements AutoCloseable { private DataInputStream createExternalChunkInputStream(ChunkPos pos, byte flags) throws IOException { Path path = this.getExternalChunkPath(pos); - if (!Files.isRegularFile(path, new LinkOption[0])) { + if (!Files.isRegularFile(path, org.plazmamc.plazma.EmptyConstants.LINK_OPTION)) { // Plazma RegionFile.LOGGER.error("External chunk path {} is not file", path); return null; } else { @@ -753,7 +753,7 @@ public class RegionFile implements AutoCloseable { return false; } - if (!Files.isRegularFile(this.getExternalChunkPath(pos), new LinkOption[0])) { + if (!Files.isRegularFile(this.getExternalChunkPath(pos), org.plazmamc.plazma.EmptyConstants.LINK_OPTION)) { // Plazma return false; } } else { diff --git a/src/main/java/net/minecraft/world/level/levelgen/DebugLevelSource.java b/src/main/java/net/minecraft/world/level/levelgen/DebugLevelSource.java index c68736b023127c7b395835f4fa82d9062110697b..bee65f019e35dd44e6754755c99ff113849176da 100644 --- a/src/main/java/net/minecraft/world/level/levelgen/DebugLevelSource.java +++ b/src/main/java/net/minecraft/world/level/levelgen/DebugLevelSource.java @@ -88,7 +88,7 @@ public class DebugLevelSource extends ChunkGenerator { @Override public NoiseColumn getBaseColumn(int x, int z, LevelHeightAccessor world, RandomState noiseConfig) { - return new NoiseColumn(0, new BlockState[0]); + return new NoiseColumn(0, org.plazmamc.plazma.EmptyConstants.BLOCK_STATE); // Plazma } @Override diff --git a/src/main/java/net/minecraft/world/level/pathfinder/Path.java b/src/main/java/net/minecraft/world/level/pathfinder/Path.java index 2a335f277bd0e4b8ad0f60d8226eb8aaa80a871f..c4395df154e8c7066d213316f300d62db9231e5c 100644 --- a/src/main/java/net/minecraft/world/level/pathfinder/Path.java +++ b/src/main/java/net/minecraft/world/level/pathfinder/Path.java @@ -13,8 +13,11 @@ import net.minecraft.world.phys.Vec3; public class Path { public final List nodes; - private Node[] openSet = new Node[0]; - private Node[] closedSet = new Node[0]; + // Plazma start + private static final Node[] EMPTY_NODE = new Node[0]; + private Node[] openSet = EMPTY_NODE; + private Node[] closedSet = EMPTY_NODE; + // Plazma end @Nullable private Set targetNodes; private int nextNodeIndex; diff --git a/src/main/java/net/minecraft/world/level/storage/LevelStorageSource.java b/src/main/java/net/minecraft/world/level/storage/LevelStorageSource.java index ef8b794d1a017f02f90368a48cec2ea7bb57f218..52bf65c0ec0651a24fc3ee187d99451ef640f996 100644 --- a/src/main/java/net/minecraft/world/level/storage/LevelStorageSource.java +++ b/src/main/java/net/minecraft/world/level/storage/LevelStorageSource.java @@ -101,7 +101,7 @@ public class LevelStorageSource { } public static DirectoryValidator parseValidator(Path allowedSymlinksFile) { - if (Files.exists(allowedSymlinksFile, new LinkOption[0])) { + if (Files.exists(allowedSymlinksFile, org.plazmamc.plazma.EmptyConstants.LINK_OPTION)) { // Plazma try { BufferedReader bufferedreader = Files.newBufferedReader(allowedSymlinksFile); @@ -171,7 +171,7 @@ public class LevelStorageSource { } public LevelStorageSource.LevelCandidates findLevelCandidates() throws LevelStorageException { - if (!Files.isDirectory(this.baseDir, new LinkOption[0])) { + if (!Files.isDirectory(this.baseDir, org.plazmamc.plazma.EmptyConstants.LINK_OPTION)) { // Plazma throw new LevelStorageException(Component.translatable("selectWorld.load_folder_access")); } else { try { @@ -181,9 +181,9 @@ public class LevelStorageSource { try { List list = stream.filter((path) -> { - return Files.isDirectory(path, new LinkOption[0]); + return Files.isDirectory(path, org.plazmamc.plazma.EmptyConstants.LINK_OPTION); // Plazma }).map(LevelStorageSource.LevelDirectory::new).filter((convertable_b) -> { - return Files.isRegularFile(convertable_b.dataFile(), new LinkOption[0]) || Files.isRegularFile(convertable_b.oldDataFile(), new LinkOption[0]); + return Files.isRegularFile(convertable_b.dataFile(), org.plazmamc.plazma.EmptyConstants.LINK_OPTION) || Files.isRegularFile(convertable_b.oldDataFile(), org.plazmamc.plazma.EmptyConstants.LINK_OPTION); // Plazma }).toList(); convertable_a = new LevelStorageSource.LevelCandidates(list); @@ -255,12 +255,12 @@ public class LevelStorageSource { @Nullable T readLevelData(LevelStorageSource.LevelDirectory levelSave, BiFunction levelDataParser) { - if (!Files.exists(levelSave.path(), new LinkOption[0])) { + if (!Files.exists(levelSave.path(), org.plazmamc.plazma.EmptyConstants.LINK_OPTION)) { // Plazma return null; } else { Path path = levelSave.dataFile(); - if (Files.exists(path, new LinkOption[0])) { + if (Files.exists(path, org.plazmamc.plazma.EmptyConstants.LINK_OPTION)) { // Plazma T t0 = levelDataParser.apply(path, this.fixerUpper); if (t0 != null) { @@ -269,7 +269,7 @@ public class LevelStorageSource { } path = levelSave.oldDataFile(); - return Files.exists(path, new LinkOption[0]) ? levelDataParser.apply(path, this.fixerUpper) : null; + return Files.exists(path, org.plazmamc.plazma.EmptyConstants.LINK_OPTION) ? levelDataParser.apply(path, this.fixerUpper) : null; // Plazma } } @@ -400,7 +400,7 @@ public class LevelStorageSource { } public boolean levelExists(String name) { - return Files.isDirectory(this.getLevelPath(name), new LinkOption[0]); + return Files.isDirectory(this.getLevelPath(name), org.plazmamc.plazma.EmptyConstants.LINK_OPTION); // Plazma } private Path getLevelPath(String name) { @@ -645,7 +645,7 @@ public class LevelStorageSource { this.checkLock(); Path path = this.levelDirectory.dataFile(); - if (Files.exists(path, new LinkOption[0])) { + if (Files.exists(path, org.plazmamc.plazma.EmptyConstants.LINK_OPTION)) { // Plazma CompoundTag nbttagcompound = NbtIo.readCompressed(path.toFile()); CompoundTag nbttagcompound1 = nbttagcompound.getCompound("Data"); diff --git a/src/main/java/net/minecraft/world/level/storage/PlayerDataStorage.java b/src/main/java/net/minecraft/world/level/storage/PlayerDataStorage.java index 039c952f0c157cba6e79fa9b976958bd1763a922..1899e5a1421ef98cc27199490e3c946e03c75f9f 100644 --- a/src/main/java/net/minecraft/world/level/storage/PlayerDataStorage.java +++ b/src/main/java/net/minecraft/world/level/storage/PlayerDataStorage.java @@ -120,7 +120,7 @@ public class PlayerDataStorage { String[] astring = this.playerDir.list(); if (astring == null) { - astring = new String[0]; + astring = org.plazmamc.plazma.EmptyConstants.STRING; // Plazma } for (int i = 0; i < astring.length; ++i) { diff --git a/src/main/java/net/minecraft/world/level/storage/loot/LootPool.java b/src/main/java/net/minecraft/world/level/storage/loot/LootPool.java index fad524f8b032174cee0c68da7c68e020ee3cd619..6175eee025d98f4a7ab78042afef32fb45586045 100644 --- a/src/main/java/net/minecraft/world/level/storage/loot/LootPool.java +++ b/src/main/java/net/minecraft/world/level/storage/loot/LootPool.java @@ -160,7 +160,7 @@ public class LootPool { if (this.rolls == null) { throw new IllegalArgumentException("Rolls not set"); } else { - return new LootPool(this.entries.toArray(new LootPoolEntryContainer[0]), this.conditions.toArray(new LootItemCondition[0]), this.functions.toArray(new LootItemFunction[0]), this.rolls, this.bonusRolls); + return new LootPool(this.entries.toArray(org.plazmamc.plazma.EmptyConstants.LOOT_POOL_ENTRY_CONTAINERS), this.conditions.toArray(org.plazmamc.plazma.EmptyConstants.LOOT_ITEM_CONDITIONS), this.functions.toArray(org.plazmamc.plazma.EmptyConstants.LOOT_ITEM_FUNCTION), this.rolls, this.bonusRolls); // Plazma } } } @@ -170,8 +170,8 @@ public class LootPool { public LootPool deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException { JsonObject jsonObject = GsonHelper.convertToJsonObject(jsonElement, "loot pool"); LootPoolEntryContainer[] lootPoolEntryContainers = GsonHelper.getAsObject(jsonObject, "entries", jsonDeserializationContext, LootPoolEntryContainer[].class); - LootItemCondition[] lootItemConditions = GsonHelper.getAsObject(jsonObject, "conditions", new LootItemCondition[0], jsonDeserializationContext, LootItemCondition[].class); - LootItemFunction[] lootItemFunctions = GsonHelper.getAsObject(jsonObject, "functions", new LootItemFunction[0], jsonDeserializationContext, LootItemFunction[].class); + LootItemCondition[] lootItemConditions = GsonHelper.getAsObject(jsonObject, "conditions", org.plazmamc.plazma.EmptyConstants.LOOT_ITEM_CONDITIONS, jsonDeserializationContext, LootItemCondition[].class); // Plazma + LootItemFunction[] lootItemFunctions = GsonHelper.getAsObject(jsonObject, "functions", org.plazmamc.plazma.EmptyConstants.LOOT_ITEM_FUNCTION, jsonDeserializationContext, LootItemFunction[].class); // Plazma NumberProvider numberProvider = GsonHelper.getAsObject(jsonObject, "rolls", jsonDeserializationContext, NumberProvider.class); NumberProvider numberProvider2 = GsonHelper.getAsObject(jsonObject, "bonus_rolls", ConstantValue.exactly(0.0F), jsonDeserializationContext, NumberProvider.class); return new LootPool(lootPoolEntryContainers, lootItemConditions, lootItemFunctions, numberProvider, numberProvider2); diff --git a/src/main/java/net/minecraft/world/level/storage/loot/LootTable.java b/src/main/java/net/minecraft/world/level/storage/loot/LootTable.java index e46a0afa45ee771a0114703acc314d7cf8e8ffed..687a7de03846bceeee4e1db2459d6c9cafb5f3b6 100644 --- a/src/main/java/net/minecraft/world/level/storage/loot/LootTable.java +++ b/src/main/java/net/minecraft/world/level/storage/loot/LootTable.java @@ -44,7 +44,7 @@ import org.bukkit.event.world.LootGenerateEvent; public class LootTable { static final Logger LOGGER = LogUtils.getLogger(); - public static final LootTable EMPTY = new LootTable(LootContextParamSets.EMPTY, (ResourceLocation) null, new LootPool[0], new LootItemFunction[0]); + public static final LootTable EMPTY = new LootTable(LootContextParamSets.EMPTY, (ResourceLocation) null, org.plazmamc.plazma.EmptyConstants.LOOT_POOL, org.plazmamc.plazma.EmptyConstants.LOOT_ITEM_FUNCTION); // Plazma public static final LootContextParamSet DEFAULT_PARAM_SET = LootContextParamSets.ALL_PARAMS; final LootContextParamSet paramSet; @Nullable @@ -285,7 +285,7 @@ public class LootTable { } public LootTable build() { - return new LootTable(this.paramSet, this.randomSequence, (LootPool[]) this.pools.toArray(new LootPool[0]), (LootItemFunction[]) this.functions.toArray(new LootItemFunction[0])); + return new LootTable(this.paramSet, this.randomSequence, (LootPool[]) this.pools.toArray(org.plazmamc.plazma.EmptyConstants.LOOT_POOL), (LootItemFunction[]) this.functions.toArray(org.plazmamc.plazma.EmptyConstants.LOOT_ITEM_FUNCTION)); // Plazma } } @@ -295,7 +295,7 @@ public class LootTable { public LootTable deserialize(JsonElement jsonelement, Type type, JsonDeserializationContext jsondeserializationcontext) throws JsonParseException { JsonObject jsonobject = GsonHelper.convertToJsonObject(jsonelement, "loot table"); - LootPool[] alootselector = (LootPool[]) GsonHelper.getAsObject(jsonobject, "pools", new LootPool[0], jsondeserializationcontext, LootPool[].class); + LootPool[] alootselector = (LootPool[]) GsonHelper.getAsObject(jsonobject, "pools", org.plazmamc.plazma.EmptyConstants.LOOT_POOL, jsondeserializationcontext, LootPool[].class); // Plazma LootContextParamSet lootcontextparameterset = null; if (jsonobject.has("type")) { @@ -314,7 +314,7 @@ public class LootTable { minecraftkey = null; } - LootItemFunction[] alootitemfunction = (LootItemFunction[]) GsonHelper.getAsObject(jsonobject, "functions", new LootItemFunction[0], jsondeserializationcontext, LootItemFunction[].class); + LootItemFunction[] alootitemfunction = (LootItemFunction[]) GsonHelper.getAsObject(jsonobject, "functions", org.plazmamc.plazma.EmptyConstants.LOOT_ITEM_FUNCTION, jsondeserializationcontext, LootItemFunction[].class); // Plazma return new LootTable(lootcontextparameterset != null ? lootcontextparameterset : LootContextParamSets.ALL_PARAMS, minecraftkey, alootselector, alootitemfunction); } diff --git a/src/main/java/net/minecraft/world/level/storage/loot/entries/AlternativesEntry.java b/src/main/java/net/minecraft/world/level/storage/loot/entries/AlternativesEntry.java index d63d8323290625bb0246a6965fc06f29a800750c..b0b104de5d378b6618b392dcc032fe1f5083fa9d 100644 --- a/src/main/java/net/minecraft/world/level/storage/loot/entries/AlternativesEntry.java +++ b/src/main/java/net/minecraft/world/level/storage/loot/entries/AlternativesEntry.java @@ -85,7 +85,7 @@ public class AlternativesEntry extends CompositeEntryBase { @Override public LootPoolEntryContainer build() { - return new AlternativesEntry(this.entries.toArray(new LootPoolEntryContainer[0]), this.getConditions()); + return new AlternativesEntry(this.entries.toArray(org.plazmamc.plazma.EmptyConstants.LOOT_POOL_ENTRY_CONTAINERS), this.getConditions()); // Plazma } } } diff --git a/src/main/java/net/minecraft/world/level/storage/loot/entries/EntryGroup.java b/src/main/java/net/minecraft/world/level/storage/loot/entries/EntryGroup.java index da1b5c6b68f14969b85472826d3d36ca673a0e5a..0af74b3442ed73ce2157e9003ce9f1eacf4431c0 100644 --- a/src/main/java/net/minecraft/world/level/storage/loot/entries/EntryGroup.java +++ b/src/main/java/net/minecraft/world/level/storage/loot/entries/EntryGroup.java @@ -67,7 +67,7 @@ public class EntryGroup extends CompositeEntryBase { @Override public LootPoolEntryContainer build() { - return new EntryGroup(this.entries.toArray(new LootPoolEntryContainer[0]), this.getConditions()); + return new EntryGroup(this.entries.toArray(org.plazmamc.plazma.EmptyConstants.LOOT_POOL_ENTRY_CONTAINERS), this.getConditions()); // Plazma } } } diff --git a/src/main/java/net/minecraft/world/level/storage/loot/entries/LootPoolEntryContainer.java b/src/main/java/net/minecraft/world/level/storage/loot/entries/LootPoolEntryContainer.java index 3bea85eab6f0a3b460b060579c73e90b83be7de4..6233448b253f02b1e3f82984960c027bca5ca150 100644 --- a/src/main/java/net/minecraft/world/level/storage/loot/entries/LootPoolEntryContainer.java +++ b/src/main/java/net/minecraft/world/level/storage/loot/entries/LootPoolEntryContainer.java @@ -53,7 +53,7 @@ public abstract class LootPoolEntryContainer implements ComposableEntryContainer } protected LootItemCondition[] getConditions() { - return this.conditions.toArray(new LootItemCondition[0]); + return this.conditions.toArray(org.plazmamc.plazma.EmptyConstants.LOOT_ITEM_CONDITIONS); // Plazma } public AlternativesEntry.Builder otherwise(LootPoolEntryContainer.Builder builder) { @@ -83,7 +83,7 @@ public abstract class LootPoolEntryContainer implements ComposableEntryContainer @Override public final T deserialize(JsonObject jsonObject, JsonDeserializationContext jsonDeserializationContext) { - LootItemCondition[] lootItemConditions = GsonHelper.getAsObject(jsonObject, "conditions", new LootItemCondition[0], jsonDeserializationContext, LootItemCondition[].class); + LootItemCondition[] lootItemConditions = GsonHelper.getAsObject(jsonObject, "conditions", org.plazmamc.plazma.EmptyConstants.LOOT_ITEM_CONDITIONS, jsonDeserializationContext, LootItemCondition[].class); // Plazma return this.deserializeCustom(jsonObject, jsonDeserializationContext, lootItemConditions); } diff --git a/src/main/java/net/minecraft/world/level/storage/loot/entries/LootPoolSingletonContainer.java b/src/main/java/net/minecraft/world/level/storage/loot/entries/LootPoolSingletonContainer.java index d125b5a470be0f4c56c2c1f229fc5c83fc4d2f3b..63ae04cbdd556788675d1a0db4c3309b3c84c0fa 100644 --- a/src/main/java/net/minecraft/world/level/storage/loot/entries/LootPoolSingletonContainer.java +++ b/src/main/java/net/minecraft/world/level/storage/loot/entries/LootPoolSingletonContainer.java @@ -78,7 +78,7 @@ public abstract class LootPoolSingletonContainer extends LootPoolEntryContainer } protected LootItemFunction[] getFunctions() { - return this.functions.toArray(new LootItemFunction[0]); + return this.functions.toArray(org.plazmamc.plazma.EmptyConstants.LOOT_ITEM_FUNCTION); // Plazma } public T setWeight(int weight) { @@ -169,7 +169,7 @@ public abstract class LootPoolSingletonContainer extends LootPoolEntryContainer public final T deserializeCustom(JsonObject jsonObject, JsonDeserializationContext jsonDeserializationContext, LootItemCondition[] lootItemConditions) { int i = GsonHelper.getAsInt(jsonObject, "weight", 1); int j = GsonHelper.getAsInt(jsonObject, "quality", 0); - LootItemFunction[] lootItemFunctions = GsonHelper.getAsObject(jsonObject, "functions", new LootItemFunction[0], jsonDeserializationContext, LootItemFunction[].class); + LootItemFunction[] lootItemFunctions = GsonHelper.getAsObject(jsonObject, "functions", org.plazmamc.plazma.EmptyConstants.LOOT_ITEM_FUNCTION, jsonDeserializationContext, LootItemFunction[].class); // Plazma return this.deserialize(jsonObject, jsonDeserializationContext, i, j, lootItemConditions, lootItemFunctions); } diff --git a/src/main/java/net/minecraft/world/level/storage/loot/entries/SequentialEntry.java b/src/main/java/net/minecraft/world/level/storage/loot/entries/SequentialEntry.java index 28ee59e7745ef0c98b13ae3e32f52dc7defe0bcd..d43f00901bac86cbb6e210cca223c8663b440847 100644 --- a/src/main/java/net/minecraft/world/level/storage/loot/entries/SequentialEntry.java +++ b/src/main/java/net/minecraft/world/level/storage/loot/entries/SequentialEntry.java @@ -63,7 +63,7 @@ public class SequentialEntry extends CompositeEntryBase { @Override public LootPoolEntryContainer build() { - return new SequentialEntry(this.entries.toArray(new LootPoolEntryContainer[0]), this.getConditions()); + return new SequentialEntry(this.entries.toArray(org.plazmamc.plazma.EmptyConstants.LOOT_POOL_ENTRY_CONTAINERS), this.getConditions()); // Plazma } } } diff --git a/src/main/java/net/minecraft/world/level/storage/loot/functions/LootItemConditionalFunction.java b/src/main/java/net/minecraft/world/level/storage/loot/functions/LootItemConditionalFunction.java index 5c67ae93a18f246d2bffd2c0b92f9ad82294b81e..31f365f26f008ef67b0dbe47743163a420c59b91 100644 --- a/src/main/java/net/minecraft/world/level/storage/loot/functions/LootItemConditionalFunction.java +++ b/src/main/java/net/minecraft/world/level/storage/loot/functions/LootItemConditionalFunction.java @@ -63,7 +63,7 @@ public abstract class LootItemConditionalFunction implements LootItemFunction { protected abstract T getThis(); protected LootItemCondition[] getConditions() { - return this.conditions.toArray(new LootItemCondition[0]); + return this.conditions.toArray(org.plazmamc.plazma.EmptyConstants.LOOT_ITEM_CONDITIONS); // Plazma } } @@ -96,7 +96,7 @@ public abstract class LootItemConditionalFunction implements LootItemFunction { @Override public final T deserialize(JsonObject jsonObject, JsonDeserializationContext jsonDeserializationContext) { - LootItemCondition[] lootItemConditions = GsonHelper.getAsObject(jsonObject, "conditions", new LootItemCondition[0], jsonDeserializationContext, LootItemCondition[].class); + LootItemCondition[] lootItemConditions = GsonHelper.getAsObject(jsonObject, "conditions", org.plazmamc.plazma.EmptyConstants.LOOT_ITEM_CONDITIONS, jsonDeserializationContext, LootItemCondition[].class); // Plazma return this.deserialize(jsonObject, jsonDeserializationContext, lootItemConditions); } diff --git a/src/main/java/net/minecraft/world/level/storage/loot/functions/SetAttributesFunction.java b/src/main/java/net/minecraft/world/level/storage/loot/functions/SetAttributesFunction.java index c5e7caf78049d8a6d18676f19dedf0b688802eab..375665a588c19cfa470fb20b5e502eea8ebb55f0 100644 --- a/src/main/java/net/minecraft/world/level/storage/loot/functions/SetAttributesFunction.java +++ b/src/main/java/net/minecraft/world/level/storage/loot/functions/SetAttributesFunction.java @@ -216,6 +216,7 @@ public class SetAttributesFunction extends LootItemConditionalFunction { @Nullable private UUID id; private final Set slots = EnumSet.noneOf(EquipmentSlot.class); + private static final EquipmentSlot[] EMPTY_SLOT = new EquipmentSlot[0]; // Plazma public ModifierBuilder(String name, Attribute attribute, AttributeModifier.Operation operation, NumberProvider amount) { this.name = name; @@ -235,7 +236,7 @@ public class SetAttributesFunction extends LootItemConditionalFunction { } public SetAttributesFunction.Modifier build() { - return new SetAttributesFunction.Modifier(this.name, this.attribute, this.operation, this.amount, this.slots.toArray(new EquipmentSlot[0]), this.id); + return new SetAttributesFunction.Modifier(this.name, this.attribute, this.operation, this.amount, this.slots.toArray(EMPTY_SLOT), this.id); // Plazma } } diff --git a/src/main/java/net/minecraft/world/scores/Team.java b/src/main/java/net/minecraft/world/scores/Team.java index 16d2aa4556bc9f32a2def7f9ca282aa3fa23fb87..4886624aea43c1af7ed02da336cc0d25d38cdb8d 100644 --- a/src/main/java/net/minecraft/world/scores/Team.java +++ b/src/main/java/net/minecraft/world/scores/Team.java @@ -80,7 +80,7 @@ public abstract class Team { public final int id; public static String[] getAllNames() { - return BY_NAME.keySet().toArray(new String[0]); + return BY_NAME.keySet().toArray(org.plazmamc.plazma.EmptyConstants.STRING); // Plazma } @Nullable diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java index 720a81da72a8002ff02cc39e5fca42354519c742..e10e07c89c1c79c22d82af6b76b948a4a5955a87 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -455,7 +455,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void sendTitle(Title title) { Preconditions.checkNotNull(title, "Title is null"); setTitleTimes(title.getFadeIn(), title.getStay(), title.getFadeOut()); - setSubtitle(title.getSubtitle() == null ? new BaseComponent[0] : title.getSubtitle()); + setSubtitle(title.getSubtitle() == null ? org.plazmamc.plazma.EmptyConstants.BASE_COMPONENT : title.getSubtitle()); // Plazma showTitle(title.getTitle()); } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java index 88c899e323eb554febe191ac7df678bbdfde08dc..a7ce24d3fce8490a8cd4e7cf28eb6be6138f4bd8 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java @@ -609,7 +609,7 @@ public class CraftMetaBook extends CraftMetaItem implements BookMeta { throw new IllegalArgumentException("Invalid page number " + page + "/" + CraftMetaBook.this.getPageCount()); } - BaseComponent[] newText = text == null ? new BaseComponent[0] : text; + BaseComponent[] newText = text == null ? org.plazmamc.plazma.EmptyConstants.BASE_COMPONENT : text; // Plazma CraftMetaBook.this.pages.set(page - 1, this.componentsToPage(newText)); } @@ -622,7 +622,7 @@ public class CraftMetaBook extends CraftMetaItem implements BookMeta { public void addPage(final BaseComponent[]... pages) { for (BaseComponent[] page : pages) { if (page == null) { - page = new BaseComponent[0]; + page = org.plazmamc.plazma.EmptyConstants.BASE_COMPONENT; // Plazma } CraftMetaBook.this.internalAddPage(this.componentsToPage(page)); diff --git a/src/main/java/org/bukkit/craftbukkit/util/WeakCollection.java b/src/main/java/org/bukkit/craftbukkit/util/WeakCollection.java index bbacf58740f3faea0d555e4012fe2b15fb46ed50..032ec7a2e8afcbf70c86ced7c591bba555ffa17e 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/WeakCollection.java +++ b/src/main/java/org/bukkit/craftbukkit/util/WeakCollection.java @@ -164,7 +164,7 @@ public final class WeakCollection implements Collection { @Override public Object[] toArray() { - return this.toArray(new Object[0]); + return this.toArray(org.plazmamc.plazma.EmptyConstants.OBJECT); // Plazma } @Override diff --git a/src/main/java/org/plazmamc/plazma/EmptyConstants.java b/src/main/java/org/plazmamc/plazma/EmptyConstants.java new file mode 100644 index 0000000000000000000000000000000000000000..11602bcc9ea39130138bff67bf52b4f01c0b6c88 --- /dev/null +++ b/src/main/java/org/plazmamc/plazma/EmptyConstants.java @@ -0,0 +1,29 @@ +package org.plazmamc.plazma; + +public class EmptyConstants { + + public static final byte[] BYTE = new byte[0]; + public static final int[] INT = new int[0]; + public static final int[] ZERO_INT = new int[]{0}; + public static final long[] LONG = new long[0]; + + public static final Class[] CLASS = new Class[0]; + public static final Object[] OBJECT = new Object[0]; + public static final StackTraceElement[] STACK_TRACE_ELEMENT = new StackTraceElement[0]; + public static final String[] STRING = new String[0]; + + public static final java.nio.file.LinkOption[] LINK_OPTION = new java.nio.file.LinkOption[0]; + public static final java.util.concurrent.CompletableFuture[] COMPLETABLE_FUTURES = new java.util.concurrent.CompletableFuture[0]; + + public static final net.minecraft.advancements.critereon.ContextAwarePredicate[] CONTEXT_AWARE_PREDICATES = new net.minecraft.advancements.critereon.ContextAwarePredicate[0]; + public static final net.minecraft.advancements.critereon.ItemPredicate[] ITEM_PREDICATES = new net.minecraft.advancements.critereon.ItemPredicate[0]; + public static final net.minecraft.world.entity.Entity[] ENTITY = new net.minecraft.world.entity.Entity[0]; + public static final net.minecraft.world.level.block.state.BlockState[] BLOCK_STATE = new net.minecraft.world.level.block.state.BlockState[0]; + public static final net.minecraft.world.level.storage.loot.LootPool[] LOOT_POOL = new net.minecraft.world.level.storage.loot.LootPool[0]; + public static final net.minecraft.world.level.storage.loot.entries.LootPoolEntryContainer[] LOOT_POOL_ENTRY_CONTAINERS = new net.minecraft.world.level.storage.loot.entries.LootPoolEntryContainer[0]; + public static final net.minecraft.world.level.storage.loot.functions.LootItemFunction[] LOOT_ITEM_FUNCTION = new net.minecraft.world.level.storage.loot.functions.LootItemFunction[0]; + public static final net.minecraft.world.level.storage.loot.predicates.LootItemCondition[] LOOT_ITEM_CONDITIONS = new net.minecraft.world.level.storage.loot.predicates.LootItemCondition[0]; + + public static final net.md_5.bungee.api.chat.BaseComponent[] BASE_COMPONENT = new net.md_5.bungee.api.chat.BaseComponent[0]; + +} diff --git a/src/main/java/org/plazmamc/plazma/commands/subcommands/VersionCommand.java b/src/main/java/org/plazmamc/plazma/commands/subcommands/VersionCommand.java index 85002144e0b350c4ae044e1a4a4c1734cc27c059..776e5b5676749a05d29138afb070c9243cbe920c 100644 --- a/src/main/java/org/plazmamc/plazma/commands/subcommands/VersionCommand.java +++ b/src/main/java/org/plazmamc/plazma/commands/subcommands/VersionCommand.java @@ -9,7 +9,7 @@ public class VersionCommand implements PlazmaSubCommand { @Override public boolean execute(CommandSender sender, String subCommand, String[] args) { final @Nullable Command ver = MinecraftServer.getServer().server.getCommandMap().getCommand("version"); - if (ver != null) ver.execute(sender, "plazma", new String[0]); + if (ver != null) ver.execute(sender, "plazma", org.plazmamc.plazma.EmptyConstants.STRING); // Plazma return true; } } diff --git a/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java b/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java index 2621e54879e9ab0029a875f1d09eee67878b90d5..5ebcdcec49d5c54a31d8ca516fa16bba7fc574c7 100644 --- a/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java +++ b/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java @@ -57,7 +57,7 @@ public class PurpurCommand extends Command { } else if (args[0].equalsIgnoreCase("version")) { Command verCmd = org.bukkit.Bukkit.getServer().getCommandMap().getCommand("version"); if (verCmd != null) { - return verCmd.execute(sender, commandLabel, new String[0]); + return verCmd.execute(sender, commandLabel, org.plazmamc.plazma.EmptyConstants.STRING); // Plazma } }