2021-06-11 14:02:28 +02:00
|
|
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
|
|
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
|
|
|
Date: Sun, 3 Jan 2021 20:03:35 -0800
|
|
|
|
Subject: [PATCH] Added Vanilla Entity Tags
|
|
|
|
|
|
|
|
|
|
|
|
diff --git a/src/main/java/io/papermc/paper/CraftEntityTag.java b/src/main/java/io/papermc/paper/CraftEntityTag.java
|
|
|
|
new file mode 100644
|
2021-06-14 21:58:32 +02:00
|
|
|
index 0000000000000000000000000000000000000000..6271586368c65250c887739d04c5fccf95fdb2d8
|
2021-06-11 14:02:28 +02:00
|
|
|
--- /dev/null
|
|
|
|
+++ b/src/main/java/io/papermc/paper/CraftEntityTag.java
|
|
|
|
@@ -0,0 +1,28 @@
|
|
|
|
+package io.papermc.paper;
|
|
|
|
+
|
|
|
|
+import org.bukkit.craftbukkit.tag.CraftTag;
|
|
|
|
+import org.bukkit.craftbukkit.util.CraftMagicNumbers;
|
|
|
|
+import org.bukkit.entity.EntityType;
|
|
|
|
+
|
|
|
|
+import java.util.Collections;
|
|
|
|
+import java.util.Set;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
+import net.minecraft.resources.ResourceLocation;
|
|
|
|
+import net.minecraft.tags.TagCollection;
|
|
|
|
+
|
|
|
|
+public class CraftEntityTag extends CraftTag<net.minecraft.world.entity.EntityType<?>, EntityType> {
|
|
|
|
+
|
|
|
|
+ public CraftEntityTag(TagCollection<net.minecraft.world.entity.EntityType<?>> registry, ResourceLocation tag) {
|
|
|
|
+ super(registry, tag);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public boolean isTagged(EntityType item) {
|
2021-06-14 21:58:32 +02:00
|
|
|
+ return getHandle().contains(CraftMagicNumbers.getEntityTypes(item));
|
2021-06-11 14:02:28 +02:00
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public Set<EntityType> getValues() {
|
2021-06-14 21:58:32 +02:00
|
|
|
+ return Collections.unmodifiableSet(getHandle().getValues().stream().map(CraftMagicNumbers::getEntityType).collect(Collectors.toSet()));
|
2021-06-11 14:02:28 +02:00
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
2021-08-27 11:51:18 +02:00
|
|
|
index af988f828e9f1ec3f6f317d907611e950665c17f..5cda9f21219decf6e4b9e5cc6e83b4749066f20f 100644
|
2021-06-11 14:02:28 +02:00
|
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
2021-08-27 11:51:18 +02:00
|
|
|
@@ -2364,6 +2364,11 @@ public final class CraftServer implements Server {
|
2021-06-11 14:02:28 +02:00
|
|
|
Preconditions.checkArgument(clazz == org.bukkit.Fluid.class, "Fluid namespace must have fluid type");
|
|
|
|
|
2021-06-14 21:58:32 +02:00
|
|
|
return (org.bukkit.Tag<T>) new CraftFluidTag(FluidTags.getAllTags(), key);
|
2021-06-11 14:02:28 +02:00
|
|
|
+ // Paper start
|
|
|
|
+ case org.bukkit.Tag.REGISTRY_ENTITIES:
|
|
|
|
+ Preconditions.checkArgument(clazz == org.bukkit.entity.EntityType.class, "Entity namespace must have entitytype type");
|
2021-06-14 21:58:32 +02:00
|
|
|
+ return (org.bukkit.Tag<T>) new io.papermc.paper.CraftEntityTag(net.minecraft.tags.EntityTypeTags.getAllTags(), key);
|
2021-06-11 14:02:28 +02:00
|
|
|
+ // Paper end
|
|
|
|
default:
|
|
|
|
throw new IllegalArgumentException();
|
|
|
|
}
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
2021-08-14 06:11:12 +02:00
|
|
|
index c0a08c3ac18b3ec0964c61c90df3263c50ece83d..eb06ca21a964de3f3d6712387b72e8994f1f03bd 100644
|
2021-06-11 14:02:28 +02:00
|
|
|
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
|
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
2021-08-14 06:11:12 +02:00
|
|
|
@@ -115,8 +115,17 @@ public final class CraftMagicNumbers implements UnsafeValues {
|
2021-06-11 14:02:28 +02:00
|
|
|
private static final Map<Material, Item> MATERIAL_ITEM = new HashMap<>();
|
|
|
|
private static final Map<Material, Block> MATERIAL_BLOCK = new HashMap<>();
|
|
|
|
private static final Map<Material, net.minecraft.world.level.material.Fluid> MATERIAL_FLUID = new HashMap<>();
|
|
|
|
+ // Paper start
|
|
|
|
+ private static final Map<org.bukkit.entity.EntityType, net.minecraft.world.entity.EntityType<?>> ENTITY_TYPE_ENTITY_TYPES = new HashMap<>();
|
|
|
|
+ private static final Map<net.minecraft.world.entity.EntityType<?>, org.bukkit.entity.EntityType> ENTITY_TYPES_ENTITY_TYPE = new HashMap<>();
|
|
|
|
|
|
|
|
static {
|
|
|
|
+ for (org.bukkit.entity.EntityType type : org.bukkit.entity.EntityType.values()) {
|
|
|
|
+ if (type == org.bukkit.entity.EntityType.UNKNOWN) continue;
|
|
|
|
+ ENTITY_TYPE_ENTITY_TYPES.put(type, net.minecraft.core.Registry.ENTITY_TYPE.get(CraftNamespacedKey.toMinecraft(type.getKey())));
|
|
|
|
+ ENTITY_TYPES_ENTITY_TYPE.put(net.minecraft.core.Registry.ENTITY_TYPE.get(CraftNamespacedKey.toMinecraft(type.getKey())), type);
|
|
|
|
+ }
|
|
|
|
+ // Paper end
|
|
|
|
for (Block block : net.minecraft.core.Registry.BLOCK) {
|
|
|
|
BLOCK_MATERIAL.put(block, Material.getMaterial(net.minecraft.core.Registry.BLOCK.getKey(block).getPath().toUpperCase(Locale.ROOT)));
|
|
|
|
}
|
2021-08-14 06:11:12 +02:00
|
|
|
@@ -182,6 +191,14 @@ public final class CraftMagicNumbers implements UnsafeValues {
|
2021-06-11 14:02:28 +02:00
|
|
|
public static ResourceLocation key(Material mat) {
|
|
|
|
return CraftNamespacedKey.toMinecraft(mat.getKey());
|
|
|
|
}
|
|
|
|
+ // Paper start
|
|
|
|
+ public static net.minecraft.world.entity.EntityType<?> getEntityTypes(org.bukkit.entity.EntityType type) {
|
|
|
|
+ return ENTITY_TYPE_ENTITY_TYPES.get(type);
|
|
|
|
+ }
|
|
|
|
+ public static org.bukkit.entity.EntityType getEntityType(net.minecraft.world.entity.EntityType<?> entityTypes) {
|
|
|
|
+ return ENTITY_TYPES_ENTITY_TYPE.get(entityTypes);
|
|
|
|
+ }
|
|
|
|
+ // Paper end
|
|
|
|
// ========================================================================
|
|
|
|
// Paper start
|
|
|
|
@Override
|