Skip to content

Commit

Permalink
Add PredicateChoice to Purpur API
Browse files Browse the repository at this point in the history
PaperMC/Paper#9996

I merged this change, added @NotNull tags to get the API to build, and deleted the existing Purpur item predicate API since it was conflicting.
  • Loading branch information
joshuaprince committed Dec 8, 2023
1 parent 9ac3b40 commit b822661
Show file tree
Hide file tree
Showing 254 changed files with 493 additions and 298 deletions.

This file was deleted.

File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Subject: [PATCH] Added the ability to add combustible items


diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
index b948c38f32f94afa1708820dbbda9c7f4f9c685c..4127ae56afb05196ff46a5313e9d141adc27802b 100644
index e008983503a4ae45e9dd7f7858291dc4d3746520..4d375b95459698284f1c27eefe8adc29fc0e7871 100644
--- a/src/main/java/org/bukkit/Bukkit.java
+++ b/src/main/java/org/bukkit/Bukkit.java
@@ -2851,5 +2851,24 @@ public final class Bukkit {
Expand Down Expand Up @@ -34,7 +34,7 @@ index b948c38f32f94afa1708820dbbda9c7f4f9c685c..4127ae56afb05196ff46a5313e9d141a
// Purpur end
}
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
index f87583244ba9ea07ffd2a438ea32f0328782dbf3..6795f2c0c1e974c4fe3181cd6838a68f7437c846 100644
index 410aa885770c3f8be73277e90c4de6409b926f77..9217a021cd6e54fda334f637a0bfbbdbc7ad14b0 100644
--- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java
@@ -2500,5 +2500,20 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
78 changes: 78 additions & 0 deletions patches/api/0055-Adding-PredicateChoice-to-Paper-API.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: derverdox <[email protected]>
Date: Mon, 4 Dec 2023 01:54:38 +0100
Subject: [PATCH] Adding PredicateChoice to Paper API


diff --git a/src/main/java/org/bukkit/inventory/RecipeChoice.java b/src/main/java/org/bukkit/inventory/RecipeChoice.java
index 523818cbb0d6c90481ec97123e7fe0e2ff4eea14..63fa194621b68f3c25567a1acb59d08b0506bdd2 100644
--- a/src/main/java/org/bukkit/inventory/RecipeChoice.java
+++ b/src/main/java/org/bukkit/inventory/RecipeChoice.java
@@ -233,4 +233,67 @@ public interface RecipeChoice extends Predicate<ItemStack>, Cloneable {
return "ExactChoice{" + "choices=" + choices + '}';
}
}
+
+ /**
+ * Represents a choice that matches when the item predicate is fulfilled.
+ */
+ public static class PredicateChoice implements RecipeChoice {
+ private final ItemPredicate itemPredicate;
+
+ public PredicateChoice(@NotNull ItemPredicate itemPredicate) {
+ Preconditions.checkArgument(itemPredicate != null, "itemPredicate");
+ Preconditions.checkArgument(!itemPredicate.recipeBookExamples().isEmpty(), "Must have at least one template");
+ this.itemPredicate = itemPredicate;
+ }
+
+ @NotNull
+ @Override
+ public final boolean test(final @NotNull ItemStack stack) {
+ return itemPredicate.test(stack);
+ }
+
+ @Override
+ public @NotNull ItemStack getItemStack() {
+ ItemStack stack = new ItemStack(itemPredicate.recipeBookExamples().get(0));
+ // For compat
+ if (itemPredicate.recipeBookExamples().size() > 1) {
+ stack.setDurability(Short.MAX_VALUE);
+ }
+
+ return stack;
+ }
+
+ @NotNull
+ @Override
+ public PredicateChoice clone() {
+ return new PredicateChoice(new ItemPredicate() {
+ @NotNull
+ @Override
+ public List<@NotNull ItemStack> recipeBookExamples() {
+ return List.copyOf(itemPredicate.recipeBookExamples());
+ }
+
+ @Override
+ public boolean test(final @NotNull ItemStack stack) {
+ return itemPredicate.test(stack);
+ }
+ });
+ }
+
+ public @NotNull ItemPredicate getItemPredicate() {
+ return itemPredicate;
+ }
+
+ @Override
+ public boolean equals(final Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ PredicateChoice that = (PredicateChoice) o;
+ return Objects.equals(itemPredicate, that.itemPredicate);
+ }
+
+ public static interface ItemPredicate extends Predicate<ItemStack> {
+ List<@NotNull ItemStack> recipeBookExamples();
+ }
+ }
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ index 08d597db1a5345a343777a01427655e6bf2c926b..33df0ca406dc8321b76b393f317bbd1c
} else {
user.startUsingItem(hand);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index a85d4a9c2583f8233032b680c89b147a230bca41..598a9f2dae899513cf10e33c8baad5991597b55c 100644
index 8af34a04370ebb0b62137387c7eb082443f68c5b..2122658e5f5b6d0d9019f79f6c53717f7094abc0 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -140,6 +140,17 @@ public class PurpurWorldConfig {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ index 9ec6145fe04ec64bbee8ec6a837719caebdbc6f5..358d610ad020cada1bb83e393deeeaae
public ClientboundSetTimePacket(long time, long timeOfDay, boolean doDaylightCycle) {
this.gameTime = time;
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index c29f8291b43a2e92e3444ab72dd23065a006f11f..cdf770adf641844caf0290a8354046aeb8e00cb3 100644
index c5a93bb3f0ae907d3abb63f97567ab0e54a25b42..cef1f7169880560a9c79667320e63d552fa4aa03 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1523,7 +1523,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
Expand All @@ -31,7 +31,7 @@ index c29f8291b43a2e92e3444ab72dd23065a006f11f..cdf770adf641844caf0290a8354046ae
}
ServerPlayer entityplayer = (ServerPlayer) entityhuman;
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 8824d5e4b6d0ab504dd80b0cceef743b456d7e2e..0535faa8d95e75e3848ece4d756428a50b6c19f3 100644
index d6cdd86786f466437311dcc1a720b2ca2f25328e..2b4cb3d3bc4e9f32c1fc840be46b1781d73e4b48 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -214,6 +214,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
Expand Down Expand Up @@ -88,7 +88,7 @@ index 8824d5e4b6d0ab504dd80b0cceef743b456d7e2e..0535faa8d95e75e3848ece4d756428a5
public void tickCustomSpawners(boolean spawnMonsters, boolean spawnAnimals) {
Iterator iterator = this.customSpawners.iterator();
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 598a9f2dae899513cf10e33c8baad5991597b55c..7e8816a3bd9c60844ca0fbb8674abf6c53b4d81c 100644
index 2122658e5f5b6d0d9019f79f6c53717f7094abc0..efc2accce3eada889e919c19724206eab52dd627 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -122,6 +122,13 @@ public class PurpurWorldConfig {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ index a18aadbf7ae83713e1f2b21553185d8000bc7699..b0afc384907bb75dfa26e432a2328fe0

private static boolean canBurn(RegistryAccess registryManager, @Nullable RecipeHolder<?> recipe, NonNullList<ItemStack> slots, int count) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 7e8816a3bd9c60844ca0fbb8674abf6c53b4d81c..02aa54fbd0605b92de9263ba852ac04e24b2fdef 100644
index efc2accce3eada889e919c19724206eab52dd627..e1701bd63540f1672ceb821f0e37d29587847da9 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -409,6 +409,17 @@ public class PurpurWorldConfig {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ This prevents keeping arrows alive indefinitely (such as when the block
the arrow is stuck in gets removed, like a piston head going up/down)

diff --git a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
index 8affdd74769aed9aa92a76ba539cd9d27208827c..9710d1cd31d263b29c80923c56134b1f8f6702b0 100644
index 6c176933967f6ee98da3026f16a10efe4c3842fe..dbd98ad09ca60507533c9525177deef820257f06 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
@@ -312,7 +312,7 @@ public abstract class AbstractArrow extends Projectile {
Expand All @@ -20,7 +20,7 @@ index 8affdd74769aed9aa92a76ba539cd9d27208827c..9710d1cd31d263b29c80923c56134b1f

@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 02aa54fbd0605b92de9263ba852ac04e24b2fdef..41d694ec386530f97044ff6aa98f4e436cadddd7 100644
index e1701bd63540f1672ceb821f0e37d29587847da9..c0f3f52068d147ca06dbb87da51d628b56cf51e4 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -101,6 +101,11 @@ public class PurpurWorldConfig {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ index 1776906e886edd511bfbe96b8a345438a3cd66f8..7efae60a9a9269703a1fa7cd280b5b96
return;
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 41d694ec386530f97044ff6aa98f4e436cadddd7..957fb2554554be7912f434b999a9ddd31681b92a 100644
index c0f3f52068d147ca06dbb87da51d628b56cf51e4..30cc6cf6911fef48454a213370e4759f6f71e357 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -410,8 +410,10 @@ public class PurpurWorldConfig {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ index a8a494df6019230f7a301176580db9eb2d552030..80b4d8d1283c03681106853fd83bf6df
this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env);

diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 957fb2554554be7912f434b999a9ddd31681b92a..ff50c24f3a6e2dd0eb5d4e23cc9a38647e2c1194 100644
index 30cc6cf6911fef48454a213370e4759f6f71e357..7ebc466f72e61e11e73ab20a98f72d16cea7c077 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -115,6 +115,7 @@ public class PurpurWorldConfig {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Subject: [PATCH] Apply display names from item forms of entities to entities


diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
index 14424afdb708df7f93caf6df45412ec721b5e1dd..a164e13ddfe64b212fc5937b455096287d3151d8 100644
index 43e562d740b628d5abf961312ea5ce7a23e8ac56..3238e9e8bfff4dc33247d8bf29d408f262e4172e 100644
--- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
+++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
@@ -619,7 +619,7 @@ public class ArmorStand extends LivingEntity {
Expand Down Expand Up @@ -136,7 +136,7 @@ index b2ad6d230de2c29f371178bccde1111c7532ee70..6667926519a0f1c151e53f59cce36e74

if (((HangingEntity) object).survives()) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 48de43f61f90e2610e04d04803b374cead07f655..6f08b0556b0c8e4d4547ee7982c083972a8e1043 100644
index 569a09a73c9d800e78a77c430494292457453ab1..82d7028c1fc2ddfbb8bbcee9205375f4807c8e25 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -97,8 +97,10 @@ public class PurpurWorldConfig {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ index 2941c16ef486345b57ab2dfcd26f0272285d3b5a..7cc6812bf6f2ba015f65fd1fc1eaac02
((Mob) newEntityLiving).setPersistenceRequired();
// Paper end
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 6f08b0556b0c8e4d4547ee7982c083972a8e1043..28584fe38e7eebf6c4a4e5e84ff064db18067d63 100644
index 82d7028c1fc2ddfbb8bbcee9205375f4807c8e25..725c942c6c9b26c9fa0b3aeb65f51a34996f72d3 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -98,9 +98,11 @@ public class PurpurWorldConfig {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ This should help to reduce the amount of dirt, gravel, grass, and etc.
that Endermen like to randomly place all over the world.

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 ebef4f39af4928ed5bd206a82aa0e3992e67db78..aecccc96a1ea7fbd774a4ccbd45c11be1da1b43b 100644
index 760a26722144da3f547802975484b01c377afe17..c8f1d2de8682761ef8d4d50302c211f32b086783 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
@@ -501,7 +501,7 @@ public class EnderMan extends Monster implements NeutralMob {
Expand All @@ -21,7 +21,7 @@ index ebef4f39af4928ed5bd206a82aa0e3992e67db78..aecccc96a1ea7fbd774a4ccbd45c11be

private static class EndermanFreezeWhenLookedAt extends Goal {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 28584fe38e7eebf6c4a4e5e84ff064db18067d63..da8485add57441b426a526cde2a83fd7d0cd8d22 100644
index 725c942c6c9b26c9fa0b3aeb65f51a34996f72d3..b2c8ec43768c1a3243bca0998350400d8ea51b89 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -833,6 +833,7 @@ public class PurpurWorldConfig {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ index 718e120c9768cf716b32d3d652f53f1dda925168..b90cedad282e95a067aca176fafa9f72
}

diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index da8485add57441b426a526cde2a83fd7d0cd8d22..d6c4a63fad4bf17ea2aa2f0e364ccd99478e5c70 100644
index b2c8ec43768c1a3243bca0998350400d8ea51b89..06558480c2f3b9b1e81ba48fe7c7a80ea5652599 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -350,6 +350,11 @@ public class PurpurWorldConfig {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ index 19688acdd615068b37b928c3608074c5607919ec..dd75a1115d02506f1e99688817cb724b
} else {
this.setLeftHanded(false);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index d6c4a63fad4bf17ea2aa2f0e364ccd99478e5c70..ed11a1ca61ef0401936cd612e463a2ad4111585f 100644
index 06558480c2f3b9b1e81ba48fe7c7a80ea5652599..d1792d16fe745c22a2408ca7b6446348563e5b63 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -156,8 +156,10 @@ public class PurpurWorldConfig {
Expand Down
Loading

0 comments on commit b822661

Please sign in to comment.