mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-16 06:30:46 +01:00
living entity allow attribute registration (#4723)
This commit is contained in:
parent
8597a42d37
commit
c07b432618
2 changed files with 94 additions and 0 deletions
|
@ -0,0 +1,25 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: ysl3000 <yannicklamprecht@live.de>
|
||||
Date: Sat, 24 Oct 2020 16:37:21 +0200
|
||||
Subject: [PATCH] living entity allow attribute registration
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/attribute/Attributable.java b/src/main/java/org/bukkit/attribute/Attributable.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/org/bukkit/attribute/Attributable.java
|
||||
+++ b/src/main/java/org/bukkit/attribute/Attributable.java
|
||||
@@ -0,0 +0,0 @@ public interface Attributable {
|
||||
*/
|
||||
@Nullable
|
||||
AttributeInstance getAttribute(@NotNull Attribute attribute);
|
||||
+
|
||||
+ // Paper start
|
||||
+ /**
|
||||
+ * Registers a generic attribute to that attributable instance.
|
||||
+ * Allows it to add attributes not registered by default to that entity.
|
||||
+ *
|
||||
+ * @param attribute the generic attribute to register
|
||||
+ */
|
||||
+ void registerAttribute(@NotNull Attribute attribute);
|
||||
+ // Paper end
|
||||
}
|
|
@ -0,0 +1,69 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: ysl3000 <yannicklamprecht@live.de>
|
||||
Date: Sat, 24 Oct 2020 16:37:44 +0200
|
||||
Subject: [PATCH] living entity allow attribute registration
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/AttributeMapBase.java b/src/main/java/net/minecraft/server/AttributeMapBase.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/server/AttributeMapBase.java
|
||||
+++ b/src/main/java/net/minecraft/server/AttributeMapBase.java
|
||||
@@ -0,0 +0,0 @@ import org.apache.logging.log4j.Logger;
|
||||
public class AttributeMapBase {
|
||||
|
||||
private static final Logger LOGGER = LogManager.getLogger();
|
||||
- private final Map<AttributeBase, AttributeModifiable> b = Maps.newHashMap();
|
||||
+ private final Map<AttributeBase, AttributeModifiable> b = Maps.newHashMap(); private final Map<AttributeBase, AttributeModifiable> attributeMap = b; // Paper - OBFHELPER
|
||||
private final Set<AttributeModifiable> c = Sets.newHashSet();
|
||||
private final AttributeProvider d;
|
||||
|
||||
@@ -0,0 +0,0 @@ public class AttributeMapBase {
|
||||
}
|
||||
|
||||
}
|
||||
+
|
||||
+ // Paper - start
|
||||
+ public void registerAttribute(AttributeBase attributeBase) {
|
||||
+ net.minecraft.server.AttributeModifiable attributeModifiable = new net.minecraft.server.AttributeModifiable(attributeBase, net.minecraft.server.AttributeModifiable::getAttribute);
|
||||
+ attributeMap.put(attributeBase, attributeModifiable);
|
||||
+ }
|
||||
+ // Paper - end
|
||||
+
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeMap.java b/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeMap.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeMap.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeMap.java
|
||||
@@ -0,0 +0,0 @@ public class CraftAttributeMap implements Attributable {
|
||||
return (nms == null) ? null : new CraftAttributeInstance(nms, attribute);
|
||||
}
|
||||
|
||||
+ // Paper start
|
||||
+ @Override
|
||||
+ public void registerAttribute(Attribute attribute) {
|
||||
+ Preconditions.checkArgument(attribute != null, "attribute");
|
||||
+ handle.registerAttribute(CraftAttributeMap.toMinecraft(attribute));
|
||||
+ }
|
||||
+ // Paper end
|
||||
+
|
||||
public static AttributeBase toMinecraft(Attribute attribute) {
|
||||
return IRegistry.ATTRIBUTE.get(CraftNamespacedKey.toMinecraft(attribute.getKey()));
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
||||
@@ -0,0 +0,0 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||
return getHandle().craftAttributes.getAttribute(attribute);
|
||||
}
|
||||
|
||||
+ // Paper start
|
||||
+ @Override
|
||||
+ public void registerAttribute(Attribute attribute) {
|
||||
+ getHandle().craftAttributes.registerAttribute(attribute);
|
||||
+ }
|
||||
+ // Paper end
|
||||
+
|
||||
@Override
|
||||
public void setAI(boolean ai) {
|
||||
if (this.getHandle() instanceof EntityInsentient) {
|
Loading…
Reference in a new issue