New patches

This commit is contained in:
lexikiq
2021-06-20 19:10:06 -04:00
parent c5d5e521e1
commit 1838430ce6
3 changed files with 116 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: lexikiq <noellekiq@gmail.com>
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<Boolean> 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
}

View File

@@ -0,0 +1,70 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: lexikiq <noellekiq@gmail.com>
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<T extends Entity> implements EntityTypeTest<Entity, T> {
@Nullable
private ResourceLocation lootTable;
private final EntityDimensions dimensions;
+ private static int ordinal = 0; // Parchment
+ private static final java.util.Map<EntityType, Integer> ordinals = new java.util.HashMap<>(); // Parchment
private static <T extends Entity> EntityType<T> 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
/**

View File

@@ -0,0 +1,23 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: lexikiq <noellekiq@gmail.com>
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;
}