Skip to content
This repository has been archived by the owner on Apr 21, 2023. It is now read-only.

Commit

Permalink
Fix VMP ingredient matching cache temporary
Browse files Browse the repository at this point in the history
  • Loading branch information
AlphaKR93 committed Nov 15, 2022
1 parent 3d12814 commit 881625c
Show file tree
Hide file tree
Showing 13 changed files with 55 additions and 62 deletions.
2 changes: 1 addition & 1 deletion patches/server/0001-Pufferfish-Server-Changes.patch
Original file line number Diff line number Diff line change
Expand Up @@ -4209,7 +4209,7 @@ index ebe65474a4a05ff1637d7f37ebcfe690af59def5..dd45d6464e095dfa82c569d198f5e42d
+ // Pufferfish start
+ Entity entity = this.entity;
+ if (entity instanceof LivingEntity livingEntity) {
+ return livingEntity.canStandOnFluid(state) && !stateAbove.getType().isSame(state.getType());
+ return livingEntity.canStandOnFluid(state) && !state.getType().isSame(state.getType());
+ }
+ return false;
+ // Pufferfish end
Expand Down
65 changes: 29 additions & 36 deletions patches/server/0009-JettPack-Server-Patches.patch
Original file line number Diff line number Diff line change
Expand Up @@ -1342,58 +1342,46 @@ index f5886a88fd98ede5e85a91eccccb05ac33eb40e2..b4403229fb9ff45410b63d2d1459f9cb
} else {
this.discard();
diff --git a/src/main/java/net/minecraft/world/item/crafting/Ingredient.java b/src/main/java/net/minecraft/world/item/crafting/Ingredient.java
index 809c6531d056cc9538e9bec9cdc5ca6e4c9f4792..1e1147f40ea27a676756eb7f9fd6b175e07cb13b 100644
index 809c6531d056cc9538e9bec9cdc5ca6e4c9f4792..ff7b3babb557d21f83f75c34bf47b8aa8bf91d6d 100644
--- a/src/main/java/net/minecraft/world/item/crafting/Ingredient.java
+++ b/src/main/java/net/minecraft/world/item/crafting/Ingredient.java
@@ -14,7 +14,10 @@ import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
+import java.util.Set; // Prismarine - JettPack patches (VMP: ingredient matching cache)
+import java.util.HashSet; // Prismarine - JettPack patches (VMP: ingredient matching cache)
import java.util.function.Predicate;
+import java.util.stream.Collectors; // Prismarine - JettPack patches (VMP: ingredient matching cache)
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
import javax.annotation.Nullable;
@@ -38,6 +41,8 @@ public final class Ingredient implements Predicate<ItemStack> {
@@ -38,6 +38,8 @@ public final class Ingredient implements Predicate<ItemStack> {
@Nullable
private IntList stackingIds;
public boolean exact; // CraftBukkit
+ private Set<Item> matchingItems = null; // Prismarine - JettPack patches (VMP: ingredient matching cache)
+ private java.util.Set<Item> matchingItems = null; // Prismarine - JettPack patches (VMP: ingredient matching cache)
+ private boolean isEmptyMatch = false; // Prismarine - JettPack patches (VMP: ingredient matching cache)
public Predicate<org.bukkit.inventory.ItemStack> predicate;

public Ingredient(Stream<? extends Ingredient.Value> entries) {
@@ -70,6 +75,7 @@ public final class Ingredient implements Predicate<ItemStack> {
@@ -70,6 +72,22 @@ public final class Ingredient implements Predicate<ItemStack> {
if (itemstack == null) {
return false;
} else {
+ /* // Prismarine - JettPack patches (VMP: ingredient matching cache)
+ if (net.prismarineteam.prismarine.PrismarineConfig.useExperimentalVMPIngredientMatchingCache) {
+ java.util.Set<Item> matchingItems = this.matchingItems;
+ boolean isEmptyMatch = this.isEmptyMatch;
+ if (matchingItems == null) {
+ matchingItems = this.matchingItems = Arrays.stream(this.values)
+ .flatMap(entry -> entry.getItems().stream())
+ .filter(itemstack1 -> !itemstack1.isEmpty())
+ .map(ItemStack::getItem)
+ .collect(java.util.stream.Collectors.toCollection(java.util.HashSet::new));
+ isEmptyMatch = this.isEmptyMatch = this.matchingItems.isEmpty();
+ }
+ if (itemstack.isEmpty()) {
+ return isEmptyMatch;
+ }
+ return matchingItems.contains(itemstack.getItem());
+ } else {// Prismarine - JettPack patches (VMP: ingredient matching cache)
this.dissolve();
if (this.itemStacks.length == 0) {
return itemstack.isEmpty();
@@ -102,6 +108,23 @@ public final class Ingredient implements Predicate<ItemStack> {
@@ -102,6 +120,7 @@ public final class Ingredient implements Predicate<ItemStack> {

return false;
}
+ */ // Prismarine - JettPack patches (VMP: ingredient matching cache)
+ // Prismarine start - JettPack patches (VMP: ingredient matching cache)
+ Set<Item> matchingItems = this.matchingItems;
+ boolean isEmptyMatch = this.isEmptyMatch;
+ if (matchingItems == null) {
+ matchingItems = this.matchingItems = Arrays.stream(this.values)
+ .flatMap(entry -> entry.getItems().stream())
+ .filter(itemstack1 -> !itemstack1.isEmpty())
+ .map(ItemStack::getItem)
+ .collect(Collectors.toCollection(HashSet::new));
+ isEmptyMatch = this.isEmptyMatch = this.matchingItems.isEmpty();
+ }
+ if (itemstack.isEmpty()) {
+ return isEmptyMatch;
+ }
+ return matchingItems.contains(itemstack.getItem());
+ // Prismarine end
+ }// Prismarine - JettPack patches (VMP: ingredient matching cache)
}
}

Expand Down Expand Up @@ -2070,10 +2058,10 @@ index 68e89dbd79171627046e89699057964e44c40e7d..959588962acb0196ec9f1cc2502e6211

@Override
diff --git a/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java b/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
index eb01aab61aa3383e39120c7dfb60d9c9a4b801d1..da4b140a10687dde0e40da12baf68d63cfb2271e 100644
index eb01aab61aa3383e39120c7dfb60d9c9a4b801d1..ed3de4464f32cc75fd3cf5e1d90d65c971db1484 100644
--- a/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
+++ b/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
@@ -154,4 +154,50 @@ public class PrismarineConfig {
@@ -154,4 +154,55 @@ public class PrismarineConfig {
set("settings.patina-settings.disable-bootstrap-executor", null);
}
}
Expand Down Expand Up @@ -2122,6 +2110,11 @@ index eb01aab61aa3383e39120c7dfb60d9c9a4b801d1..da4b140a10687dde0e40da12baf68d63
+ public static boolean useAsyncExecutorAtAuthencatorPool = false;
+ private static void useAsyncExecutorAtAuthencatorPool() {
+ useAsyncExecutorAtAuthencatorPool = getBoolean("settings.use-async-executor-at-authencator-pool", useAsyncExecutorAtAuthencatorPool);
+ }
+
+ public static boolean useExperimentalVMPIngredientMatchingCache = false;
+ private static void useExperimentalVMPIngredientMatchingCache() {
+ useExperimentalVMPIngredientMatchingCache = getBoolean("settings.use-experimental-vmp-ingredient-matching-cache", useExperimentalVMPIngredientMatchingCache);
+ }
}
\ No newline at end of file
Expand Down
8 changes: 4 additions & 4 deletions patches/server/0010-Slice-Server-Patches.patch
Original file line number Diff line number Diff line change
Expand Up @@ -238,12 +238,12 @@ index 1b7e38538881ba00ffdbe9226952627151532c5c..91fa9d40b7aa779bb33f45df38079acb

public void startAutoSpinAttack(int riptideTicks) {
diff --git a/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java b/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
index da4b140a10687dde0e40da12baf68d63cfb2271e..303562950584279ffc6413a84bb22117a2aed5c6 100644
index ed3de4464f32cc75fd3cf5e1d90d65c971db1484..045960cebe1b7d46e7f791c768fb443335c7493b 100644
--- a/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
+++ b/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
@@ -200,4 +200,21 @@ public class PrismarineConfig {
private static void useAsyncExecutorAtAuthencatorPool() {
useAsyncExecutorAtAuthencatorPool = getBoolean("settings.use-async-executor-at-authencator-pool", useAsyncExecutorAtAuthencatorPool);
@@ -205,4 +205,21 @@ public class PrismarineConfig {
private static void useExperimentalVMPIngredientMatchingCache() {
useExperimentalVMPIngredientMatchingCache = getBoolean("settings.use-experimental-vmp-ingredient-matching-cache", useExperimentalVMPIngredientMatchingCache);
}
+
+ public static boolean doNotSendEquipmentUpdatesIfOnlyDurabilityChanges = false;
Expand Down
4 changes: 2 additions & 2 deletions patches/server/0012-Do-not-send-useless-entity-packets.patch
Original file line number Diff line number Diff line change
Expand Up @@ -63,10 +63,10 @@ index b02cd7bed470c9c6dcbd986a24637fe2874ee9ca..f2a513cea03f7849f4c76ff3c9a3f313
this.entity.stopSeenByPlayer(player);
((ServerLevel) this.entity.level).chunkSource.chunkMap.runOnTrackerMainThread(() -> player.connection.send(new ClientboundRemoveEntitiesPacket(new int[]{this.entity.getId()}))); // Prismarine - Petal patches (ensure main thread)
diff --git a/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java b/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
index 303562950584279ffc6413a84bb22117a2aed5c6..bbd6c81216426268a9bdd083904920039af0cf23 100644
index 045960cebe1b7d46e7f791c768fb443335c7493b..23fc8073ded0cc5245ecd6165c200e9b1710fb85 100644
--- a/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
+++ b/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
@@ -217,4 +217,9 @@ public class PrismarineConfig {
@@ -222,4 +222,9 @@ public class PrismarineConfig {
private static void useSlicePacketSystem() {
useSlicePacketSystem = getBoolean("settings.use-slice-packet-system", useSlicePacketSystem);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,10 @@ index a87f6380b2c387fb0cdd40d5087b5c93492e3c88..70009f417eb39a6c10b895b372309117
VoxelShape voxelshape2 = blockData.getCollisionShape(getter, mutablePos, collisionShape);
if (voxelshape2 != Shapes.empty()) {
diff --git a/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java b/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
index bbd6c81216426268a9bdd083904920039af0cf23..e87b812605a58e3a08e592b9543808db59ad8f44 100644
index 23fc8073ded0cc5245ecd6165c200e9b1710fb85..617a5619693877cf6ae158db8dda0caefa148633 100644
--- a/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
+++ b/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
@@ -222,4 +222,9 @@ public class PrismarineConfig {
@@ -227,4 +227,9 @@ public class PrismarineConfig {
private static void doNotSendUselessEntityPackets() {
doNotSendUselessEntityPackets = getBoolean("settings.do-not-send-useless-entity-packets", doNotSendUselessEntityPackets);
}
Expand Down
4 changes: 2 additions & 2 deletions patches/server/0016-Paper-PRs.patch
Original file line number Diff line number Diff line change
Expand Up @@ -219,10 +219,10 @@ index 4e00c2216142b52fb34be0e51d00fa20fded92c8..4f31454c192361a18d32d3085cb9df90

public static AttributeSupplier.Builder createAttributes() {
diff --git a/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java b/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
index e87b812605a58e3a08e592b9543808db59ad8f44..6b3b673d50a382d0b609f7654cfec048f3453617 100644
index 617a5619693877cf6ae158db8dda0caefa148633..6fb72bfc1498f8cdd65ebd7aead84e690d4d1e33 100644
--- a/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
+++ b/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
@@ -227,4 +227,13 @@ public class PrismarineConfig {
@@ -232,4 +232,13 @@ public class PrismarineConfig {
private static void useAirplaneCollisionContext() {
useNormalCollisionContext = getBoolean("settings.use-normal-collision-context", useNormalCollisionContext);
}
Expand Down
4 changes: 2 additions & 2 deletions patches/server/0017-Experimental-Akarin-tweaks.patch
Original file line number Diff line number Diff line change
Expand Up @@ -111,10 +111,10 @@ index 4fd709a550bf8da1e996894a1ca6b91206c31e9e..63a12d90821f22a9926fcd5dbcf35e5d
}

diff --git a/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java b/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
index 6b3b673d50a382d0b609f7654cfec048f3453617..50254ad7997dd3e7dd631ebebed1bfee7f415bd7 100644
index 6fb72bfc1498f8cdd65ebd7aead84e690d4d1e33..4f1236414ef785a23ad23aa974f195f2c9d68c9c 100644
--- a/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
+++ b/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
@@ -236,4 +236,9 @@ public class PrismarineConfig {
@@ -241,4 +241,9 @@ public class PrismarineConfig {
set("settings.pull-requests.paper.prevent-healing-by-negative-amounts", null);
}
}
Expand Down
6 changes: 3 additions & 3 deletions patches/server/0022-Implement-No-Chat-Reports.patch
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ index e61ab98ff3ed7692db7bbb50e1d50ce03f9711df..1f847ac2b0b8096015da1e830a6cd664

protected boolean convertOldUsers() {
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 257daaf0881b1af992a20df83be3846e0d58de66..a3892aa3e4005974d00bc1f05b98311bc3e7789d 100644
index 57dd2f5190e00bddbc575044ce5d9cc613e3c0df..20723af0d213c61eb2a57bb349524680578fd610 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2240,10 +2240,28 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
Expand Down Expand Up @@ -121,7 +121,7 @@ index 91fa9d40b7aa779bb33f45df38079acb1517dfea..0cf2316e76036da16d9d24cf0af0a434

public Inventory getInventory() {
diff --git a/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java b/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
index 50254ad7997dd3e7dd631ebebed1bfee7f415bd7..66d8ed71981310612e2790f1d78ae092de7352ef 100644
index 4f1236414ef785a23ad23aa974f195f2c9d68c9c..9e53bed038fe37414ded97c53820a1febe07a17d 100644
--- a/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
+++ b/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
@@ -50,8 +50,8 @@ public class PrismarineConfig {
Expand All @@ -135,7 +135,7 @@ index 50254ad7997dd3e7dd631ebebed1bfee7f415bd7..66d8ed71981310612e2790f1d78ae092

readConfig(PrismarineConfig.class, null);
}
@@ -241,4 +241,19 @@ public class PrismarineConfig {
@@ -246,4 +246,19 @@ public class PrismarineConfig {
private static void storePlayerJsonListAsynchronously() {
storePlayerJsonListAsynchronously = getBoolean("settings.store-player-json-list-asynchronously", storePlayerJsonListAsynchronously);
}
Expand Down
4 changes: 2 additions & 2 deletions patches/server/0030-Configurable-armor-attribute-limit.patch
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,10 @@ index ccbfcef3e83b1bef364447657bfd08a92d615cf6..59e1dc4f9754b1f39c5eb060fd74c697
}
}
diff --git a/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java b/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
index 66d8ed71981310612e2790f1d78ae092de7352ef..ba52424a2afcc74625601493a521407a6d5efa7c 100644
index 9e53bed038fe37414ded97c53820a1febe07a17d..9addecba6dd4602daff61e095b43edc4ac0c5960 100644
--- a/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
+++ b/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
@@ -256,4 +256,9 @@ public class PrismarineConfig {
@@ -261,4 +261,9 @@ public class PrismarineConfig {
convertToGameMessage = getBoolean("settings.no-chat-reports.convert-to-game-message", convertToGameMessage);
addQueryData = getBoolean("settings.no-chat-reports.add-query-data", addQueryData);
}
Expand Down
4 changes: 2 additions & 2 deletions patches/server/0031-No-Bedrock-Option.patch
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ index 1d5bc86516df3781aea894c3afd340421ba51a17..9a03ecd08e73531e0cc35034a3a13a40

SurfaceRules.RuleSource ruleSource10 = SurfaceRules.ifTrue(SurfaceRules.abovePreliminarySurface(), ruleSource9);
diff --git a/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java b/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
index ba52424a2afcc74625601493a521407a6d5efa7c..dd980223e4edd34ec897fa024f363beb3f58bcad 100644
index 9addecba6dd4602daff61e095b43edc4ac0c5960..8fe69460195a0cd5d8cd7804f14b5fd771da452c 100644
--- a/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
+++ b/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
@@ -261,4 +261,9 @@ public class PrismarineConfig {
@@ -266,4 +266,9 @@ public class PrismarineConfig {
private static void maxArmorAttributeValue() {
maxArmorAttributeValue = (float) getDouble("settings.max-armor-attribute-value", maxArmorAttributeValue);
}
Expand Down
4 changes: 2 additions & 2 deletions patches/server/0032-Toggleable-offline-mode-warning.patch
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,10 @@ index 1f847ac2b0b8096015da1e830a6cd664f1cef244..d29af9f0a2abcc4baa166acbf1bb44ba


diff --git a/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java b/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
index dd980223e4edd34ec897fa024f363beb3f58bcad..e0f73faa2873d5b63513f50c1c9228f204ed8114 100644
index 8fe69460195a0cd5d8cd7804f14b5fd771da452c..c0aa331bfc2af9417ed931de1024f1c01ed1737c 100644
--- a/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
+++ b/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
@@ -266,4 +266,9 @@ public class PrismarineConfig {
@@ -271,4 +271,9 @@ public class PrismarineConfig {
private static void noBedrock() {
noBedrock = getBoolean("settings.no-bedrock", noBedrock);
}
Expand Down
4 changes: 2 additions & 2 deletions patches/server/0033-Implement-Anti-Shulker-Dupe.patch
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,10 @@ index f4c47f7a7f2572dedbaee4890c98e1f3589a40c2..9fcd8f51ebd76a60b5f10322675c2a8b

return super.getDrops(state, builder);
diff --git a/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java b/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
index e0f73faa2873d5b63513f50c1c9228f204ed8114..afffa90178aca8b2988824f51ec78bd488d580d6 100644
index c0aa331bfc2af9417ed931de1024f1c01ed1737c..b475c631cbc030225872d7f152e6f4f711183f94 100644
--- a/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
+++ b/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
@@ -271,4 +271,9 @@ public class PrismarineConfig {
@@ -276,4 +276,9 @@ public class PrismarineConfig {
private static void offlineWarning() {
offlineWarning = getBoolean("settings.offline-warning", offlineWarning);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@ index 2b03274392300f89c634d3372c30a0fa0122ef85..0633090d9d1824e1c810c205a07ee0be
// Paper start - validate usernames
if (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.isProxyOnlineMode() && io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.performUsernameValidation) {
diff --git a/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java b/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
index afffa90178aca8b2988824f51ec78bd488d580d6..77de467ce9cf2057d580128870dbe93c5252db17 100644
index b475c631cbc030225872d7f152e6f4f711183f94..a15a528daf9eeec37bf2c0e94e63b97301a4a94b 100644
--- a/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
+++ b/src/main/java/net/prismarineteam/prismarine/PrismarineConfig.java
@@ -276,4 +276,9 @@ public class PrismarineConfig {
@@ -281,4 +281,9 @@ public class PrismarineConfig {
private static void antiShulkerDupe() {
antiShulkerDupe = getBoolean("settings.anti-shulker-dupe", antiShulkerDupe);
}
Expand Down

0 comments on commit 881625c

Please sign in to comment.