From 1838430ce64c97b85d51451c72aa8a08a1fe12cd Mon Sep 17 00:00:00 2001 From: lexikiq Date: Sun, 20 Jun 2021 19:10:06 -0400 Subject: [PATCH] New patches --- patches/api/0008-Expose-NMS-ordinals.patch | 23 ++++++ patches/server/0007-Expose-NMS-ordinals.patch | 70 +++++++++++++++++++ .../0008-Add-Player-setGameProfile.patch | 23 ++++++ 3 files changed, 116 insertions(+) create mode 100644 patches/api/0008-Expose-NMS-ordinals.patch create mode 100644 patches/server/0007-Expose-NMS-ordinals.patch create mode 100644 patches/server/0008-Add-Player-setGameProfile.patch diff --git a/patches/api/0008-Expose-NMS-ordinals.patch b/patches/api/0008-Expose-NMS-ordinals.patch new file mode 100644 index 0000000..48374d4 --- /dev/null +++ b/patches/api/0008-Expose-NMS-ordinals.patch @@ -0,0 +1,23 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: lexikiq +Date: Sun, 20 Jun 2021 18:47:01 -0400 +Subject: [PATCH] Expose NMS ordinals + + +diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java +index c4f81d9a642005e52eb3d88daf6da6caa48a3f0d..b03756881694238103c136380af60ea5fa105700 100644 +--- a/src/main/java/org/bukkit/UnsafeValues.java ++++ b/src/main/java/org/bukkit/UnsafeValues.java +@@ -196,5 +196,12 @@ public interface UnsafeValues { + * @return if the item can be placed + */ + java.util.concurrent.CompletableFuture canPlaceItemOn(@org.jetbrains.annotations.NotNull ItemStack item, @org.jetbrains.annotations.Nullable me.lexikiq.OptionalHumanEntity player, @org.jetbrains.annotations.NotNull org.bukkit.block.Block block, @org.jetbrains.annotations.NotNull org.bukkit.block.BlockFace face); ++ ++ /** ++ * Gets the ID/ordinal of an entity according to NMS. ++ * @param type entity to get ++ * @return entity's ID ++ */ ++ int entityID(org.bukkit.entity.EntityType type); + // Parchment end + } diff --git a/patches/server/0007-Expose-NMS-ordinals.patch b/patches/server/0007-Expose-NMS-ordinals.patch new file mode 100644 index 0000000..874dde4 --- /dev/null +++ b/patches/server/0007-Expose-NMS-ordinals.patch @@ -0,0 +1,70 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: lexikiq +Date: Sun, 20 Jun 2021 18:47:01 -0400 +Subject: [PATCH] Expose NMS ordinals + + +diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java +index ac99265aacd4a28490705e3079ed04023fb1c54a..e5f9919797d7ad8c88b92f5d69dddf78cab75785 100644 +--- a/src/main/java/net/minecraft/world/entity/EntityType.java ++++ b/src/main/java/net/minecraft/world/entity/EntityType.java +@@ -281,11 +281,35 @@ public class EntityType implements EntityTypeTest { + @Nullable + private ResourceLocation lootTable; + private final EntityDimensions dimensions; ++ private static int ordinal = 0; // Parchment ++ private static final java.util.Map ordinals = new java.util.HashMap<>(); // Parchment + + private static EntityType register(String id, EntityType.Builder type) { // CraftBukkit - decompile error +- return (EntityType) Registry.register((Registry) Registry.ENTITY_TYPE, id, (Object) type.build(id)); ++ // Parchment start ++ EntityType build = type.build(id); ++ ordinals.put(build, ordinal); ++ ordinal += 1; ++ return (EntityType) Registry.register((Registry) Registry.ENTITY_TYPE, id, (Object) build); + } + ++ public int ordinal() { ++ return ordinals.get(this); ++ } ++ ++ @Override ++ public boolean equals(Object o) { ++ if (this == o) return true; ++ if (o == null || getClass() != o.getClass()) return false; ++ EntityType that = (EntityType) o; ++ return id.equals(that.id); ++ } ++ ++ @Override ++ public int hashCode() { ++ return java.util.Objects.hash(id); ++ } ++ // Parchment end ++ + public static ResourceLocation getKey(EntityType type) { + return Registry.ENTITY_TYPE.getKey(type); + } +diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +index ade8807ef37b853c59944480bc539bf1c4a64357..f0c331599e629a9c0f4b062cc3a4dc0e1d07962b 100644 +--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java ++++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +@@ -559,6 +559,18 @@ public final class CraftMagicNumbers implements UnsafeValues { + final net.minecraft.world.item.context.BlockPlaceContext ctx = context; + return future.completeAsync(() -> blockItem.canPlace(ctx, blockState), net.minecraft.server.MCUtil.MAIN_EXECUTOR); + } ++ ++ @Override ++ public int entityID(org.bukkit.entity.EntityType type) { ++ String name = type.getName(); ++ if (name == null) { ++ throw new IllegalArgumentException("Entity name is undefined"); ++ } ++ return net.minecraft.world.entity.EntityType.byString(name) ++ .orElseThrow(() -> new IllegalArgumentException("Could not find corresponding NMS entity")) ++ .ordinal(); ++ } ++ + // Parchment end + + /** diff --git a/patches/server/0008-Add-Player-setGameProfile.patch b/patches/server/0008-Add-Player-setGameProfile.patch new file mode 100644 index 0000000..05f6533 --- /dev/null +++ b/patches/server/0008-Add-Player-setGameProfile.patch @@ -0,0 +1,23 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: lexikiq +Date: Sun, 20 Jun 2021 19:09:16 -0400 +Subject: [PATCH] Add Player#setGameProfile + + +diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java +index eea377ccf09afd2c175041bdd8226e1009fe6914..b5b6102bd1f841157f258d79d02a7d2ca90ba200 100644 +--- a/src/main/java/net/minecraft/world/entity/player/Player.java ++++ b/src/main/java/net/minecraft/world/entity/player/Player.java +@@ -1443,6 +1443,12 @@ public abstract class Player extends LivingEntity { + return this.gameProfile; + } + ++ // Parchment start ++ public void setProfile(GameProfile gameProfile) { ++ this.gameProfile = gameProfile; ++ } ++ // Parchment end ++ + public Inventory getInventory() { + return this.inventory; + }