Compare commits

...

3 Commits

Author SHA1 Message Date
IPECTER
f0e1e58914 Reduce allocations
removed all array allocations except two!
2023-05-30 16:35:02 +09:00
github-actions[bot]
6bf0230eb6 Updated Upstream (Paper)
Upstream has released updates that appear to apply and compile correctly

Paper Changes:
PaperMC/Paper@f9f9079 Pull a few Folia patches
2023-05-27 18:56:30 +00:00
github-actions[bot]
11623bf432 Updated Upstream (Paper)
Upstream has released updates that appear to apply and compile correctly

Paper Changes:
PaperMC/Paper@90a0835 Fix incremental player saving patch
2023-05-27 18:26:38 +00:00
43 changed files with 2548 additions and 6 deletions

View File

@@ -1,7 +1,7 @@
group = org.plazmamc.plazma
version = 1.19.4-R0.1-SNAPSHOT
paperCommit = bcd8dc2c1189293c4fc0b57048f0f0668c1b7e60
paperCommit = f9f90791e43f396ed12be5e0e8867691fc87dbe7
org.gradle.caching = true
org.gradle.parallel = true

View File

@@ -3190,7 +3190,7 @@ index d190bad5d287766ed4165ed827d9901a9d878687..13594b96cc8f451723c3598ef302ccee
// CraftBukkit start
diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java
index 1b80a91fa36c59a31b57ef7ef4a68eacbb0f17f5..b5e118456af6421ae3f85cb8232dc97a8b2d46b7 100644
index 854865f28bcae0fb0c17717c914687f78e951e21..c6297917e94f5a8b4b1447b2c29c44b806ccaff6 100644
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java
@@ -27,6 +27,7 @@ public class LevelChunkSection {
@@ -3217,7 +3217,7 @@ index 1b80a91fa36c59a31b57ef7ef4a68eacbb0f17f5..b5e118456af6421ae3f85cb8232dc97a
}
this.updateKnownBlockInfo(x | (z << 4) | (y << 8), iblockdata1, state); // Paper
@@ -260,6 +263,7 @@ public class LevelChunkSection {
@@ -261,6 +264,7 @@ public class LevelChunkSection {
if (fluid.isRandomlyTicking()) {
this.tickingFluidCount = (short) (this.tickingFluidCount + 1);
}

View File

@@ -0,0 +1,60 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: IPECTER <ipectert@gmail.com>
Date: Tue, 30 May 2023 12:12:29 +0900
Subject: [PATCH] MC-Dev-fixes
diff --git a/src/main/java/net/minecraft/util/datafix/fixes/LeavesFix.java b/src/main/java/net/minecraft/util/datafix/fixes/LeavesFix.java
index 75f1d1f06978d836aab5ebbfe8f7d1e0ca5a95b6..89d70a992e0bcc8e7292c4f736470eafd8747b24 100644
--- a/src/main/java/net/minecraft/util/datafix/fixes/LeavesFix.java
+++ b/src/main/java/net/minecraft/util/datafix/fixes/LeavesFix.java
@@ -71,14 +71,14 @@ public class LeavesFix extends DataFix {
return this.fixTypeEverywhereTyped("Leaves fix", type, (typed) -> {
return typed.updateTyped(opticFinder, (typedx) -> {
int[] is = new int[]{0};
- Typed<?> typed2 = typedx.updateTyped(opticFinder2, (typed) -> {
- Int2ObjectMap<LeavesFix.LeavesSection> int2ObjectMap = new Int2ObjectOpenHashMap<>(typed.getAllTyped(opticFinder3).stream().map((typedx) -> {
- return new LeavesFix.LeavesSection(typedx, this.getInputSchema());
+ Typed<?> typed2 = typedx.updateTyped(opticFinder2, (typed2x) -> {
+ Int2ObjectMap<LeavesFix.LeavesSection> int2ObjectMap = new Int2ObjectOpenHashMap<>(typed2x.getAllTyped(opticFinder3).stream().map((typedx2) -> {
+ return new LeavesFix.LeavesSection(typedx2, this.getInputSchema());
}).collect(Collectors.toMap(LeavesFix.Section::getIndex, (leavesSection) -> {
return leavesSection;
})));
if (int2ObjectMap.values().stream().allMatch(LeavesFix.Section::isSkippable)) {
- return typed;
+ return typed2x;
} else {
List<IntSet> list = Lists.newArrayList();
@@ -134,8 +134,8 @@ public class LeavesFix extends DataFix {
}
}
- return typed.updateTyped(opticFinder3, (typedx) -> {
- return int2ObjectMap.get(typedx.get(DSL.remainderFinder()).get("Y").asInt(0)).write(typedx);
+ return typed.updateTyped(opticFinder3, (typedx2) -> {
+ return int2ObjectMap.get(typedx2.get(DSL.remainderFinder()).get("Y").asInt(0)).write(typedx2);
});
}
});
@@ -298,8 +298,8 @@ public class LeavesFix extends DataFix {
throw new IllegalStateException("Block state type is not what was expected.");
} else {
Optional<List<Pair<String, Dynamic<?>>>> optional = typed.getOptional(this.paletteFinder);
- this.palette = optional.map((list) -> {
- return list.stream().map(Pair::getSecond).collect(Collectors.toList());
+ this.palette = (java.util.List)optional.map((list) -> {
+ return (java.util.List)list.stream().map(Pair::getSecond).collect(Collectors.toList());
}).orElse(ImmutableList.of());
Dynamic<?> dynamic = typed.get(DSL.remainderFinder());
this.index = dynamic.get("Y").asInt(0);
@@ -321,7 +321,7 @@ public class LeavesFix extends DataFix {
public Typed<?> write(Typed<?> typed) {
return this.isSkippable() ? typed : typed.update(DSL.remainderFinder(), (dynamic) -> {
return dynamic.set("BlockStates", dynamic.createLongList(Arrays.stream(this.storage.getRaw())));
- }).set(this.paletteFinder, this.palette.stream().map((dynamic) -> {
+ }).set(this.paletteFinder, (java.util.List)this.palette.stream().map((dynamic) -> {
return Pair.of(References.BLOCK_STATE.typeName(), dynamic);
}).collect(Collectors.toList()));
}

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Add permission to bypass reducedDebugInfo gamerule
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index c27e455321951e76e4818fec0e64301f5620dbf6..7bfba4d638cd42cdd98a22d87effe9a3be005315 100644
index ff56981a03b55f9ee1ec8ad36adaf9849b2c914b..b22b86d7f226e0e24d6be27ea33ec9d690f8f238 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -275,7 +275,7 @@ public abstract class PlayerList {

View File

@@ -103,7 +103,7 @@ index 8f911f589bf04902e38e2c625d84ba0c47cbd9ee..b15de37a06c3efb1c4bc790ccb23ebff
if (packet == null || this.processedDisconnect) { // Spigot
return;
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 7bfba4d638cd42cdd98a22d87effe9a3be005315..f89d66d65b39324011718068840295bb77d2a3e2 100644
index b22b86d7f226e0e24d6be27ea33ec9d690f8f238..022da50912d357581b2132cf57e1a767e436022c 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1464,7 +1464,7 @@ public abstract class PlayerList {

View File

@@ -7,7 +7,7 @@ Original: frikinjay/let-me-despawn
Copyright (C) 2023 frikinjay
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
index 3a365d7efd439cb8ddb99381bd714fb48896f4d2..e440cba3c4cd169e9771cc2f3c19b4c9861a640e 100644
index 3a365d7efd439cb8ddb99381bd714fb48896f4d2..b6d27332eb151bdf408909b241c493da54841c8e 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -885,7 +885,7 @@ public abstract class Mob extends LivingEntity implements Targeting {

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,196 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: IPECTER <ipectert@gmail.com>
Date: Tue, 30 May 2023 11:57:07 +0900
Subject: [PATCH] Reduce-allocations2
diff --git a/src/main/java/net/minecraft/advancements/AdvancementRewards.java b/src/main/java/net/minecraft/advancements/AdvancementRewards.java
index 9e20a870a9c9c295b32cfa591eb52625125a5439..30473930bf3acf0ae74f3ff5e500f6e1374c11da 100644
--- a/src/main/java/net/minecraft/advancements/AdvancementRewards.java
+++ b/src/main/java/net/minecraft/advancements/AdvancementRewards.java
@@ -24,7 +24,7 @@ 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);
+ public static final AdvancementRewards EMPTY = new AdvancementRewards(0, org.plazmamc.plazma.util.Constants.RESOURCE_LOCATION, org.plazmamc.plazma.util.Constants.RESOURCE_LOCATION, CommandFunction.CacheableFunction.NONE);
private final int experience;
private final ResourceLocation[] loot;
private final ResourceLocation[] recipes;
@@ -187,7 +187,7 @@ public class AdvancementRewards {
}
public AdvancementRewards build() {
- return new AdvancementRewards(this.experience, this.loot.toArray(new ResourceLocation[0]), this.recipes.toArray(new ResourceLocation[0]), this.function == null ? CommandFunction.CacheableFunction.NONE : new CommandFunction.CacheableFunction(this.function));
+ return new AdvancementRewards(this.experience, this.loot.toArray(org.plazmamc.plazma.util.Constants.RESOURCE_LOCATION), this.recipes.toArray(org.plazmamc.plazma.util.Constants.RESOURCE_LOCATION), this.function == null ? CommandFunction.CacheableFunction.NONE : new CommandFunction.CacheableFunction(this.function));
}
}
}
diff --git a/src/main/java/net/minecraft/advancements/RequirementsStrategy.java b/src/main/java/net/minecraft/advancements/RequirementsStrategy.java
index 051c1fb81d79c40be683edb86579bb975643bcb3..469c34c773e3257d0edfc807cb882b4cbfc3c53f 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.util.Constants.EMPTY_STRING)};
};
String[][] createRequirements(Collection<String> criteriaNames);
diff --git a/src/main/java/net/minecraft/nbt/ListTag.java b/src/main/java/net/minecraft/nbt/ListTag.java
index 749d3e67a877d7d1ed47b5fef511a604ee6589b6..0529814353ba82d6083a88531f06e73377ab5aaf 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<Tag> {
}
}
- return new int[0];
+ return org.plazmamc.plazma.util.Constants.EMPTY_INT;
}
public long[] getLongArray(int index) {
@@ -241,7 +241,7 @@ public class ListTag extends CollectionTag<Tag> {
}
}
- return new long[0];
+ return org.plazmamc.plazma.util.Constants.EMPTY_LONG;
}
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..122d4b9391ddaae2631db213230f57a829d1c943 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<LongTag> {
@Override
public void clear() {
- this.data = new long[0];
+ this.data = org.plazmamc.plazma.util.Constants.EMPTY_LONG;
}
@Override
diff --git a/src/main/java/net/minecraft/network/CipherBase.java b/src/main/java/net/minecraft/network/CipherBase.java
index a2920b8a9eff77d9c5d1d7f70ad3abdacba8f0fa..c1c97cc8fa5e0d8349655f90392382a0a878c95f 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.util.Constants.EMPTY_BYTE;
+ private byte[] heapOut = org.plazmamc.plazma.util.Constants.EMPTY_BYTE;
protected CipherBase(Cipher cipher) {
this.cipher = cipher;
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..c732299c908622e3b6262cd942a7397b3f34b8e9 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.util.Constants.EMPTY_OBJECT;
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/server/RunningOnDifferentThreadException.java b/src/main/java/net/minecraft/server/RunningOnDifferentThreadException.java
index 0f52e8a61ca7e57e9f52473dceb9cc3464c0c86d..857c3609b3cd965e1c10caa8fc5682baae999820 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.util.Constants.STACK_TRACE_ELEMENT);
}
@Override
public synchronized Throwable fillInStackTrace() {
- this.setStackTrace(new StackTraceElement[0]);
+ this.setStackTrace(org.plazmamc.plazma.util.Constants.STACK_TRACE_ELEMENT);
return this;
}
}
diff --git a/src/main/java/net/minecraft/server/ServerFunctionLibrary.java b/src/main/java/net/minecraft/server/ServerFunctionLibrary.java
index 975422a57b83a31e63a600bb4ff9c4e2baaf6da7..64d8935c18f3e92ec35b3b160443700e350a72fa 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.util.Constants.COMPLETABLE_FUTURE);
return CompletableFuture.allOf(completableFutures).handle((unused, ex) -> {
return map;
});
diff --git a/src/main/java/net/minecraft/util/MemoryReserve.java b/src/main/java/net/minecraft/util/MemoryReserve.java
index 0ee04fe6ff6a4d09754f326526ae04fe7226bab2..0efc5682210e6cd3e0ee03a5e4340614869a8575 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.util.Constants.EMPTY_BYTE;
}
}
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..bd88f27db229d1e34b69bcd9e975bec502d8226b 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.util.Constants.BLOCK_STATE);
}
@Override
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..92fe0ca7c16134701f72ea263d9aa933185978d3 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(new LootPoolEntryContainer[0]), this.conditions.toArray(new LootItemCondition[0]), this.functions.toArray(org.plazmamc.plazma.util.Constants.LOOT_ITEM_FUNCTION), this.rolls, this.bonusRolls);
}
}
}
@@ -171,7 +171,7 @@ public class LootPool {
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);
+ LootItemFunction[] lootItemFunctions = GsonHelper.getAsObject(jsonObject, "functions", org.plazmamc.plazma.util.Constants.LOOT_ITEM_FUNCTION, jsonDeserializationContext, LootItemFunction[].class);
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/scores/Team.java b/src/main/java/net/minecraft/world/scores/Team.java
index 16d2aa4556bc9f32a2def7f9ca282aa3fa23fb87..c9b266246a83e3d7f5ce61306f291ceff902079d 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.util.Constants.EMPTY_STRING);
}
@Nullable

View File

@@ -0,0 +1,19 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: IPECTER <ipectert@gmail.com>
Date: Tue, 30 May 2023 12:17:59 +0900
Subject: [PATCH] 213
diff --git a/src/main/java/net/minecraft/util/datafix/fixes/LeavesFix.java b/src/main/java/net/minecraft/util/datafix/fixes/LeavesFix.java
index 89d70a992e0bcc8e7292c4f736470eafd8747b24..a3f071101fbd10272373f99ebd2c76c0805d0d25 100644
--- a/src/main/java/net/minecraft/util/datafix/fixes/LeavesFix.java
+++ b/src/main/java/net/minecraft/util/datafix/fixes/LeavesFix.java
@@ -70,7 +70,7 @@ public class LeavesFix extends DataFix {
OpticFinder<?> opticFinder3 = DSL.typeFinder(type3);
return this.fixTypeEverywhereTyped("Leaves fix", type, (typed) -> {
return typed.updateTyped(opticFinder, (typedx) -> {
- int[] is = new int[]{0};
+ int[] is = org.plazmamc.plazma.util.Constants.ZERO_INT;
Typed<?> typed2 = typedx.updateTyped(opticFinder2, (typed2x) -> {
Int2ObjectMap<LeavesFix.LeavesSection> int2ObjectMap = new Int2ObjectOpenHashMap<>(typed2x.getAllTyped(opticFinder3).stream().map((typedx2) -> {
return new LeavesFix.LeavesSection(typedx2, this.getInputSchema());