From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: AlphaKR93 Date: Mon, 4 Nov 2024 16:04:46 +0900 Subject: [PATCH] Reduce allocations diff --git a/src/main/java/ca/spottedleaf/moonrise/common/list/EntityList.java b/src/main/java/ca/spottedleaf/moonrise/common/list/EntityList.java index 7fed43a1e7bcf35c4d7fd3224837a47fedd59860..c28b6733aa113c21796329ffe51874406657257e 100644 --- a/src/main/java/ca/spottedleaf/moonrise/common/list/EntityList.java +++ b/src/main/java/ca/spottedleaf/moonrise/common/list/EntityList.java @@ -18,9 +18,9 @@ public final class EntityList implements Iterable { this.entityToIndex.defaultReturnValue(Integer.MIN_VALUE); } - private static final Entity[] EMPTY_LIST = new Entity[0]; + // private static final Entity[] EMPTY_LIST = new Entity[0]; // Plazma - Reduce allocations - private Entity[] entities = EMPTY_LIST; + private Entity[] entities = org.plazmamc.plazma.constants.NullInternal.ENTITY; // Plazma - Reduce allocations private int count; public int size() { diff --git a/src/main/java/ca/spottedleaf/moonrise/common/list/IntList.java b/src/main/java/ca/spottedleaf/moonrise/common/list/IntList.java index 9f3b25bb2439f283f878db93973a02fcdcd14eed..6ac85136d54a057f5adbf9664e14a90db7247b5e 100644 --- a/src/main/java/ca/spottedleaf/moonrise/common/list/IntList.java +++ b/src/main/java/ca/spottedleaf/moonrise/common/list/IntList.java @@ -10,9 +10,9 @@ public final class IntList { this.map.defaultReturnValue(Integer.MIN_VALUE); } - private static final int[] EMPTY_LIST = new int[0]; + // private static final int[] EMPTY_LIST = new int[0]; // Plazma - Reduce allocations - private int[] byIndex = EMPTY_LIST; + private int[] byIndex = org.plazmamc.plazma.constants.Null.INT; // Plazma - Reduce allocations private int count; public int size() { diff --git a/src/main/java/ca/spottedleaf/moonrise/common/list/ReferenceList.java b/src/main/java/ca/spottedleaf/moonrise/common/list/ReferenceList.java index 2e876b918672e8ef3b5197b7e6b1597247fdeaa1..9a962cb155ef7ba33aec6e34881fd03781279073 100644 --- a/src/main/java/ca/spottedleaf/moonrise/common/list/ReferenceList.java +++ b/src/main/java/ca/spottedleaf/moonrise/common/list/ReferenceList.java @@ -7,14 +7,14 @@ import java.util.NoSuchElementException; public final class ReferenceList implements Iterable { - private static final Object[] EMPTY_LIST = new Object[0]; + // private static final Object[] EMPTY_LIST = new Object[0]; // Plazma - Reduce allocations private final Reference2IntOpenHashMap referenceToIndex; private E[] references; private int count; public ReferenceList() { - this((E[])EMPTY_LIST); + this((E[]) org.plazmamc.plazma.constants.Null.OBJECT); // Plazma - Reduce allocations } public ReferenceList(final E[] referenceArray) { diff --git a/src/main/java/ca/spottedleaf/moonrise/common/list/ShortList.java b/src/main/java/ca/spottedleaf/moonrise/common/list/ShortList.java index 2bae9949ef325d0001aa638150fbbdf968367e75..a41e6af4793ba4e0306847ccbd60576369cf4383 100644 --- a/src/main/java/ca/spottedleaf/moonrise/common/list/ShortList.java +++ b/src/main/java/ca/spottedleaf/moonrise/common/list/ShortList.java @@ -10,9 +10,9 @@ public final class ShortList { this.map.defaultReturnValue(Short.MIN_VALUE); } - private static final short[] EMPTY_LIST = new short[0]; + // private static final short[] EMPTY_LIST = new short[0]; // Plazma - Reduce allocations - private short[] byIndex = EMPTY_LIST; + private short[] byIndex = org.plazmamc.plazma.constants.Null.SHORT; // Plazma - Reduce allocations private short count; public int size() { diff --git a/src/main/java/ca/spottedleaf/moonrise/common/list/SortedList.java b/src/main/java/ca/spottedleaf/moonrise/common/list/SortedList.java index db92261a6cb3758391108361096417c61bc82cdc..70ffa0853e04bd1684a36621143c3656a7448f71 100644 --- a/src/main/java/ca/spottedleaf/moonrise/common/list/SortedList.java +++ b/src/main/java/ca/spottedleaf/moonrise/common/list/SortedList.java @@ -6,14 +6,14 @@ import java.util.Comparator; public final class SortedList { - private static final Object[] EMPTY_LIST = new Object[0]; + // private static final Object[] EMPTY_LIST = new Object[0]; // Plazma - Reduce allocations private Comparator comparator; private E[] elements; private int count; public SortedList(final Comparator comparator) { - this((E[])EMPTY_LIST, comparator); + this((E[]) org.plazmamc.plazma.constants.Null.OBJECT, comparator); // Plazma - Reduce allocations } public SortedList(final E[] elements, final Comparator comparator) { diff --git a/src/main/java/ca/spottedleaf/moonrise/common/misc/NearbyPlayers.java b/src/main/java/ca/spottedleaf/moonrise/common/misc/NearbyPlayers.java index 7e440b4a46b040365df7317035e577d93e7d855d..fd30799510b8230e11de10376ff9f781262e8282 100644 --- a/src/main/java/ca/spottedleaf/moonrise/common/misc/NearbyPlayers.java +++ b/src/main/java/ca/spottedleaf/moonrise/common/misc/NearbyPlayers.java @@ -156,7 +156,7 @@ public final class NearbyPlayers { public static final class TrackedChunk { - private static final ServerPlayer[] EMPTY_PLAYERS_ARRAY = new ServerPlayer[0]; + // private static final ServerPlayer[] EMPTY_PLAYERS_ARRAY = new ServerPlayer[0]; // Plazma - Reduce allocations private final long chunkKey; private final NearbyPlayers nearbyPlayers; @@ -188,7 +188,7 @@ public final class NearbyPlayers { final ReferenceList list = this.players[idx]; if (list == null) { ++this.nonEmptyLists; - final ReferenceList players = (this.players[idx] = new ReferenceList<>(EMPTY_PLAYERS_ARRAY)); + final ReferenceList players = (this.players[idx] = new ReferenceList<>(org.plazmamc.plazma.constants.NullInternal.SERVER_PLAYER)); // Plazma - Reduce allocations this.nearbyPlayers.directByChunk[idx].put(this.chunkKey, players); players.add(player); return; diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/ChunkEntitySlices.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/ChunkEntitySlices.java index d21ce54ebb5724c04eadf56a2cde701d5eeb5db2..31d61d0a252fadf26288ff8d3152ea4898c37edc 100644 --- a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/ChunkEntitySlices.java +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/ChunkEntitySlices.java @@ -378,7 +378,7 @@ public final class ChunkEntitySlices { private static final class BasicEntityList { - private static final Entity[] EMPTY = new Entity[0]; + // private static final Entity[] EMPTY = new Entity[0]; // Plazma - Reduce allocations private static final int DEFAULT_CAPACITY = 4; private E[] storage; @@ -389,7 +389,7 @@ public final class ChunkEntitySlices { } public BasicEntityList(final int cap) { - this.storage = (E[])(cap <= 0 ? EMPTY : new Entity[cap]); + this.storage = (E[])(cap <= 0 ? org.plazmamc.plazma.constants.NullInternal.ENTITY : new Entity[cap]); // Plazma - Reduce allocations } public boolean isEmpty() { @@ -401,7 +401,7 @@ public final class ChunkEntitySlices { } private void resize() { - if (this.storage == EMPTY) { + if (this.storage == org.plazmamc.plazma.constants.NullInternal.ENTITY) { // Plazma - Reduce allocations this.storage = (E[])new Entity[DEFAULT_CAPACITY]; } else { this.storage = Arrays.copyOf(this.storage, this.storage.length * 2); diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/server/ServerEntityLookup.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/server/ServerEntityLookup.java index 58d9187adc188b693b6becc400f766e069bf1bf5..a3d186c80840fdb628a48181df219c4629213ab1 100644 --- a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/server/ServerEntityLookup.java +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/server/ServerEntityLookup.java @@ -15,10 +15,10 @@ import net.minecraft.world.level.entity.LevelCallback; public final class ServerEntityLookup extends EntityLookup { - private static final Entity[] EMPTY_ENTITY_ARRAY = new Entity[0]; + // private static final Entity[] EMPTY_ENTITY_ARRAY = new Entity[0]; // Plazma - Reduce allocations private final ServerLevel serverWorld; - public final ReferenceList trackerEntities = new ReferenceList<>(EMPTY_ENTITY_ARRAY); // Moonrise - entity tracker + public final ReferenceList trackerEntities = new ReferenceList<>(org.plazmamc.plazma.constants.NullInternal.ENTITY); // Moonrise - entity tracker // Plazma - Reduce allocations public ServerEntityLookup(final ServerLevel world, final LevelCallback worldCallback) { super(world, worldCallback); diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkTaskScheduler.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkTaskScheduler.java index 67532b85073b7978254a0b04caadfe822679e61f..bebb2f9c07175900f6720af6a249394be6219ed1 100644 --- a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkTaskScheduler.java +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkTaskScheduler.java @@ -938,9 +938,10 @@ public final class ChunkTaskScheduler { } } + private static final ChunkInfo[] EMPTY_ARRAY = new ChunkInfo[0]; // Plazma - Reduce allocations public static ChunkInfo[] getChunkInfos() { synchronized (WAITING_CHUNKS) { - return WAITING_CHUNKS.toArray(new ChunkInfo[0]); + return WAITING_CHUNKS.toArray(EMPTY_ARRAY); // Plazma - Reduce allocations } } diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/NewChunkHolder.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/NewChunkHolder.java index eafa4e6d55cd0f9314ac0f2b96a7f48fbb5e1a4c..19c55571d3478532845d87d0053e41006f87d8f6 100644 --- a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/NewChunkHolder.java +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/NewChunkHolder.java @@ -458,7 +458,7 @@ public final class NewChunkHolder { private ChunkStatus currentGenStatus; // This allows lockless access to the chunk and last gen status - private static final ChunkStatus[] ALL_STATUSES = ChunkStatus.getStatusList().toArray(new ChunkStatus[0]); + private static final ChunkStatus[] ALL_STATUSES = ChunkStatus.getStatusList().toArray(org.plazmamc.plazma.constants.NullInternal.CHUNK_STATUS); // Plazma - Reduce allocations public static final record ChunkCompletion(ChunkAccess chunk, ChunkStatus genStatus) {}; private static final VarHandle CHUNK_COMPLETION_ARRAY_HANDLE = ConcurrentUtil.getArrayHandle(ChunkCompletion[].class); diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/starlight/light/StarLightEngine.java b/src/main/java/ca/spottedleaf/moonrise/patches/starlight/light/StarLightEngine.java index ef40af5c6ac60fe00c05adcb664c811b28330819..097b9c5f8f81fdc547b379dcf5e68ddf6d7bbca4 100644 --- a/src/main/java/ca/spottedleaf/moonrise/patches/starlight/light/StarLightEngine.java +++ b/src/main/java/ca/spottedleaf/moonrise/patches/starlight/light/StarLightEngine.java @@ -1094,6 +1094,7 @@ public abstract class StarLightEngine { } } + private static final AxisDirection[] AXIS_DIRECTION = new AxisDirection[0]; // Plazma - Reduce allocations protected static final AxisDirection[][] OLD_CHECK_DIRECTIONS = new AxisDirection[1 << 6][]; protected static final int ALL_DIRECTIONS_BITSET = (1 << 6) - 1; static { @@ -1102,7 +1103,7 @@ public abstract class StarLightEngine { 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(AXIS_DIRECTION); // Plazma - Reduce allocations } } diff --git a/src/main/java/com/destroystokyo/paper/antixray/ChunkPacketBlockControllerAntiXray.java b/src/main/java/com/destroystokyo/paper/antixray/ChunkPacketBlockControllerAntiXray.java index 4b44053cf7704e3889440361bb4971d7aa03e3ba..52261fdccd1a301733b0a8badce8bc30e5a8cfa9 100644 --- a/src/main/java/com/destroystokyo/paper/antixray/ChunkPacketBlockControllerAntiXray.java +++ b/src/main/java/com/destroystokyo/paper/antixray/ChunkPacketBlockControllerAntiXray.java @@ -97,8 +97,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.constants.NullInternal.BLOCK_STATE); // Plazma - Reduce allocations + presetBlockStatesFull = presetBlockStateSet.isEmpty() ? new BlockState[]{Blocks.DIAMOND_ORE.defaultBlockState()} : presetBlockStateList.toArray(org.plazmamc.plazma.constants.NullInternal.BLOCK_STATE); // Plazma - Reduce allocations presetBlockStatesStone = null; presetBlockStatesDeepslate = null; presetBlockStatesNetherrack = null; diff --git a/src/main/java/io/papermc/paper/command/brigadier/PaperCommands.java b/src/main/java/io/papermc/paper/command/brigadier/PaperCommands.java index 95d3b42cbe2184b0a04d941f27f7a6e643ef59be..b90c330a78c47f27f25ae4f7aff8fddace7122b1 100644 --- a/src/main/java/io/papermc/paper/command/brigadier/PaperCommands.java +++ b/src/main/java/io/papermc/paper/command/brigadier/PaperCommands.java @@ -195,7 +195,7 @@ public class PaperCommands implements Commands, PaperRegistrar { - basicCommand.execute(stack.getSource(), new String[0]); + basicCommand.execute(stack.getSource()); // Plazma - Reduce allocations return com.mojang.brigadier.Command.SINGLE_SUCCESS; }); 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..e4131a152f23dec6d67f3068ec6a2b7e9c1bdc68 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"); // Plazma - Reduce allocations } return true; } diff --git a/src/main/java/io/papermc/paper/plugin/manager/DummyBukkitPluginLoader.java b/src/main/java/io/papermc/paper/plugin/manager/DummyBukkitPluginLoader.java index aef19b44075a3b2e8696315baa89117dd8ebb513..06266ff4d538d7e4d0fda54c533996e777454097 100644 --- a/src/main/java/io/papermc/paper/plugin/manager/DummyBukkitPluginLoader.java +++ b/src/main/java/io/papermc/paper/plugin/manager/DummyBukkitPluginLoader.java @@ -30,7 +30,7 @@ import java.util.regex.Pattern; @ApiStatus.Internal public class DummyBukkitPluginLoader implements PluginLoader { - private static final Pattern[] PATTERNS = new Pattern[0]; + // private static final Pattern[] PATTERNS = new Pattern[0]; // Plazma - Reduce allocations @Override public @NotNull Plugin loadPlugin(@NotNull File file) throws InvalidPluginException, UnknownDependencyException { @@ -62,7 +62,7 @@ public class DummyBukkitPluginLoader implements PluginLoader { @Override public @NotNull Pattern[] getPluginFileFilters() { - return PATTERNS; + return org.plazmamc.plazma.constants.Null.REGEX; // Plazma - Reduce allocations } @Override 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 3e82ea07ca4194844c5528446e2c4a46ff4acee5..066f589952c6c482025b7985494d9cf3e61eadf1 100644 --- a/src/main/java/io/papermc/paper/plugin/manager/PaperPluginInstanceManager.java +++ b/src/main/java/io/papermc/paper/plugin/manager/PaperPluginInstanceManager.java @@ -47,6 +47,7 @@ import java.util.logging.Level; class PaperPluginInstanceManager { private static final FileProviderSource FILE_PROVIDER_SOURCE = new FileProviderSource("File '%s'"::formatted); + private static final JavaPlugin[] EMPTY_PLUGIN = new JavaPlugin[0]; // Plazma - Reduce allocations private final List plugins = new ArrayList<>(); private final Map lookupNames = new HashMap<>(); @@ -68,7 +69,7 @@ class PaperPluginInstanceManager { } public @NotNull Plugin[] getPlugins() { - return this.plugins.toArray(new Plugin[0]); + return this.plugins.toArray(org.bukkit.plugin.SimplePluginManager.EMPTY_PLUGIN); // Plazma - Reduce allocations } public boolean isPluginEnabled(@NotNull String name) { @@ -133,7 +134,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_PLUGIN); // Plazma - Reduce allocations } // The behavior of this is that all errors are logged instead of being thrown @@ -150,7 +151,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_PLUGIN); // Plazma - Reduce allocations } // Plugins are disabled in order like this inorder to "rougly" prevent diff --git a/src/main/java/net/minecraft/CrashReport.java b/src/main/java/net/minecraft/CrashReport.java index 3a5e7546c5cc1fcec880cece3f0d0b04ec23cc18..79f1a9819e9d1353728af3bbb1adceb6fed09c42 100644 --- a/src/main/java/net/minecraft/CrashReport.java +++ b/src/main/java/net/minecraft/CrashReport.java @@ -30,7 +30,7 @@ public class CrashReport { @Nullable private Path saveFile; private boolean trackingStackTrace = true; - private StackTraceElement[] uncategorizedStackTrace = new StackTraceElement[0]; + private StackTraceElement[] uncategorizedStackTrace = CrashReportCategory.EMPTY; // Plazma - Reduce allocations private final SystemReport systemReport = new SystemReport(); private List extraInfo = List.of("", "DO NOT REPORT THIS TO PAPER OR PURPUR! REPORT TO " + io.papermc.paper.ServerBrandConstants.BRAND_NAME.toUpperCase() + " INSTEAD!", ""); // Purpur - Rebrand // Plazma - Fork-friendly Rebranding diff --git a/src/main/java/net/minecraft/CrashReportCategory.java b/src/main/java/net/minecraft/CrashReportCategory.java index 1e9873d7b258ce1f0b2437cb1e487157a16f6834..94f1337bb63a505641b66e6cbf0cc2884a42f2c5 100644 --- a/src/main/java/net/minecraft/CrashReportCategory.java +++ b/src/main/java/net/minecraft/CrashReportCategory.java @@ -10,9 +10,10 @@ import net.minecraft.world.level.LevelHeightAccessor; import net.minecraft.world.level.block.state.BlockState; public class CrashReportCategory { + public static final StackTraceElement[] EMPTY = new StackTraceElement[0]; // Plazma - Reduce allocations private final String title; private final List entries = Lists.newArrayList(); - private StackTraceElement[] stackTrace = new StackTraceElement[0]; + private StackTraceElement[] stackTrace = EMPTY; // Plazma - Reduce allocations 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 38ffa1c4c204f73746c4b87127de92b631548eb1..47d5d23f3cc3a173785c0f4971f97b343ba328df 100644 --- a/src/main/java/net/minecraft/Util.java +++ b/src/main/java/net/minecraft/Util.java @@ -597,7 +597,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.constants.Null.FUTURE)); // Plazma - Reduce allocations return completableFuture.thenApply(void_ -> futures.stream().map(CompletableFuture::join).toList()); } } diff --git a/src/main/java/net/minecraft/nbt/ByteArrayTag.java b/src/main/java/net/minecraft/nbt/ByteArrayTag.java index 06648f9751fd8a322d0809ffebf6a544596ee1a4..63d53f4f0f07533398dbdf07bea47c056bf3436c 100644 --- a/src/main/java/net/minecraft/nbt/ByteArrayTag.java +++ b/src/main/java/net/minecraft/nbt/ByteArrayTag.java @@ -175,7 +175,7 @@ public class ByteArrayTag extends CollectionTag { } public void clear() { - this.data = new byte[0]; + this.data = org.plazmamc.plazma.constants.Null.BYTE; // Plazma - Reduce allocations } @Override diff --git a/src/main/java/net/minecraft/nbt/CompoundTag.java b/src/main/java/net/minecraft/nbt/CompoundTag.java index d7bb00a946346dff0b0269cbd65276e146a63fb0..740e02099278cf4ff055e810e83336c4a7927d8b 100644 --- a/src/main/java/net/minecraft/nbt/CompoundTag.java +++ b/src/main/java/net/minecraft/nbt/CompoundTag.java @@ -409,7 +409,7 @@ public class CompoundTag implements Tag { throw new ReportedException(this.createReport(key, ByteArrayTag.TYPE, var3)); } - return new byte[0]; + return org.plazmamc.plazma.constants.Null.BYTE; // Plazma - Reduce allocations } public int[] getIntArray(String key) { @@ -421,7 +421,7 @@ public class CompoundTag implements Tag { throw new ReportedException(this.createReport(key, IntArrayTag.TYPE, var3)); } - return new int[0]; + return org.plazmamc.plazma.constants.Null.INT; // Plazma - Reduce allocations } public long[] getLongArray(String key) { @@ -433,7 +433,7 @@ public class CompoundTag implements Tag { throw new ReportedException(this.createReport(key, LongArrayTag.TYPE, var3)); } - return new long[0]; + return org.plazmamc.plazma.constants.Null.LONG; // Plazma - Reduce allocations } 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 ff13d67151c50ea11a45117e524c7524e2b1a202..a9bfd74d4110b7740bd80ef2a7bffe1de431072d 100644 --- a/src/main/java/net/minecraft/nbt/IntArrayTag.java +++ b/src/main/java/net/minecraft/nbt/IntArrayTag.java @@ -186,7 +186,7 @@ public class IntArrayTag extends CollectionTag { } public void clear() { - this.data = new int[0]; + this.data = org.plazmamc.plazma.constants.Null.INT; // Plazma - Reduce allocations } @Override diff --git a/src/main/java/net/minecraft/nbt/ListTag.java b/src/main/java/net/minecraft/nbt/ListTag.java index 154bffd341e43be0a0fa710cfbed1a2094f249a3..6fc71dc6a878b073848fb0b078af8d02325478f2 100644 --- a/src/main/java/net/minecraft/nbt/ListTag.java +++ b/src/main/java/net/minecraft/nbt/ListTag.java @@ -258,7 +258,7 @@ public class ListTag extends CollectionTag { } } - return new int[0]; + return org.plazmamc.plazma.constants.Null.INT; // Plazma - Reduce allocations } public long[] getLongArray(int index) { @@ -269,7 +269,7 @@ public class ListTag extends CollectionTag { } } - return new long[0]; + return org.plazmamc.plazma.constants.Null.LONG; // Plazma - Reduce allocations } 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 2e5c34ebb94a1536cf09d71bdf052a49ecb9159d..b1c2bbcec4991818f976e05d56d5695b885a2b14 100644 --- a/src/main/java/net/minecraft/nbt/LongArrayTag.java +++ b/src/main/java/net/minecraft/nbt/LongArrayTag.java @@ -185,7 +185,7 @@ public class LongArrayTag extends CollectionTag { @Override public void clear() { - this.data = new long[0]; + this.data = org.plazmamc.plazma.constants.Null.LONG; // Plazma - Reduce allocations } @Override diff --git a/src/main/java/net/minecraft/nbt/NbtIo.java b/src/main/java/net/minecraft/nbt/NbtIo.java index 9f659af04a5362ae3645d072caa090682760dc9f..93b221625637d58ad2df561d8a47cbcf6360ac1f 100644 --- a/src/main/java/net/minecraft/nbt/NbtIo.java +++ b/src/main/java/net/minecraft/nbt/NbtIo.java @@ -277,7 +277,7 @@ public class NbtIo { @Nullable public static CompoundTag read(Path path) throws IOException { - if (!Files.exists(path, new LinkOption[0])) { + if (!Files.exists(path)) { // Plazma - Reduce allocations return null; } else { InputStream inputstream = Files.newInputStream(path); diff --git a/src/main/java/net/minecraft/network/CipherBase.java b/src/main/java/net/minecraft/network/CipherBase.java index a2920b8a9eff77d9c5d1d7f70ad3abdacba8f0fa..80a28985e072334d960fe5a674d9bb0896f23b24 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.constants.Null.BYTE; // Plazma - Reduce allocations + private byte[] heapOut = org.plazmamc.plazma.constants.Null.BYTE; // Plazma - Reduce allocations 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 8661c1b1cfe2b3db000e1f08814fd4409c4b7fab..26456c0980315d8e38b68630ffeaf657aa02b0a0 100644 --- a/src/main/java/net/minecraft/network/Connection.java +++ b/src/main/java/net/minecraft/network/Connection.java @@ -326,7 +326,7 @@ public class Connection extends SimpleChannelInboundHandler> { } private void validateListener(ProtocolInfo state, PacketListener listener) { - Validate.notNull(listener, "packetListener", new Object[0]); + Validate.notNull(listener, "packetListener"); // Plazma - Reduce allocations PacketFlow enumprotocoldirection = listener.flow(); String s; diff --git a/src/main/java/net/minecraft/network/chat/Component.java b/src/main/java/net/minecraft/network/chat/Component.java index 5941800692ed06e17925ec6526ea38793a65de12..417029cce923ff669bbdd123aebcf7a3220357e3 100644 --- a/src/main/java/net/minecraft/network/chat/Component.java +++ b/src/main/java/net/minecraft/network/chat/Component.java @@ -192,7 +192,7 @@ public interface Component extends Message, FormattedText, Iterable { } static MutableComponent translatable(String key) { - return MutableComponent.create(new TranslatableContents(key, (String) null, TranslatableContents.NO_ARGS)); + return MutableComponent.create(new TranslatableContents(key, (String) null, org.plazmamc.plazma.constants.Null.OBJECT)); // Plazma - Reduce allocations } static MutableComponent translatable(String key, Object... args) { @@ -212,7 +212,7 @@ public interface Component extends Message, FormattedText, Iterable { } static MutableComponent translatableWithFallback(String key, @Nullable String fallback) { - return MutableComponent.create(new TranslatableContents(key, fallback, TranslatableContents.NO_ARGS)); + return MutableComponent.create(new TranslatableContents(key, fallback, org.plazmamc.plazma.constants.Null.OBJECT)); // Plazma - Reduce allocations } static MutableComponent translatableWithFallback(String key, @Nullable String fallback, Object... args) { 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 4aa6232bf0f72fcde32d257100bd15b1c5192aaa..f284c87d5e31fef54a34f8092cc252984be1fcc0 100644 --- a/src/main/java/net/minecraft/network/chat/contents/TranslatableContents.java +++ b/src/main/java/net/minecraft/network/chat/contents/TranslatableContents.java @@ -29,7 +29,7 @@ import net.minecraft.util.ExtraCodecs; 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 = new Object[0]; // Plazma - Reduce allocations private static final Codec PRIMITIVE_ARG_CODEC = ExtraCodecs.JAVA.validate(TranslatableContents::filterAllowedArguments); private static final Codec ARG_CODEC = Codec.either(PRIMITIVE_ARG_CODEC, ComponentSerialization.CODEC) .xmap( @@ -69,7 +69,7 @@ public class TranslatableContents implements ComponentContents { } private static Object[] adjustArgs(Optional> args) { - return args.map(list -> list.isEmpty() ? NO_ARGS : list.toArray()).orElse(NO_ARGS); + return args.map(list -> list.isEmpty() ? org.plazmamc.plazma.constants.Null.OBJECT : list.toArray()).orElse(org.plazmamc.plazma.constants.Null.OBJECT); // Plazma - Reduce allocations } private static TranslatableContents create(String key, Optional fallback, Optional> args) { 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 1a37654aff9a9c86c9f7af10a1cf721371f0c5ec..4c9e70ee96e991aeab7a220aad1f21cd3572f54a 100644 --- a/src/main/java/net/minecraft/network/protocol/game/ClientboundSectionBlocksUpdatePacket.java +++ b/src/main/java/net/minecraft/network/protocol/game/ClientboundSectionBlocksUpdatePacket.java @@ -66,7 +66,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.constants.NullInternal.BLOCK_STATE); // Plazma - Reduce allocations } // Paper end - Multi Block Change API diff --git a/src/main/java/net/minecraft/server/PlayerAdvancements.java b/src/main/java/net/minecraft/server/PlayerAdvancements.java index 1e85c9318ede93b8e9fe548a8945324b5b00e818..0398db8223fe8d9a3fa0a964c0527ef454ddd414 100644 --- a/src/main/java/net/minecraft/server/PlayerAdvancements.java +++ b/src/main/java/net/minecraft/server/PlayerAdvancements.java @@ -130,7 +130,7 @@ public class PlayerAdvancements { } private void load(ServerAdvancementManager advancementLoader) { - if (Files.isRegularFile(this.playerSavePath, new LinkOption[0])) { + if (Files.isRegularFile(this.playerSavePath)) { // Plazma - Reduce allocations 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..aabf0a72e331c78739d61e2bd9c1dfc0056f4329 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(net.minecraft.CrashReportCategory.EMPTY); // Plazma - Reduce allocations } @Override public synchronized Throwable fillInStackTrace() { - this.setStackTrace(new StackTraceElement[0]); + this.setStackTrace(net.minecraft.CrashReportCategory.EMPTY); // Plazma - Reduce allocations return this; } } diff --git a/src/main/java/net/minecraft/server/ServerFunctionLibrary.java b/src/main/java/net/minecraft/server/ServerFunctionLibrary.java index fa5d4bfd52eb36e48fc811dbbdc1341204cf171d..08368a34c18c78d962e8a853569eaa091953a34c 100644 --- a/src/main/java/net/minecraft/server/ServerFunctionLibrary.java +++ b/src/main/java/net/minecraft/server/ServerFunctionLibrary.java @@ -93,7 +93,7 @@ public class ServerFunctionLibrary implements PreparableReloadListener { }, prepareExecutor)); } - CompletableFuture[] completableFutures = map.values().toArray(new CompletableFuture[0]); + CompletableFuture[] completableFutures = map.values().toArray(org.plazmamc.plazma.constants.Null.FUTURE); // Plazma - Reduce allocations return CompletableFuture.allOf(completableFutures).handle((unused, ex) -> map); } ); diff --git a/src/main/java/net/minecraft/server/level/ChunkHolder.java b/src/main/java/net/minecraft/server/level/ChunkHolder.java index 8dd9375f2ad2c65a773a3195aeff1f977e09e7e0..89cfe5a4e1554dd722ca98ec8c896e851fbf939a 100644 --- a/src/main/java/net/minecraft/server/level/ChunkHolder.java +++ b/src/main/java/net/minecraft/server/level/ChunkHolder.java @@ -50,8 +50,8 @@ public class ChunkHolder extends GenerationChunkHolder implements ca.spottedleaf // Paper start - rewrite chunk system private ca.spottedleaf.moonrise.patches.chunk_system.scheduling.NewChunkHolder newChunkHolder; - private static final ServerPlayer[] EMPTY_PLAYER_ARRAY = new ServerPlayer[0]; - private final ca.spottedleaf.moonrise.common.list.ReferenceList playersSentChunkTo = new ca.spottedleaf.moonrise.common.list.ReferenceList<>(EMPTY_PLAYER_ARRAY); + // private static final ServerPlayer[] EMPTY_PLAYER_ARRAY = new ServerPlayer[0]; // Plazma - Reduce allocations + private final ca.spottedleaf.moonrise.common.list.ReferenceList playersSentChunkTo = new ca.spottedleaf.moonrise.common.list.ReferenceList<>(org.plazmamc.plazma.constants.NullInternal.SERVER_PLAYER); // Plazma - Reduce allocations private ChunkMap getChunkMap() { return (ChunkMap)this.playerProvider; diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java index 25b646c973cc1d304b8adb3cef4cf443d459b489..df0f52ee12eeab816c8920d6844a284239143054 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1366,7 +1366,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe 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.constants.NullInternal.ENTITY : new Entity[] { ticking }); // Plazma - Reduce allocations return ret; } diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java index ab6a7d20f5473d8bffa7f8d136c1d55f17bbfaff..dce1796f0a7dbc69596b0348f42fe8d5fec1d2fa 100644 --- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java @@ -172,12 +172,12 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, @Override public void handleHello(ServerboundHelloPacket packet) { - Validate.validState(this.state == ServerLoginPacketListenerImpl.State.HELLO, "Unexpected hello packet", new Object[0]); + Validate.validState(this.state == ServerLoginPacketListenerImpl.State.HELLO, "Unexpected hello packet"); // Plazma - Reduce allocations // Paper start - Validate usernames if (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.isProxyOnlineMode() && io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.performUsernameValidation && !this.iKnowThisMayNotBeTheBestIdeaButPleaseDisableUsernameValidation) { - Validate.validState(StringUtil.isReasonablePlayerName(packet.name()), "Invalid characters in username", new Object[0]); + Validate.validState(StringUtil.isReasonablePlayerName(packet.name()), "Invalid characters in username"); // Plazma - Reduce allocations } // Paper end - Validate usernames this.requestedUsername = packet.name(); @@ -266,7 +266,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"); // Plazma - Reduce allocations final String s; @@ -447,7 +447,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, @Override public void handleLoginAcknowledgement(ServerboundLoginAcknowledgedPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.server); // CraftBukkit - Validate.validState(this.state == ServerLoginPacketListenerImpl.State.PROTOCOL_SWITCHING, "Unexpected login acknowledgement packet", new Object[0]); + Validate.validState(this.state == ServerLoginPacketListenerImpl.State.PROTOCOL_SWITCHING, "Unexpected login acknowledgement packet"); // Plazma - Reduce allocations this.connection.setupOutboundProtocol(ConfigurationProtocols.CLIENTBOUND); CommonListenerCookie commonlistenercookie = CommonListenerCookie.createInitial((GameProfile) Objects.requireNonNull(this.authenticatedProfile), this.transferred); ServerConfigurationPacketListenerImpl serverconfigurationpacketlistenerimpl = new ServerConfigurationPacketListenerImpl(this.server, this.connection, commonlistenercookie, this.player); // CraftBukkit diff --git a/src/main/java/net/minecraft/server/players/StoredUserList.java b/src/main/java/net/minecraft/server/players/StoredUserList.java index 0735a0bd182635e1969d19336b46bc72b14e555f..efa47456c3be9a168457bfb19878a93ab26172f3 100644 --- a/src/main/java/net/minecraft/server/players/StoredUserList.java +++ b/src/main/java/net/minecraft/server/players/StoredUserList.java @@ -64,7 +64,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.constants.Null.STRING); // Plazma - Reduce allocations } public boolean isEmpty() { diff --git a/src/main/java/net/minecraft/util/ZeroBitStorage.java b/src/main/java/net/minecraft/util/ZeroBitStorage.java index 1f9c436a632e4f110be61cf76fcfc3b7eb80334e..9dba696fd7a26248bd25c7af783c6ca132bb77d9 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 - Reduce allocations 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.constants.Null.LONG; // Plazma - Reduce allocations } @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 a371f685534bf161f476ccea431fec6a80aca9c1..d2addf2453fa35779f0197f54a102e068d9b0f66 100644 --- a/src/main/java/net/minecraft/util/monitoring/jmx/MinecraftServerStatistics.java +++ b/src/main/java/net/minecraft/util/monitoring/jmx/MinecraftServerStatistics.java @@ -26,6 +26,7 @@ import net.minecraft.server.MinecraftServer; import org.slf4j.Logger; public final class MinecraftServerStatistics implements DynamicMBean { + private static final MBeanNotificationInfo[] EMPTY_INFO = new MBeanNotificationInfo[0]; // Plazma - Reduce allocations private static final Logger LOGGER = LogUtils.getLogger(); private final MinecraftServer server; private final MBeanInfo mBeanInfo; @@ -43,7 +44,7 @@ public final class MinecraftServerStatistics implements DynamicMBean { .map(MinecraftServerStatistics.AttributeDescription::asMBeanAttributeInfo) .toArray(MBeanAttributeInfo[]::new); this.mBeanInfo = new MBeanInfo( - MinecraftServerStatistics.class.getSimpleName(), "metrics for dedicated server", mBeanAttributeInfos, null, null, new MBeanNotificationInfo[0] + MinecraftServerStatistics.class.getSimpleName(), "metrics for dedicated server", mBeanAttributeInfos, null, null, EMPTY_INFO // Plazma - Reduce allocations ); } 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 d83f75719a3be1b5b2c544d89b63a4df420c73d2..f3b1671a815c953435bf49616ab7c35856bdc352 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java @@ -261,7 +261,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 - Ridables - this.targetSelector.addGoal(1, (new Bee.BeeHurtByOtherGoal(this)).setAlertOthers(new Class[0])); + this.targetSelector.addGoal(1, (new Bee.BeeHurtByOtherGoal(this)).setAlertOthers()); // Plazma - Reduce allocations 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 1c918dfcb8b3c05394fea6dcc50c5bfc48cb3634..24a05c3b18690656ce5305c0e4d118f635cc9b6a 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java @@ -123,7 +123,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 - Ridables this.targetSelector.addGoal(1, new DefendVillageTargetGoal(this)); - this.targetSelector.addGoal(2, new HurtByTargetGoal(this, new Class[0])); + this.targetSelector.addGoal(2, new HurtByTargetGoal(this)); // Plazma - Reduce allocations 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, worldserver) -> { 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 adeb06f913b53d802f03d3def1303e298fe589e4..d2b6ec6f1cbae2063240210695f73e96ed8c436a 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java @@ -342,7 +342,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 - Ridables - this.targetSelector.addGoal(1, (new Panda.PandaHurtByTargetGoal(this, new Class[0])).setAlertOthers(new Class[0])); + this.targetSelector.addGoal(1, (new Panda.PandaHurtByTargetGoal(this)).setAlertOthers()); // Plazma - Reduce allocations } 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 761745f759614c43426b1bdf7bc8ca7b5aff100a..777764b74ac6e809b4b353117a0f31299bb651e3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java @@ -462,7 +462,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 MeleeAttackGoal(this, 1.4D, true)); - this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[0])).setAlertOthers()); + this.targetSelector.addGoal(1, (new HurtByTargetGoal(this)).setAlertOthers()); // Plazma - Reduce allocations this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Wolf.class, true)); this.getAttribute(Attributes.ATTACK_DAMAGE).addOrUpdateTransientModifier(new AttributeModifier(Rabbit.EVIL_ATTACK_POWER_MODIFIER, 5.0D, AttributeModifier.Operation.ADD_VALUE)); 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 9f4681cb70f0e42e07968024cee010990644ba53..a736db8b5764a47511433887ff1db702179e9d59 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java @@ -252,7 +252,7 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder(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/animal/allay/Allay.java b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java index 634e11a1c279066c7bf682776344f1c829e061a4..502277270c38cfcbd686455552d2b54701774e5f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java +++ b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java @@ -88,7 +88,7 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS private static final EntityDataAccessor DATA_DANCING = SynchedEntityData.defineId(Allay.class, EntityDataSerializers.BOOLEAN); private static final EntityDataAccessor DATA_CAN_DUPLICATE = SynchedEntityData.defineId(Allay.class, EntityDataSerializers.BOOLEAN); protected static final ImmutableList>> SENSOR_TYPES = ImmutableList.of(SensorType.NEAREST_LIVING_ENTITIES, SensorType.NEAREST_PLAYERS, SensorType.HURT_BY, SensorType.NEAREST_ITEMS); - protected static final ImmutableList> MEMORY_TYPES = ImmutableList.of(MemoryModuleType.PATH, MemoryModuleType.LOOK_TARGET, MemoryModuleType.NEAREST_VISIBLE_LIVING_ENTITIES, MemoryModuleType.WALK_TARGET, MemoryModuleType.CANT_REACH_WALK_TARGET_SINCE, MemoryModuleType.HURT_BY, MemoryModuleType.NEAREST_VISIBLE_WANTED_ITEM, MemoryModuleType.LIKED_PLAYER, MemoryModuleType.LIKED_NOTEBLOCK_POSITION, MemoryModuleType.LIKED_NOTEBLOCK_COOLDOWN_TICKS, MemoryModuleType.ITEM_PICKUP_COOLDOWN_TICKS, MemoryModuleType.IS_PANICKING, new MemoryModuleType[0]); + protected static final ImmutableList> MEMORY_TYPES = ImmutableList.of(MemoryModuleType.PATH, MemoryModuleType.LOOK_TARGET, MemoryModuleType.NEAREST_VISIBLE_LIVING_ENTITIES, MemoryModuleType.WALK_TARGET, MemoryModuleType.CANT_REACH_WALK_TARGET_SINCE, MemoryModuleType.HURT_BY, MemoryModuleType.NEAREST_VISIBLE_WANTED_ITEM, MemoryModuleType.LIKED_PLAYER, MemoryModuleType.LIKED_NOTEBLOCK_POSITION, MemoryModuleType.LIKED_NOTEBLOCK_COOLDOWN_TICKS, MemoryModuleType.ITEM_PICKUP_COOLDOWN_TICKS, MemoryModuleType.IS_PANICKING); // Plazma - Reduce allocations public static final ImmutableList THROW_SOUND_PITCHES = ImmutableList.of(0.5625F, 0.625F, 0.75F, 0.9375F, 1.0F, 1.0F, 1.125F, 1.25F, 1.5F, 1.875F, 2.0F, 2.25F, new Float[]{2.5F, 3.0F, 3.75F, 4.0F}); private final DynamicGameEventListener dynamicVibrationListener; private VibrationSystem.Data vibrationData; diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/phases/EnderDragonPhase.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/phases/EnderDragonPhase.java index 48826eb0a960f7af6dd2ef184a8aed744a1d8f83..495a24d4e6705902c36032227bdfa3591ea940de 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/phases/EnderDragonPhase.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/phases/EnderDragonPhase.java @@ -5,7 +5,8 @@ import java.util.Arrays; import net.minecraft.world.entity.boss.enderdragon.EnderDragon; public class EnderDragonPhase { - private static EnderDragonPhase[] phases = new EnderDragonPhase[0]; + private static final EnderDragonPhase[] EMPTY_PHASES = new EnderDragonPhase[0]; // Plazma - Reduce allocations + private static EnderDragonPhase[] phases = EMPTY_PHASES; // Plazma - Reduce allocations public static final EnderDragonPhase HOLDING_PATTERN = create(DragonHoldingPatternPhase.class, "HoldingPattern"); public static final EnderDragonPhase STRAFE_PLAYER = create(DragonStrafePlayerPhase.class, "StrafePlayer"); public static final EnderDragonPhase LANDING_APPROACH = create(DragonLandingApproachPhase.class, "LandingApproach"); 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 08bff1102179551eeeeed7f65aaa1ab501ca8683..91839fc6b8013c31d562c21670985d42747bfdce 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 @@ -260,7 +260,7 @@ public class WitherBoss extends Monster implements 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 - Ridables - this.targetSelector.addGoal(1, new HurtByTargetGoal(this, new Class[0])); + this.targetSelector.addGoal(1, new HurtByTargetGoal(this)); // Plazma - Reduce allocations 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 2ff72241928a1d07be936cd764e7408d202f39e0..334cc9474e0a81c34babffc22e25d52c6e2fbf17 100644 --- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java @@ -83,7 +83,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 - Ridables - this.targetSelector.addGoal(1, new HurtByTargetGoal(this, new Class[0])); + this.targetSelector.addGoal(1, new HurtByTargetGoal(this)); // Plazma - Reduce allocations 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 7a6c3eb850e463a64bfc23c7d3c46ddabeeb251d..a346f13be03481311a18f3778fed6e0d4343d15e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java @@ -161,7 +161,7 @@ public class Creeper extends Monster { this.goalSelector.addGoal(6, new RandomLookAroundGoal(this)); this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables 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)); // Plazma - Reduce allocations } 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 017c86be270ae395be84f6bc30c9288af6278fb7..6a6e2856e8bd361880dcc91638f74f98fa9bf3b0 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -137,7 +137,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 - Ridables 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)); // Plazma - Reduce allocations this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Endermite.class, 10, true, false, (entityliving, ignored) -> 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/Endermite.java b/src/main/java/net/minecraft/world/entity/monster/Endermite.java index fd292373f5f8bf6f5773d5eea1a7470e8eae4231..0aa7d7ceccf77fac4d43d6c2fc814e4b1aec4dd3 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Endermite.java +++ b/src/main/java/net/minecraft/world/entity/monster/Endermite.java @@ -94,7 +94,7 @@ public class Endermite extends Monster { this.goalSelector.addGoal(7, new LookAtPlayerGoal(this, Player.class, 8.0F)); this.goalSelector.addGoal(8, new RandomLookAroundGoal(this)); this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables - this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[0])).setAlertOthers()); + this.targetSelector.addGoal(1, (new HurtByTargetGoal(this)).setAlertOthers()); // Plazma - Reduce allocations this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); } 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 78aec4acc84b228537f90172f2e4c346b665bc0b..6fec80e4b8911b5cf2849904f060e05042477117 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java +++ b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java @@ -92,7 +92,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 - Ridables - this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[0])).setAlertOthers()); + this.targetSelector.addGoal(1, (new HurtByTargetGoal(this)).setAlertOthers()); // Plazma - Reduce allocations 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 49fa54b2d46c916d8f43c78080ea04eb37e60717..e4144c76d541158b2fc5699158608123802dd453 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Spider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Spider.java @@ -100,7 +100,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 - Ridables - this.targetSelector.addGoal(1, new HurtByTargetGoal(this, new Class[0])); + this.targetSelector.addGoal(1, new HurtByTargetGoal(this)); // Plazma - Reduce allocations 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 68a928e42df03f111cfc000945a6020e484e6e7f..e5a8343542339036475e3d23958121e9d388fd44 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -174,7 +174,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)).setAlertOthers(ZombifiedPiglin.class)); // Plazma - Reduce allocations 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 c0e611f3222ffacfbd0683c8c65b778f9012a2ad..15a18f3cc7f37860d8137d8f5f8d91834610e7a6 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 - fix PigZombieAngerEvent cancellation + this.targetSelector.addGoal(1, pathfinderGoalHurtByTarget = (new HurtByTargetGoal(this)).setAlertOthers()); // Paper - fix PigZombieAngerEvent cancellation // Plazma - Reduce allocations 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/inventory/SlotRanges.java b/src/main/java/net/minecraft/world/inventory/SlotRanges.java index 52471449f59f6a50fdacc3d7a6d64f5ed37b995a..58912bf516db67c3e46fc70327f12edff27a28b9 100644 --- a/src/main/java/net/minecraft/world/inventory/SlotRanges.java +++ b/src/main/java/net/minecraft/world/inventory/SlotRanges.java @@ -14,6 +14,7 @@ import net.minecraft.util.StringRepresentable; import net.minecraft.world.entity.EquipmentSlot; public class SlotRanges { + private static final SlotRange[] EMPTY_ARRAY = new SlotRange[0]; // Plazma - Reduce allocations private static final List SLOTS = Util.make(new ArrayList<>(), list -> { addSingleSlot(list, "contents", 0); addSlotRange(list, "container.", 0, 54); @@ -44,8 +45,8 @@ public class SlotRanges { addSingleSlot(list, "player.cursor", 499); addSlotRange(list, "player.crafting.", 500, 4); }); - public static final Codec CODEC = StringRepresentable.fromValues(() -> SLOTS.toArray(new SlotRange[0])); - private static final Function NAME_LOOKUP = StringRepresentable.createNameLookup(SLOTS.toArray(new SlotRange[0]), name -> name); + public static final Codec CODEC = StringRepresentable.fromValues(() -> SLOTS.toArray(EMPTY_ARRAY)); // Plazma - Reduce allocations + private static final Function NAME_LOOKUP = StringRepresentable.createNameLookup(SLOTS.toArray(EMPTY_ARRAY), name -> name); // Plazma - Reduce allocations private static SlotRange create(String name, int slotId) { return SlotRange.of(name, IntLists.singleton(slotId)); diff --git a/src/main/java/net/minecraft/world/item/crafting/ShapedRecipePattern.java b/src/main/java/net/minecraft/world/item/crafting/ShapedRecipePattern.java index 2490a42c9c35c7e080279ef8566288a28362d167..34d6eaebfe03716c8cbbb5395024b0dad3781809 100644 --- a/src/main/java/net/minecraft/world/item/crafting/ShapedRecipePattern.java +++ b/src/main/java/net/minecraft/world/item/crafting/ShapedRecipePattern.java @@ -121,7 +121,7 @@ public final class ShapedRecipePattern { } if (pattern.size() == l) { - return new String[0]; + return org.plazmamc.plazma.constants.Null.STRING; // Plazma - Reduce allocations } else { String[] strings = new String[pattern.size() - l - k]; 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 e5e8a4e71c3caf35c50803b7b966cd34adafc647..bbc92b0c8d8d43d442f39640f6929a81be980006 100644 --- a/src/main/java/net/minecraft/world/level/block/ComposterBlock.java +++ b/src/main/java/net/minecraft/world/level/block/ComposterBlock.java @@ -464,7 +464,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.Constants.ZERO_INT_ARRAY : org.plazmamc.plazma.constants.Null.INT; // Plazma - Reduce allocations } @Override @@ -513,7 +513,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 ? new int[]{0} : org.plazmamc.plazma.constants.Null.INT; // Plazma - Reduce allocations } @Override @@ -555,7 +555,7 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder { @Override public int[] getSlotsForFace(Direction side) { - return new int[0]; + return org.plazmamc.plazma.constants.Null.INT; // Plazma - Reduce allocations } @Override diff --git a/src/main/java/net/minecraft/world/level/chunk/status/ChunkStep.java b/src/main/java/net/minecraft/world/level/chunk/status/ChunkStep.java index f9aad1b8c02b70e620efdc2a58cadf4fff0f3ed5..ccfddd8c47572561238bd27fced90e1c36a53dc3 100644 --- a/src/main/java/net/minecraft/world/level/chunk/status/ChunkStep.java +++ b/src/main/java/net/minecraft/world/level/chunk/status/ChunkStep.java @@ -144,7 +144,7 @@ public final class ChunkStep implements ca.spottedleaf.moonrise.patches.chunk_sy } else { this.status = targetStatus; this.parent = null; - this.directDependenciesByRadius = new ChunkStatus[0]; + this.directDependenciesByRadius = org.plazmamc.plazma.constants.NullInternal.CHUNK_STATUS; // Plazma - Reduce allocations } } 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 16f07007a0f73ec0c6f421c9b082518e87e8cc7b..c08c0096eeac2d184256c703f38b230d7ad8ee9f 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 @@ -426,7 +426,7 @@ public class RegionFile implements AutoCloseable, ca.spottedleaf.moonrise.patche this.path = path; initOversizedState(); // Paper this.version = compressionFormat; - if (!Files.isDirectory(directory, new LinkOption[0])) { + if (!Files.isDirectory(directory)) { // Plazma - Reduce allocations throw new IllegalArgumentException("Expected directory, got " + String.valueOf(directory.toAbsolutePath())); } else { this.externalFileDir = directory; @@ -709,7 +709,7 @@ public class RegionFile implements AutoCloseable, ca.spottedleaf.moonrise.patche // Paper end - rewrite chunk system Path path = this.getExternalChunkPath(pos); - if (!Files.isRegularFile(path, new LinkOption[0])) { + if (!Files.isRegularFile(path)) { // Plazma - Reduce allocations RegionFile.LOGGER.error("External chunk path {} is not file", path); return null; } else { @@ -761,7 +761,7 @@ public class RegionFile implements AutoCloseable, ca.spottedleaf.moonrise.patche return false; } - if (!Files.isRegularFile(this.getExternalChunkPath(pos), new LinkOption[0])) { + if (!Files.isRegularFile(this.getExternalChunkPath(pos))) { // Plazma - Reduce allocations 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 749a082d23b59ab6b02fd3fcfddb5ca8c19b639b..42c365f504dadaeae37ebf9a328baa294a7f6e7e 100644 --- a/src/main/java/net/minecraft/world/level/levelgen/DebugLevelSource.java +++ b/src/main/java/net/minecraft/world/level/levelgen/DebugLevelSource.java @@ -86,7 +86,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.constants.NullInternal.BLOCK_STATE); // Plazma - Reduce allocations } @Override 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 cdca5ae69991cc068bfbc0686b5defb3604a5440..47108aa61105928fd383aec87c4f4220b00f93ae 100644 --- a/src/main/java/net/minecraft/world/level/storage/LevelStorageSource.java +++ b/src/main/java/net/minecraft/world/level/storage/LevelStorageSource.java @@ -108,7 +108,7 @@ public class LevelStorageSource { } public static DirectoryValidator parseValidator(Path allowedSymlinksFile) { - if (Files.exists(allowedSymlinksFile, new LinkOption[0])) { + if (Files.exists(allowedSymlinksFile)) { // Plazma - Reduce allocations try { BufferedReader bufferedreader = Files.newBufferedReader(allowedSymlinksFile); @@ -177,7 +177,7 @@ public class LevelStorageSource { } public LevelStorageSource.LevelCandidates findLevelCandidates() throws LevelStorageException { - if (!Files.isDirectory(this.baseDir, new LinkOption[0])) { + if (!Files.isDirectory(this.baseDir)) { // Plazma - Reduce allocations throw new LevelStorageException(Component.translatable("selectWorld.load_folder_access")); } else { try { @@ -187,9 +187,9 @@ public class LevelStorageSource { try { List list = stream.filter((path) -> { - return Files.isDirectory(path, new LinkOption[0]); + return Files.isDirectory(path); // Plazma - Reduce allocations }).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()) || Files.isRegularFile(convertable_b.oldDataFile()); // Plazma - Reduce allocations }).toList(); convertable_a = new LevelStorageSource.LevelCandidates(list); @@ -301,7 +301,7 @@ public class LevelStorageSource { private LevelSummary readLevelSummary(LevelStorageSource.LevelDirectory save, boolean locked) { Path path = save.dataFile(); - if (Files.exists(path, new LinkOption[0])) { + if (Files.exists(path)) { // Plazma - Reduce allocations try { if (Files.isSymbolicLink(path)) { List list = this.worldDirValidator.validateSymlink(path); @@ -400,7 +400,7 @@ public class LevelStorageSource { public boolean levelExists(String name) { try { - return Files.isDirectory(this.getLevelPath(name), new LinkOption[0]); + return Files.isDirectory(this.getLevelPath(name)); // Plazma - Reduce allocations } catch (InvalidPathException invalidpathexception) { return false; } @@ -753,7 +753,7 @@ public class LevelStorageSource { } public boolean hasWorldData() { - return Files.exists(this.levelDirectory.dataFile(), new LinkOption[0]) || Files.exists(this.levelDirectory.oldDataFile(), new LinkOption[0]); + return Files.exists(this.levelDirectory.dataFile()) || Files.exists(this.levelDirectory.oldDataFile()); // Plazma - Reduce allocations } public void close() throws IOException { 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 b148cf247acdd36f856d0495cde4cc5ad32b5a2f..e0bd48d9791f59e14bd0bbddc15b3500e41f3378 100644 --- a/src/main/java/net/minecraft/world/level/storage/PlayerDataStorage.java +++ b/src/main/java/net/minecraft/world/level/storage/PlayerDataStorage.java @@ -60,7 +60,7 @@ public class PlayerDataStorage { // s1 = entityhuman.getStringUUID(); // CraftBukkit - used above Path path2 = path.resolve(s1 + "_corrupted_" + LocalDateTime.now().format(PlayerDataStorage.FORMATTER) + s); - if (Files.isRegularFile(path1, new LinkOption[0])) { + if (Files.isRegularFile(path1)) { // Plazma - Reduce allocations try { Files.copy(path1, path2, StandardCopyOption.REPLACE_EXISTING, StandardCopyOption.COPY_ATTRIBUTES); } catch (Exception exception) { diff --git a/src/main/java/net/minecraft/world/scores/Team.java b/src/main/java/net/minecraft/world/scores/Team.java index b968d22e149bf9063f14167fe9856868e5933303..a45be27cdbb66d42f7632fa1a685039620fc5cd6 100644 --- a/src/main/java/net/minecraft/world/scores/Team.java +++ b/src/main/java/net/minecraft/world/scores/Team.java @@ -70,7 +70,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.constants.Null.STRING); // Plazma - Reduce allocations } @Nullable diff --git a/src/main/java/org/bukkit/craftbukkit/bootstrap/Main.java b/src/main/java/org/bukkit/craftbukkit/bootstrap/Main.java index 8a4f95049c63afb28bef6719c77b7a7092e75aae..f295205e3093f8c3c4ed4c1cf6ac3aaf5ea61c53 100644 --- a/src/main/java/org/bukkit/craftbukkit/bootstrap/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/bootstrap/Main.java @@ -50,7 +50,7 @@ public class Main { System.exit(0); } - URLClassLoader classLoader = new URLClassLoader(extractedUrls.toArray(new URL[0])); + URLClassLoader classLoader = new URLClassLoader(extractedUrls.toArray(org.plazmamc.plazma.constants.Null.URL)); // Plazma - Reduce allocations System.out.println("Starting server"); Thread runThread = new Thread(() -> { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java index c2df3c38f58d8dcb5e3d62077655af56a3bffd65..20ffe2ac1a7ad4549f46855abdfa0579bcaf82ff 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -521,7 +521,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void sendTitle(com.destroystokyo.paper.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.constants.Null.COMPONENT : title.getSubtitle()); // Plazma - Reduce allocations 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 70f20de37c1f8d57a8d9fe00dcd864fdd9948ec2..80758c071b9d88e699214679d48da1570469dc19 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java @@ -447,7 +447,7 @@ public class CraftMetaBook extends CraftMetaItem implements BookMeta, WritableBo 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.constants.Null.COMPONENT : text; // Plazma - Reduce allocations CraftMetaBook.this.pages.set(page - 1, this.componentsToPage(newText)); } @@ -460,7 +460,7 @@ public class CraftMetaBook extends CraftMetaItem implements BookMeta, WritableBo public void addPage(final BaseComponent[]... pages) { for (BaseComponent[] page : pages) { if (page == null) { - page = new BaseComponent[0]; + page = org.plazmamc.plazma.constants.Null.COMPONENT; // Plazma - Reduce allocations } CraftMetaBook.this.internalAddPage(this.componentsToPage(page)); diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBookSigned.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBookSigned.java index 040dac82e484cb44b3afd444b4bbd1fd994bfe7c..347c2783d069019ab177f885469d5acc2a778bbe 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBookSigned.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBookSigned.java @@ -399,7 +399,7 @@ public class CraftMetaBookSigned extends CraftMetaItem implements BookMeta { throw new IllegalArgumentException("Invalid page number " + page + "/" + CraftMetaBookSigned.this.getPageCount()); } - BaseComponent[] newText = text == null ? new BaseComponent[0] : text; + BaseComponent[] newText = text == null ? org.plazmamc.plazma.constants.Null.COMPONENT : text; // Plazma - Reduce allocations CraftMetaBookSigned.this.pages.set(page - 1, this.componentsToPage(newText)); } @@ -412,7 +412,7 @@ public class CraftMetaBookSigned 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.constants.Null.COMPONENT; // Plazma - Reduce allocations } CraftMetaBookSigned.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 b25dc23b81687dd4d4e70b3615ffb91f8c03c68b..58226a58f663980b7313e3367f33ecd37dcdfb8c 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.constants.Null.OBJECT); // Plazma - Reduce allocations } @Override diff --git a/src/main/java/org/plazmamc/plazma/commands/plazma/subcommand/VersionCommand.java b/src/main/java/org/plazmamc/plazma/commands/plazma/subcommand/VersionCommand.java index b6664ba0fce55f5cfa0c8d3051dc8c2be0fd0703..4d3c3c7fb0ebb472623580d0a56dc89a4cfffbeb 100644 --- a/src/main/java/org/plazmamc/plazma/commands/plazma/subcommand/VersionCommand.java +++ b/src/main/java/org/plazmamc/plazma/commands/plazma/subcommand/VersionCommand.java @@ -14,7 +14,7 @@ public class VersionCommand implements PlazmaSubCommand { @Override 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) return ver.execute(sender, "plazma", new String[0]); + if (ver != null) return ver.execute(sender, "plazma"); // Plazma - Reduce allocations return false; } diff --git a/src/main/java/org/plazmamc/plazma/constants/NullInternal.java b/src/main/java/org/plazmamc/plazma/constants/NullInternal.java new file mode 100644 index 0000000000000000000000000000000000000000..d8119f5085411c96a3484bad5c44eade296e34e9 --- /dev/null +++ b/src/main/java/org/plazmamc/plazma/constants/NullInternal.java @@ -0,0 +1,15 @@ +package org.plazmamc.plazma.constants; + +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.chunk.status.ChunkStatus; + +public interface NullInternal { + + Entity[] ENTITY = new Entity[0]; + ServerPlayer[] SERVER_PLAYER = new ServerPlayer[0]; + ChunkStatus[] CHUNK_STATUS = new ChunkStatus[0]; + BlockState[] BLOCK_STATE = new BlockState[0]; + +} diff --git a/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java b/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java index 2621e54879e9ab0029a875f1d09eee67878b90d5..6d1b463e4cb6cf482d6a2f2be37376caac79b992 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); // Plazma - Reduce allocations } }