mirror of
https://github.com/alexcrea/CustomAnvil.git
synced 2026-06-23 16:16:17 +02:00
Add level limit bypass
This commit is contained in:
parent
304abd89d7
commit
7d8b733cc7
2 changed files with 90 additions and 5 deletions
|
|
@ -12,14 +12,15 @@ import org.bukkit.permissions.PermissionAttachment;
|
||||||
import org.junit.jupiter.api.Assertions;
|
import org.junit.jupiter.api.Assertions;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
import xyz.alexcrea.cuanvil.api.EnchantmentApi;
|
||||||
import xyz.alexcrea.cuanvil.config.ConfigHolder;
|
import xyz.alexcrea.cuanvil.config.ConfigHolder;
|
||||||
import xyz.alexcrea.cuanvil.tests.DefaultCustomAnvilTest;
|
import xyz.alexcrea.cuanvil.tests.ConfigResetCustomAnvilTest;
|
||||||
import xyz.alexcrea.cuanvil.util.AnvilFuseTestData;
|
import xyz.alexcrea.cuanvil.util.AnvilFuseTestData;
|
||||||
import xyz.alexcrea.cuanvil.util.AnvilFuseTestUtil;
|
import xyz.alexcrea.cuanvil.util.AnvilFuseTestUtil;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class EnchantmentUtilTests extends DefaultCustomAnvilTest {
|
public class EnchantmentUtilTests extends ConfigResetCustomAnvilTest {
|
||||||
|
|
||||||
private AnvilInventory anvil;
|
private AnvilInventory anvil;
|
||||||
private PlayerMock player;
|
private PlayerMock player;
|
||||||
|
|
@ -47,7 +48,7 @@ public class EnchantmentUtilTests extends DefaultCustomAnvilTest {
|
||||||
Assertions.assertEquals("ca.bypass.fuse", permission, "bypass fuse permission changed. " +
|
Assertions.assertEquals("ca.bypass.fuse", permission, "bypass fuse permission changed. " +
|
||||||
"Caution with that as it will break some server CustomAnvil setup.");
|
"Caution with that as it will break some server CustomAnvil setup.");
|
||||||
|
|
||||||
// Create item
|
// Create ingredient item
|
||||||
ItemStack normalStick = new ItemStackMock(Material.STICK);
|
ItemStack normalStick = new ItemStackMock(Material.STICK);
|
||||||
ItemStack sharpnessBook = AnvilFuseTestUtil.prepareItem(
|
ItemStack sharpnessBook = AnvilFuseTestUtil.prepareItem(
|
||||||
Material.ENCHANTED_BOOK,
|
Material.ENCHANTED_BOOK,
|
||||||
|
|
@ -57,6 +58,7 @@ public class EnchantmentUtilTests extends DefaultCustomAnvilTest {
|
||||||
Material.STICK,
|
Material.STICK,
|
||||||
List.of("sharpness"), 1);
|
List.of("sharpness"), 1);
|
||||||
|
|
||||||
|
// Create result item
|
||||||
ItemStack sharpnessResultStick = AnvilFuseTestUtil.prepareItem(
|
ItemStack sharpnessResultStick = AnvilFuseTestUtil.prepareItem(
|
||||||
Material.STICK, 1,
|
Material.STICK, 1,
|
||||||
List.of("sharpness"), 1);
|
List.of("sharpness"), 1);
|
||||||
|
|
@ -64,7 +66,7 @@ public class EnchantmentUtilTests extends DefaultCustomAnvilTest {
|
||||||
Material.STICK, 1,
|
Material.STICK, 1,
|
||||||
List.of("sharpness"), 2);
|
List.of("sharpness"), 2);
|
||||||
|
|
||||||
// Create anvil fuse data
|
// Create failing anvil fuse data
|
||||||
AnvilFuseTestData nullResultData = new AnvilFuseTestData(
|
AnvilFuseTestData nullResultData = new AnvilFuseTestData(
|
||||||
normalStick, sharpnessBook,
|
normalStick, sharpnessBook,
|
||||||
null
|
null
|
||||||
|
|
@ -74,6 +76,7 @@ public class EnchantmentUtilTests extends DefaultCustomAnvilTest {
|
||||||
null
|
null
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Create successful anvil fuse data
|
||||||
AnvilFuseTestData legalResultData = new AnvilFuseTestData(
|
AnvilFuseTestData legalResultData = new AnvilFuseTestData(
|
||||||
normalStick, sharpnessBook,
|
normalStick, sharpnessBook,
|
||||||
sharpnessResultStick
|
sharpnessResultStick
|
||||||
|
|
@ -98,5 +101,85 @@ public class EnchantmentUtilTests extends DefaultCustomAnvilTest {
|
||||||
AnvilFuseTestUtil.executeAnvilTest(anvil, player, legalResultData2);
|
AnvilFuseTestUtil.executeAnvilTest(anvil, player, legalResultData2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testLeveLimitFuse(){
|
||||||
|
String permission = CustomAnvil.bypassLevelPermission;
|
||||||
|
Assertions.assertEquals("ca.bypass.level", permission, "level fuse permission changed. " +
|
||||||
|
"Caution with that as it will break some server CustomAnvil setup.");
|
||||||
|
|
||||||
|
// Create ingredient item
|
||||||
|
ItemStack sharpness5Sword = AnvilFuseTestUtil.prepareItem(
|
||||||
|
Material.DIAMOND_SWORD,
|
||||||
|
List.of("sharpness"), 5);
|
||||||
|
|
||||||
|
ItemStack sharpnessBook = AnvilFuseTestUtil.prepareItem(
|
||||||
|
Material.ENCHANTED_BOOK,
|
||||||
|
List.of("sharpness"), 1);
|
||||||
|
ItemStack sharpness5Book = AnvilFuseTestUtil.prepareItem(
|
||||||
|
Material.ENCHANTED_BOOK,
|
||||||
|
List.of("sharpness"), 5);
|
||||||
|
ItemStack sharpness6Book = AnvilFuseTestUtil.prepareItem(
|
||||||
|
Material.ENCHANTED_BOOK,
|
||||||
|
List.of("sharpness"), 6);
|
||||||
|
|
||||||
|
// Create result item
|
||||||
|
ItemStack sharpness2BookResult = AnvilFuseTestUtil.prepareItem(
|
||||||
|
Material.ENCHANTED_BOOK, 1,
|
||||||
|
List.of("sharpness"), 2);
|
||||||
|
ItemStack sharpness6SwordResult = AnvilFuseTestUtil.prepareItem(
|
||||||
|
Material.DIAMOND_SWORD, 1,
|
||||||
|
List.of("sharpness"), 6);
|
||||||
|
|
||||||
|
// Create failing anvil fuse data
|
||||||
|
AnvilFuseTestData nullResultData = new AnvilFuseTestData(
|
||||||
|
sharpnessBook, sharpnessBook,
|
||||||
|
null
|
||||||
|
);
|
||||||
|
AnvilFuseTestData nullResultData2 = new AnvilFuseTestData(
|
||||||
|
sharpness5Sword, sharpness6Book,
|
||||||
|
null
|
||||||
|
);
|
||||||
|
AnvilFuseTestData nullResultData3 = new AnvilFuseTestData(
|
||||||
|
sharpness5Sword, sharpness5Book,
|
||||||
|
null
|
||||||
|
);
|
||||||
|
|
||||||
|
// Create successful anvil fuse data
|
||||||
|
AnvilFuseTestData legalResultData = new AnvilFuseTestData(
|
||||||
|
sharpnessBook, sharpnessBook,
|
||||||
|
sharpness2BookResult
|
||||||
|
// TODO add expected price
|
||||||
|
);
|
||||||
|
AnvilFuseTestData legalResultData2 = new AnvilFuseTestData(
|
||||||
|
sharpness5Sword, sharpness6Book,
|
||||||
|
sharpness6SwordResult
|
||||||
|
// TODO add expected price
|
||||||
|
);
|
||||||
|
AnvilFuseTestData legalResultData3 = new AnvilFuseTestData(
|
||||||
|
sharpness5Sword, sharpness5Book,
|
||||||
|
sharpness6SwordResult
|
||||||
|
// TODO add expected price
|
||||||
|
);
|
||||||
|
|
||||||
|
// Test failing result first
|
||||||
|
AnvilFuseTestUtil.executeAnvilTest(anvil, player, nullResultData2);
|
||||||
|
AnvilFuseTestUtil.executeAnvilTest(anvil, player, nullResultData3);
|
||||||
|
|
||||||
|
// Test working sharpness 2
|
||||||
|
AnvilFuseTestUtil.executeAnvilTest(anvil, player, legalResultData);
|
||||||
|
|
||||||
|
// Set merge limit to 2 & test
|
||||||
|
ConfigHolder.DEFAULT_CONFIG.getConfig().set("disable-merge-over.minecraft:sharpness", 1);
|
||||||
|
AnvilFuseTestUtil.executeAnvilTest(anvil, player, nullResultData);
|
||||||
|
|
||||||
|
// Add permission
|
||||||
|
PermissionAttachment attachment = player.addAttachment(plugin);
|
||||||
|
attachment.setPermission(permission, true);
|
||||||
|
|
||||||
|
// Test working sharpness 2
|
||||||
|
AnvilFuseTestUtil.executeAnvilTest(anvil, player, legalResultData);
|
||||||
|
AnvilFuseTestUtil.executeAnvilTest(anvil, player, legalResultData2);
|
||||||
|
AnvilFuseTestUtil.executeAnvilTest(anvil, player, legalResultData3);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package xyz.alexcrea.cuanvil.mock;
|
package xyz.alexcrea.cuanvil.mock;
|
||||||
|
|
||||||
import be.seeseemelk.mockbukkit.inventory.meta.ItemMetaMock;
|
import be.seeseemelk.mockbukkit.inventory.meta.ItemMetaMock;
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
import org.bukkit.enchantments.Enchantment;
|
import org.bukkit.enchantments.Enchantment;
|
||||||
import org.bukkit.inventory.meta.EnchantmentStorageMeta;
|
import org.bukkit.inventory.meta.EnchantmentStorageMeta;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
@ -35,9 +36,10 @@ public class EnchantedItemMetaMock extends ItemMetaMock implements EnchantmentSt
|
||||||
return super.getEnchantLevel(ench);
|
return super.getEnchantLevel(ench);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// badly imitate paper (and I hope spigot) behavior and avoid concurrent modification exception
|
||||||
@Override
|
@Override
|
||||||
public @NotNull Map<Enchantment, Integer> getStoredEnchants() {
|
public @NotNull Map<Enchantment, Integer> getStoredEnchants() {
|
||||||
return super.getEnchants();
|
return ImmutableMap.copyOf(super.getEnchants());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue