mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-02 17:32:03 +01:00
358877e2e2
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 Bukkit Changes: fb23cbb3 Define surefire plugin version d022084a Define ordering for MetadataStoreTest 99a7f6f0 PR-910: Match generic max absorption attribute name style with the rest c7390d71 PR-909: Update tests to JUnit 5 CraftBukkit Changes: f0661c351 PR-1230: Move unstructured PDC NBT serialisation to SNBT 452fcb599 PR-1256: Update tests to JUnit 5
157 lines
6.8 KiB
Diff
157 lines
6.8 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
|
Date: Thu, 6 May 2021 19:57:58 -0700
|
|
Subject: [PATCH] More Enchantment API
|
|
|
|
== AT ==
|
|
public net.minecraft.world.item.enchantment.Enchantment slots
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java
|
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java
|
|
@@ -0,0 +0,0 @@ public class CraftEnchantment extends Enchantment {
|
|
|
|
@Override
|
|
public boolean isCursed() {
|
|
- return this.target instanceof BindingCurseEnchantment || this.target instanceof VanishingCurseEnchantment;
|
|
+ return this.target.isCurse(); // Paper
|
|
}
|
|
|
|
@Override
|
|
@@ -0,0 +0,0 @@ public class CraftEnchantment extends Enchantment {
|
|
public String translationKey() {
|
|
return this.target.getDescriptionId();
|
|
}
|
|
+
|
|
+ @Override
|
|
+ public boolean isTradeable() {
|
|
+ return target.isTradeable();
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public boolean isDiscoverable() {
|
|
+ return target.isDiscoverable();
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public io.papermc.paper.enchantments.EnchantmentRarity getRarity() {
|
|
+ return fromNMSRarity(target.getRarity());
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public float getDamageIncrease(int level, org.bukkit.entity.EntityCategory entityCategory) {
|
|
+ return target.getDamageBonus(level, org.bukkit.craftbukkit.entity.CraftLivingEntity.fromBukkitEntityCategory(entityCategory));
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public java.util.Set<org.bukkit.inventory.EquipmentSlot> getActiveSlots() {
|
|
+ return java.util.stream.Stream.of(target.slots).map(org.bukkit.craftbukkit.CraftEquipmentSlot::getSlot).collect(java.util.stream.Collectors.toSet());
|
|
+ }
|
|
+
|
|
+ public static io.papermc.paper.enchantments.EnchantmentRarity fromNMSRarity(net.minecraft.world.item.enchantment.Enchantment.Rarity nmsRarity) {
|
|
+ if (nmsRarity == net.minecraft.world.item.enchantment.Enchantment.Rarity.COMMON) {
|
|
+ return io.papermc.paper.enchantments.EnchantmentRarity.COMMON;
|
|
+ } else if (nmsRarity == net.minecraft.world.item.enchantment.Enchantment.Rarity.UNCOMMON) {
|
|
+ return io.papermc.paper.enchantments.EnchantmentRarity.UNCOMMON;
|
|
+ } else if (nmsRarity == net.minecraft.world.item.enchantment.Enchantment.Rarity.RARE) {
|
|
+ return io.papermc.paper.enchantments.EnchantmentRarity.RARE;
|
|
+ } else if (nmsRarity == net.minecraft.world.item.enchantment.Enchantment.Rarity.VERY_RARE) {
|
|
+ return io.papermc.paper.enchantments.EnchantmentRarity.VERY_RARE;
|
|
+ }
|
|
+
|
|
+ throw new IllegalArgumentException(String.format("Unable to convert %s to a enum value of %s.", nmsRarity, io.papermc.paper.enchantments.EnchantmentRarity.class));
|
|
+ }
|
|
// Paper end
|
|
|
|
public net.minecraft.world.item.enchantment.Enchantment getHandle() {
|
|
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 {
|
|
public void setHurtDirection(float hurtDirection) {
|
|
throw new UnsupportedOperationException("Cannot set the hurt direction on a non player");
|
|
}
|
|
+
|
|
+ public static MobType fromBukkitEntityCategory(EntityCategory entityCategory) {
|
|
+ switch (entityCategory) {
|
|
+ case NONE:
|
|
+ return MobType.UNDEFINED;
|
|
+ case UNDEAD:
|
|
+ return MobType.UNDEAD;
|
|
+ case ARTHROPOD:
|
|
+ return MobType.ARTHROPOD;
|
|
+ case ILLAGER:
|
|
+ return MobType.ILLAGER;
|
|
+ case WATER:
|
|
+ return MobType.WATER;
|
|
+ }
|
|
+ throw new IllegalArgumentException(entityCategory + " is an unrecognized entity category");
|
|
+ }
|
|
// Paper end
|
|
}
|
|
diff --git a/src/test/java/io/papermc/paper/enchantments/EnchantmentRarityTest.java b/src/test/java/io/papermc/paper/enchantments/EnchantmentRarityTest.java
|
|
new file mode 100644
|
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
|
|
--- /dev/null
|
|
+++ b/src/test/java/io/papermc/paper/enchantments/EnchantmentRarityTest.java
|
|
@@ -0,0 +0,0 @@
|
|
+package io.papermc.paper.enchantments;
|
|
+
|
|
+import net.minecraft.world.item.enchantment.Enchantment.Rarity;
|
|
+import org.bukkit.craftbukkit.enchantments.CraftEnchantment;
|
|
+import org.junit.jupiter.api.Test;
|
|
+
|
|
+import static org.junit.jupiter.api.Assertions.assertNotNull;
|
|
+
|
|
+public class EnchantmentRarityTest {
|
|
+
|
|
+ @Test
|
|
+ public void test() {
|
|
+ for (Rarity nmsRarity : Rarity.values()) {
|
|
+ // Will throw exception if a bukkit counterpart is not found
|
|
+ CraftEnchantment.fromNMSRarity(nmsRarity);
|
|
+ }
|
|
+ }
|
|
+}
|
|
diff --git a/src/test/java/io/papermc/paper/entity/EntityCategoryTest.java b/src/test/java/io/papermc/paper/entity/EntityCategoryTest.java
|
|
new file mode 100644
|
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
|
|
--- /dev/null
|
|
+++ b/src/test/java/io/papermc/paper/entity/EntityCategoryTest.java
|
|
@@ -0,0 +0,0 @@
|
|
+package io.papermc.paper.entity;
|
|
+
|
|
+import com.google.common.base.Joiner;
|
|
+import com.google.common.collect.Maps;
|
|
+import com.google.common.collect.Sets;
|
|
+import net.minecraft.world.entity.MobType;
|
|
+import org.bukkit.craftbukkit.entity.CraftLivingEntity;
|
|
+import org.bukkit.entity.EntityCategory;
|
|
+import org.junit.jupiter.api.Test;
|
|
+
|
|
+import java.lang.reflect.Field;
|
|
+import java.util.Map;
|
|
+import java.util.Set;
|
|
+
|
|
+import static org.junit.jupiter.api.Assertions.assertTrue;
|
|
+
|
|
+public class EntityCategoryTest {
|
|
+
|
|
+ @Test
|
|
+ public void test() throws IllegalAccessException {
|
|
+
|
|
+ Map<MobType, String> enumMonsterTypeFieldMap = Maps.newHashMap();
|
|
+ for (Field field : MobType.class.getDeclaredFields()) {
|
|
+ if (field.getType() == MobType.class) {
|
|
+ enumMonsterTypeFieldMap.put( (MobType) field.get(null), field.getName());
|
|
+ }
|
|
+ }
|
|
+
|
|
+ for (EntityCategory entityCategory : EntityCategory.values()) {
|
|
+ enumMonsterTypeFieldMap.remove(CraftLivingEntity.fromBukkitEntityCategory(entityCategory));
|
|
+ }
|
|
+ assertTrue(enumMonsterTypeFieldMap.size() == 0, MobType.class.getName() + " instance(s): " + Joiner.on(", ").join(enumMonsterTypeFieldMap.values()) + " do not have bukkit equivalents");
|
|
+ }
|
|
+}
|