From ed0584f930afcef61bda35f998c7660f2d1ae1d2 Mon Sep 17 00:00:00 2001 From: Bukkit/Spigot Date: Sat, 25 Feb 2012 17:57:42 -0500 Subject: [PATCH] [Bleeding] Fixed potion tests. By: Celtic Minstrel --- .../main/java/org/bukkit/potion/Potion.java | 12 ++---- .../java/org/bukkit/potion/PotionTest.java | 41 +++++++++++++------ 2 files changed, 32 insertions(+), 21 deletions(-) diff --git a/paper-api/src/main/java/org/bukkit/potion/Potion.java b/paper-api/src/main/java/org/bukkit/potion/Potion.java index 9ff0f41c98..a66d1f9199 100644 --- a/paper-api/src/main/java/org/bukkit/potion/Potion.java +++ b/paper-api/src/main/java/org/bukkit/potion/Potion.java @@ -14,8 +14,6 @@ import org.bukkit.inventory.ItemStack; public class Potion { private boolean extended = false; private boolean splash = false; - @Deprecated - private Tier tier = Tier.ONE; private int level = 1; private int name = -1; private PotionType type; @@ -194,7 +192,7 @@ public class Potion { */ @Deprecated public Tier getTier() { - return tier; + return level == 2 ? Tier.TWO : Tier.ONE; } /** @@ -267,7 +265,6 @@ public class Potion { @Deprecated public void setTier(Tier tier) { Validate.notNull(tier, "tier cannot be null"); - this.tier = tier; this.level = (tier == Tier.TWO ? 2 : 1); } @@ -292,7 +289,6 @@ public class Potion { int max = type.getMaxLevel(); Validate.isTrue(level > 0 && level <= max, "Level must be " + (max == 1 ? "" : "between 1 and ") + max + " for this potion"); this.level = level; - this.tier = level == 2 ? Tier.TWO : Tier.ONE; } /** @@ -309,9 +305,9 @@ public class Potion { // Without this, mundanePotion.toDamageValue() would return 0 damage = (short) (name == 0 ? 8192 : name); } else { - damage = (short) level; - damage = (short) type.getDamageValue(); - damage |= level << TIER_SHIFT; + damage = (short) (level - 1); + damage <<= TIER_SHIFT; + damage |= (short) type.getDamageValue(); } if (splash) { damage |= SPLASH_BIT; diff --git a/paper-api/src/test/java/org/bukkit/potion/PotionTest.java b/paper-api/src/test/java/org/bukkit/potion/PotionTest.java index fe641b865a..afc54352c6 100644 --- a/paper-api/src/test/java/org/bukkit/potion/PotionTest.java +++ b/paper-api/src/test/java/org/bukkit/potion/PotionTest.java @@ -6,7 +6,6 @@ import static org.hamcrest.Matchers.is; import org.bukkit.Material; import org.bukkit.entity.LivingEntity; import org.bukkit.inventory.ItemStack; -import org.bukkit.potion.Potion.Tier; import org.junit.Test; public class PotionTest { @@ -25,7 +24,7 @@ public class PotionTest { potion = Potion.fromDamage(PotionType.POISON.getDamageValue() | SPLASH_BIT); assertTrue(potion.getType() == PotionType.POISON && potion.isSplash()); potion = Potion.fromDamage(0x25 /* Potion of Healing II */); - assertTrue(potion.getType() == PotionType.INSTANT_HEAL && potion.getTier() == Tier.TWO); + assertTrue(potion.getType() == PotionType.INSTANT_HEAL && potion.getLevel() == 2); } @Test(expected = IllegalArgumentException.class) @@ -45,6 +44,22 @@ public class PotionTest { @Test public void setExtended() { + PotionEffectType.registerPotionEffectType(new PotionEffectType(19){ + @Override + public double getDurationModifier() { + return 1; + } + + @Override + public String getName() { + return "Poison"; + } + + @Override + public boolean isInstant() { + return false; + } + }); Potion potion = new Potion(PotionType.POISON); assertFalse(potion.hasExtendedDuration()); potion.setHasExtendedDuration(true); @@ -62,32 +77,32 @@ public class PotionTest { } @Test - public void setTier() { + public void setLevel() { Potion potion = new Potion(PotionType.POISON); - assertThat(potion.getTier(), is(Tier.ONE)); - potion.setTier(Tier.TWO); - assertThat(potion.getTier(), is(Tier.TWO)); - assertTrue(potion.toDamageValue() == (PotionType.POISON.getDamageValue() | potion.getTier().getDamageBit())); + assertEquals(1, potion.getLevel()); + potion.setLevel(2); + assertEquals(2, potion.getLevel()); + assertTrue((potion.toDamageValue() & 0x3F) == (PotionType.POISON.getDamageValue() | 0x20)); } @Test public void useNulls() { try { - new Potion(null); - fail("cannot use null type in constructor"); + new Potion(null, 2); + fail("cannot use null type in constructor with a level"); } catch (IllegalArgumentException ex) { } try { - new Potion(PotionType.POISON, null); - fail("cannot use null tier in constructor"); + new Potion(PotionType.POISON, 3); + fail("level must be less than 3 in constructor"); } catch (IllegalArgumentException ex) { } Potion potion = new Potion(PotionType.POISON); try { - potion.setTier(null); - fail("cannot set a null tier"); + potion.setLevel(3); + fail("level must be set less than 3"); } catch (IllegalArgumentException ex) { }