mirror of
https://github.com/PaperMC/Paper.git
synced 2024-09-14 16:08:16 +02:00
f44d237de9
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing CraftBukkit Changes: 5be41fb8 SPIGOT-6720: Fix bed explosion checks 09b99daf SPIGOT-6722: Close entity manager when unloading world 3a9561bf SPIGOT-6686: Changes in MaximumRepairCost for Anvil Rename cause inconsistency
94 lines
5.0 KiB
Diff
94 lines
5.0 KiB
Diff
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
|
|
index 0000000000000000000000000000000000000000..6271586368c65250c887739d04c5fccf95fdb2d8
|
|
--- /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) {
|
|
+ return getHandle().contains(CraftMagicNumbers.getEntityTypes(item));
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public Set<EntityType> getValues() {
|
|
+ return Collections.unmodifiableSet(getHandle().getValues().stream().map(CraftMagicNumbers::getEntityType).collect(Collectors.toSet()));
|
|
+ }
|
|
+}
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
index af988f828e9f1ec3f6f317d907611e950665c17f..5cda9f21219decf6e4b9e5cc6e83b4749066f20f 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
@@ -2364,6 +2364,11 @@ public final class CraftServer implements Server {
|
|
Preconditions.checkArgument(clazz == org.bukkit.Fluid.class, "Fluid namespace must have fluid type");
|
|
|
|
return (org.bukkit.Tag<T>) new CraftFluidTag(FluidTags.getAllTags(), key);
|
|
+ // Paper start
|
|
+ case org.bukkit.Tag.REGISTRY_ENTITIES:
|
|
+ Preconditions.checkArgument(clazz == org.bukkit.entity.EntityType.class, "Entity namespace must have entitytype type");
|
|
+ return (org.bukkit.Tag<T>) new io.papermc.paper.CraftEntityTag(net.minecraft.tags.EntityTypeTags.getAllTags(), key);
|
|
+ // 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
|
|
index c0a08c3ac18b3ec0964c61c90df3263c50ece83d..eb06ca21a964de3f3d6712387b72e8994f1f03bd 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
|
@@ -115,8 +115,17 @@ public final class CraftMagicNumbers implements UnsafeValues {
|
|
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)));
|
|
}
|
|
@@ -182,6 +191,14 @@ public final class CraftMagicNumbers implements UnsafeValues {
|
|
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
|