From 0014e10edd614b25cf7c55110339c16e80b9bdee Mon Sep 17 00:00:00 2001 From: rooooose-b <142353909+rooooose-b@users.noreply.github.com> Date: Fri, 15 Mar 2024 22:21:09 +0100 Subject: [PATCH 01/28] fix: new skill ID system --- .../java/io/github/alathra/alathraskills/api/SkillsManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java b/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java index 35c1011..cde3499 100644 --- a/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java +++ b/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java @@ -58,7 +58,7 @@ public void loadSkills() { } public void loadWoodcuttingSkills() { - woodcuttingSkills.put(1, new SaveTheTreesSkill(1)); + woodcuttingSkills.put(301, new SaveTheTreesSkill(301)); } } From 34c049800ca14e39ff8fca91146dcb4dac72be44 Mon Sep 17 00:00:00 2001 From: rooooose-b <142353909+rooooose-b@users.noreply.github.com> Date: Tue, 19 Mar 2024 01:40:13 +0100 Subject: [PATCH 02/28] refactor: moved save the trees skill logic --- .../listeners/ListenerHandler.java | 4 +- .../skills/WoodcuttingSkillsListener.java | 25 +++++++++++ .../woodcutting/SaveTheTreesListener.java | 42 ------------------- .../skills/woodcutting/SaveTheTreesSkill.java | 24 +++++++++++ 4 files changed, 51 insertions(+), 44 deletions(-) create mode 100644 src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java delete mode 100644 src/main/java/io/github/alathra/alathraskills/listeners/skills/woodcutting/SaveTheTreesListener.java diff --git a/src/main/java/io/github/alathra/alathraskills/listeners/ListenerHandler.java b/src/main/java/io/github/alathra/alathraskills/listeners/ListenerHandler.java index 3d62e55..dede86b 100644 --- a/src/main/java/io/github/alathra/alathraskills/listeners/ListenerHandler.java +++ b/src/main/java/io/github/alathra/alathraskills/listeners/ListenerHandler.java @@ -3,7 +3,7 @@ import io.github.alathra.alathraskills.AlathraSkills; import io.github.alathra.alathraskills.Reloadable; import io.github.alathra.alathraskills.listeners.exp.WoodcuttingExpListener; -import io.github.alathra.alathraskills.listeners.skills.woodcutting.SaveTheTreesListener; +import io.github.alathra.alathraskills.listeners.skills.WoodcuttingSkillsListener; /** * A class to handle registration of event listeners. @@ -32,6 +32,6 @@ public void onDisable() { } public void registerWoodcuttingSkillsListeners() { - plugin.getServer().getPluginManager().registerEvents(new SaveTheTreesListener(), plugin); + plugin.getServer().getPluginManager().registerEvents(new WoodcuttingSkillsListener(), plugin); } } diff --git a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java new file mode 100644 index 0000000..9385cc2 --- /dev/null +++ b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java @@ -0,0 +1,25 @@ +package io.github.alathra.alathraskills.listeners.skills; + +import io.github.alathra.alathraskills.skills.woodcutting.SaveTheTreesSkill; +import org.bukkit.Tag; +import org.bukkit.block.Block; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.block.BlockBreakEvent; + +public class WoodcuttingSkillsListener implements Listener { + + @EventHandler + public void BlockBreakListener(BlockBreakEvent event) { + Block block = event.getBlock(); + + if (!Tag.LOGS.isTagged(block.getType())) + return; + + // TODO Check if block was placed by player + + // TODO check if player has skills before calling function + SaveTheTreesSkill.saveTheTreeSkillRun(block); + } + +} diff --git a/src/main/java/io/github/alathra/alathraskills/listeners/skills/woodcutting/SaveTheTreesListener.java b/src/main/java/io/github/alathra/alathraskills/listeners/skills/woodcutting/SaveTheTreesListener.java deleted file mode 100644 index 766a161..0000000 --- a/src/main/java/io/github/alathra/alathraskills/listeners/skills/woodcutting/SaveTheTreesListener.java +++ /dev/null @@ -1,42 +0,0 @@ -package io.github.alathra.alathraskills.listeners.skills.woodcutting; - -import org.bukkit.Material; -import org.bukkit.Tag; -import org.bukkit.block.Block; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.block.BlockBreakEvent; - -public class SaveTheTreesListener implements Listener { - - @EventHandler - public void BlockBreakListener(BlockBreakEvent event) { - Block block = event.getBlock(); - - if (!Tag.LOGS.isTagged(block.getType())) - return; - - // TODO Check if block was placed by player - - Material blockUnder = block.getRelative(0, -1, 0).getType(); - if (!Tag.DIRT.isTagged(blockUnder)) - return; - - String blockString = block.getType().toString(); - - // Removes "STRIPPED_". - if (blockString.contains("STRIPPED")) - blockString = blockString.substring(9); - - String[] materialArray = blockString.split("_"); - - // Handles dark oak. - if (materialArray.length > 2 && materialArray[2] != null) - materialArray[0] = materialArray[0].concat("_").concat(materialArray[1]); - - String sapling = materialArray[0].concat("_SAPLING"); - - block.setType(Material.getMaterial(sapling)); - } - -} diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/SaveTheTreesSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/SaveTheTreesSkill.java index 31137fb..65cf7de 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/SaveTheTreesSkill.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/SaveTheTreesSkill.java @@ -5,6 +5,8 @@ import io.github.alathra.alathraskills.api.SkillsManager; import io.github.alathra.alathraskills.skills.Skill; import org.bukkit.Material; +import org.bukkit.Tag; +import org.bukkit.block.Block; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; @@ -26,4 +28,26 @@ public SaveTheTreesSkill(int id) { skillsManager = AlathraSkills.getSkillsManager(); super.setCategory(skillsManager.skillCategories.get(3)); } + + public static void saveTheTreeSkillRun(Block eventBlock) { + Material blockUnder = eventBlock.getRelative(0, -1, 0).getType(); + if (!Tag.DIRT.isTagged(blockUnder)) + return; + + String blockString = eventBlock.getType().toString(); + + // Removes "STRIPPED_". + if (blockString.contains("STRIPPED")) + blockString = blockString.substring(9); + + String[] materialArray = blockString.split("_"); + + // Handles dark oak. + if (materialArray.length > 2 && materialArray[2] != null) + materialArray[0] = materialArray[0].concat("_").concat(materialArray[1]); + + String sapling = materialArray[0].concat("_SAPLING"); + + eventBlock.setType(Material.getMaterial(sapling)); + } } From e469c7af102711cf3d0c962b1924e0c6528dd54c Mon Sep 17 00:00:00 2001 From: rooooose-b <142353909+rooooose-b@users.noreply.github.com> Date: Tue, 19 Mar 2024 01:56:37 +0100 Subject: [PATCH 03/28] feat: added precise chop level one --- .../alathraskills/api/SkillsManager.java | 2 + .../skills/WoodcuttingSkillsListener.java | 2 + .../woodcutting/PreciseChopOneSkill.java | 47 +++++++++++++++++++ 3 files changed, 51 insertions(+) create mode 100644 src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopOneSkill.java diff --git a/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java b/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java index cde3499..ad4de14 100644 --- a/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java +++ b/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java @@ -9,6 +9,7 @@ import io.github.alathra.alathraskills.skills.categories.FarmingSkillCategory; import io.github.alathra.alathraskills.skills.categories.MiningSkillCategory; import io.github.alathra.alathraskills.skills.categories.WoodcuttingSkillCategory; +import io.github.alathra.alathraskills.skills.woodcutting.PreciseChopOneSkill; import io.github.alathra.alathraskills.skills.woodcutting.SaveTheTreesSkill; public class SkillsManager implements Reloadable { @@ -59,6 +60,7 @@ public void loadSkills() { public void loadWoodcuttingSkills() { woodcuttingSkills.put(301, new SaveTheTreesSkill(301)); + woodcuttingSkills.put(302, new PreciseChopOneSkill(302)); } } diff --git a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java index 9385cc2..4a226f9 100644 --- a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java +++ b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java @@ -1,5 +1,6 @@ package io.github.alathra.alathraskills.listeners.skills; +import io.github.alathra.alathraskills.skills.woodcutting.PreciseChopOneSkill; import io.github.alathra.alathraskills.skills.woodcutting.SaveTheTreesSkill; import org.bukkit.Tag; import org.bukkit.block.Block; @@ -20,6 +21,7 @@ public void BlockBreakListener(BlockBreakEvent event) { // TODO check if player has skills before calling function SaveTheTreesSkill.saveTheTreeSkillRun(block); + PreciseChopOneSkill.preciseChopOneSkill(block); } } diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopOneSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopOneSkill.java new file mode 100644 index 0000000..294d2a6 --- /dev/null +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopOneSkill.java @@ -0,0 +1,47 @@ +package io.github.alathra.alathraskills.skills.woodcutting; + +import com.github.milkdrinkers.colorparser.ColorParser; +import io.github.alathra.alathraskills.AlathraSkills; +import io.github.alathra.alathraskills.api.SkillsManager; +import io.github.alathra.alathraskills.skills.Skill; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.World; +import org.bukkit.block.Block; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.util.Collections; +import java.util.Random; + +public class PreciseChopOneSkill extends Skill { + + private SkillsManager skillsManager; + + public PreciseChopOneSkill(int id) { + super(id, "Precise Chop 1", "Get a chance at some extra logs!"); + + ItemStack icon = new ItemStack(Material.OAK_LOG); + ItemMeta meta = icon.getItemMeta(); + meta.displayName(ColorParser.of("" + super.getName() + "").build()); + meta.lore(Collections.singletonList(ColorParser.of("" + super.getDescription() + "").build())); + icon.setItemMeta(meta); + super.setIcon(icon); + + skillsManager = AlathraSkills.getSkillsManager(); + super.setCategory(skillsManager.skillCategories.get(3)); + } + + public static void preciseChopOneSkill(Block eventBlock) { + int random = new Random().nextInt(20); + if (random != 0) + return; + + Material material = eventBlock.getType(); + Location location = eventBlock.getLocation(); + World world = location.getWorld(); + + world.dropItemNaturally(location, new ItemStack(material)); + } + +} From c599007ab2fc649b91bf6b5b3c1c1a0eb4bd6c1d Mon Sep 17 00:00:00 2001 From: rooooose-b <142353909+rooooose-b@users.noreply.github.com> Date: Tue, 19 Mar 2024 01:59:44 +0100 Subject: [PATCH 04/28] feat: added precise chop level two --- .../alathraskills/api/SkillsManager.java | 2 + .../skills/WoodcuttingSkillsListener.java | 2 + .../woodcutting/PreciseChopTwoSkill.java | 46 +++++++++++++++++++ 3 files changed, 50 insertions(+) create mode 100644 src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopTwoSkill.java diff --git a/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java b/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java index ad4de14..734a984 100644 --- a/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java +++ b/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java @@ -10,6 +10,7 @@ import io.github.alathra.alathraskills.skills.categories.MiningSkillCategory; import io.github.alathra.alathraskills.skills.categories.WoodcuttingSkillCategory; import io.github.alathra.alathraskills.skills.woodcutting.PreciseChopOneSkill; +import io.github.alathra.alathraskills.skills.woodcutting.PreciseChopTwoSkill; import io.github.alathra.alathraskills.skills.woodcutting.SaveTheTreesSkill; public class SkillsManager implements Reloadable { @@ -61,6 +62,7 @@ public void loadSkills() { public void loadWoodcuttingSkills() { woodcuttingSkills.put(301, new SaveTheTreesSkill(301)); woodcuttingSkills.put(302, new PreciseChopOneSkill(302)); + woodcuttingSkills.put(303, new PreciseChopTwoSkill(302)); } } diff --git a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java index 4a226f9..cf25345 100644 --- a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java +++ b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java @@ -1,6 +1,7 @@ package io.github.alathra.alathraskills.listeners.skills; import io.github.alathra.alathraskills.skills.woodcutting.PreciseChopOneSkill; +import io.github.alathra.alathraskills.skills.woodcutting.PreciseChopTwoSkill; import io.github.alathra.alathraskills.skills.woodcutting.SaveTheTreesSkill; import org.bukkit.Tag; import org.bukkit.block.Block; @@ -22,6 +23,7 @@ public void BlockBreakListener(BlockBreakEvent event) { // TODO check if player has skills before calling function SaveTheTreesSkill.saveTheTreeSkillRun(block); PreciseChopOneSkill.preciseChopOneSkill(block); + PreciseChopTwoSkill.preciseChopTwoSkill(block); } } diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopTwoSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopTwoSkill.java new file mode 100644 index 0000000..4f4a648 --- /dev/null +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopTwoSkill.java @@ -0,0 +1,46 @@ +package io.github.alathra.alathraskills.skills.woodcutting; + +import com.github.milkdrinkers.colorparser.ColorParser; +import io.github.alathra.alathraskills.AlathraSkills; +import io.github.alathra.alathraskills.api.SkillsManager; +import io.github.alathra.alathraskills.skills.Skill; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.World; +import org.bukkit.block.Block; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.util.Collections; +import java.util.Random; + +public class PreciseChopTwoSkill extends Skill { + + private SkillsManager skillsManager; + + public PreciseChopTwoSkill(int id) { + super(id, "Precise Chop 2", "Get a greater chance at some extra logs!"); + + ItemStack icon = new ItemStack(Material.OAK_LOG); + ItemMeta meta = icon.getItemMeta(); + meta.displayName(ColorParser.of("" + super.getName() + "").build()); + meta.lore(Collections.singletonList(ColorParser.of("" + super.getDescription() + "").build())); + icon.setItemMeta(meta); + super.setIcon(icon); + + skillsManager = AlathraSkills.getSkillsManager(); + super.setCategory(skillsManager.skillCategories.get(3)); + } + + public static void preciseChopTwoSkill(Block eventBlock) { + int random = new Random().nextInt(20); + if (random > 1) + return; + + Material material = eventBlock.getType(); + Location location = eventBlock.getLocation(); + World world = location.getWorld(); + + world.dropItemNaturally(location, new ItemStack(material)); + } +} From 30d2aad07dcaf69261b715decfabadab4703f0b0 Mon Sep 17 00:00:00 2001 From: rooooose-b <142353909+rooooose-b@users.noreply.github.com> Date: Tue, 19 Mar 2024 02:30:01 +0100 Subject: [PATCH 05/28] feat: added trimmer level one --- .../alathraskills/api/SkillsManager.java | 2 + .../skills/WoodcuttingSkillsListener.java | 33 +++++++++++--- .../skills/woodcutting/TrimmerOneSkill.java | 45 +++++++++++++++++++ 3 files changed, 73 insertions(+), 7 deletions(-) create mode 100644 src/main/java/io/github/alathra/alathraskills/skills/woodcutting/TrimmerOneSkill.java diff --git a/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java b/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java index 734a984..1b6fd2e 100644 --- a/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java +++ b/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java @@ -12,6 +12,7 @@ import io.github.alathra.alathraskills.skills.woodcutting.PreciseChopOneSkill; import io.github.alathra.alathraskills.skills.woodcutting.PreciseChopTwoSkill; import io.github.alathra.alathraskills.skills.woodcutting.SaveTheTreesSkill; +import io.github.alathra.alathraskills.skills.woodcutting.TrimmerOneSkill; public class SkillsManager implements Reloadable { @@ -63,6 +64,7 @@ public void loadWoodcuttingSkills() { woodcuttingSkills.put(301, new SaveTheTreesSkill(301)); woodcuttingSkills.put(302, new PreciseChopOneSkill(302)); woodcuttingSkills.put(303, new PreciseChopTwoSkill(302)); + woodcuttingSkills.put(304, new TrimmerOneSkill(304)); } } diff --git a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java index cf25345..33b0dcc 100644 --- a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java +++ b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java @@ -3,27 +3,46 @@ import io.github.alathra.alathraskills.skills.woodcutting.PreciseChopOneSkill; import io.github.alathra.alathraskills.skills.woodcutting.PreciseChopTwoSkill; import io.github.alathra.alathraskills.skills.woodcutting.SaveTheTreesSkill; +import io.github.alathra.alathraskills.skills.woodcutting.TrimmerOneSkill; +import org.bukkit.Material; import org.bukkit.Tag; import org.bukkit.block.Block; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.event.block.BlockDamageEvent; public class WoodcuttingSkillsListener implements Listener { @EventHandler public void BlockBreakListener(BlockBreakEvent event) { Block block = event.getBlock(); - - if (!Tag.LOGS.isTagged(block.getType())) - return; + Material material = block.getType(); // TODO Check if block was placed by player - // TODO check if player has skills before calling function - SaveTheTreesSkill.saveTheTreeSkillRun(block); - PreciseChopOneSkill.preciseChopOneSkill(block); - PreciseChopTwoSkill.preciseChopTwoSkill(block); + if (Tag.LOGS.isTagged(material)) { + // TODO check if player has skills before calling function + SaveTheTreesSkill.saveTheTreeSkillRun(block); + PreciseChopOneSkill.preciseChopOneSkill(block); + PreciseChopTwoSkill.preciseChopTwoSkill(block); + } + + if (Tag.LEAVES.isTagged(material)) { + TrimmerOneSkill.trimmerOneSkillRun(block); + } } + + // TODO check if player has trimmer skill + @EventHandler + public void BlockDamageListener(BlockDamageEvent event) { + if (!Tag.LEAVES.isTagged(event.getBlock().getType())) + return; + + if (!Tag.ITEMS_AXES.isTagged(event.getItemInHand().getType())) + return; + + event.setInstaBreak(true); + } } diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/TrimmerOneSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/TrimmerOneSkill.java new file mode 100644 index 0000000..c0a9f2b --- /dev/null +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/TrimmerOneSkill.java @@ -0,0 +1,45 @@ +package io.github.alathra.alathraskills.skills.woodcutting; + +import com.github.milkdrinkers.colorparser.ColorParser; +import io.github.alathra.alathraskills.AlathraSkills; +import io.github.alathra.alathraskills.api.SkillsManager; +import io.github.alathra.alathraskills.skills.Skill; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.World; +import org.bukkit.block.Block; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.util.Collections; +import java.util.Random; + +public class TrimmerOneSkill extends Skill { + + private SkillsManager skillsManager; + + public TrimmerOneSkill(int id) { + super(id, "Trimmer 1", "Clear those leaves, now with an extra chance at apples!"); + + ItemStack icon = new ItemStack(Material.OAK_LEAVES); + ItemMeta meta = icon.getItemMeta(); + meta.displayName(ColorParser.of("" + super.getName() + "").build()); + meta.lore(Collections.singletonList(ColorParser.of("" + super.getDescription() + "").build())); + icon.setItemMeta(meta); + super.setIcon(icon); + + skillsManager = AlathraSkills.getSkillsManager(); + super.setCategory(skillsManager.skillCategories.get(3)); + } + + public static void trimmerOneSkillRun(Block eventBlock) { + int random = new Random().nextInt(50); + if (random != 0) + return; + + Location location = eventBlock.getLocation(); + World world = eventBlock.getWorld(); + + world.dropItemNaturally(location, new ItemStack(Material.APPLE)); + } +} From d295e2d27110badbf8a7d68edbe380375590cdf2 Mon Sep 17 00:00:00 2001 From: rooooose-b <142353909+rooooose-b@users.noreply.github.com> Date: Tue, 19 Mar 2024 02:48:04 +0100 Subject: [PATCH 06/28] refactor: standardized function names --- .../listeners/skills/WoodcuttingSkillsListener.java | 4 ++-- .../alathraskills/skills/woodcutting/PreciseChopOneSkill.java | 2 +- .../alathraskills/skills/woodcutting/PreciseChopTwoSkill.java | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java index 33b0dcc..88ded18 100644 --- a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java +++ b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java @@ -24,8 +24,8 @@ public void BlockBreakListener(BlockBreakEvent event) { if (Tag.LOGS.isTagged(material)) { // TODO check if player has skills before calling function SaveTheTreesSkill.saveTheTreeSkillRun(block); - PreciseChopOneSkill.preciseChopOneSkill(block); - PreciseChopTwoSkill.preciseChopTwoSkill(block); + PreciseChopOneSkill.preciseChopOneSkillRun(block); + PreciseChopTwoSkill.preciseChopTwoSkillRun(block); } if (Tag.LEAVES.isTagged(material)) { diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopOneSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopOneSkill.java index 294d2a6..f09ebd4 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopOneSkill.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopOneSkill.java @@ -32,7 +32,7 @@ public PreciseChopOneSkill(int id) { super.setCategory(skillsManager.skillCategories.get(3)); } - public static void preciseChopOneSkill(Block eventBlock) { + public static void preciseChopOneSkillRun(Block eventBlock) { int random = new Random().nextInt(20); if (random != 0) return; diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopTwoSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopTwoSkill.java index 4f4a648..4d5823b 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopTwoSkill.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopTwoSkill.java @@ -32,7 +32,7 @@ public PreciseChopTwoSkill(int id) { super.setCategory(skillsManager.skillCategories.get(3)); } - public static void preciseChopTwoSkill(Block eventBlock) { + public static void preciseChopTwoSkillRun(Block eventBlock) { int random = new Random().nextInt(20); if (random > 1) return; From fa41ea11d499b1a54d1b18b2ebfcf0abf50c78ab Mon Sep 17 00:00:00 2001 From: rooooose-b <142353909+rooooose-b@users.noreply.github.com> Date: Tue, 19 Mar 2024 04:04:10 +0100 Subject: [PATCH 07/28] feat: added one swing level one --- .../alathraskills/api/SkillsManager.java | 66 +++++++++++++++++-- .../skills/WoodcuttingSkillsListener.java | 43 ++++++++++-- .../skills/woodcutting/OneSwingOneSkill.java | 66 +++++++++++++++++++ .../skills/woodcutting/util/OneSwing.java | 21 ++++++ 4 files changed, 187 insertions(+), 9 deletions(-) create mode 100644 src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingOneSkill.java create mode 100644 src/main/java/io/github/alathra/alathraskills/skills/woodcutting/util/OneSwing.java diff --git a/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java b/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java index 1b6fd2e..fa9ff71 100644 --- a/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java +++ b/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java @@ -1,6 +1,9 @@ package io.github.alathra.alathraskills.api; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; +import java.util.UUID; import io.github.alathra.alathraskills.AlathraSkills; import io.github.alathra.alathraskills.Reloadable; @@ -9,10 +12,8 @@ import io.github.alathra.alathraskills.skills.categories.FarmingSkillCategory; import io.github.alathra.alathraskills.skills.categories.MiningSkillCategory; import io.github.alathra.alathraskills.skills.categories.WoodcuttingSkillCategory; -import io.github.alathra.alathraskills.skills.woodcutting.PreciseChopOneSkill; -import io.github.alathra.alathraskills.skills.woodcutting.PreciseChopTwoSkill; -import io.github.alathra.alathraskills.skills.woodcutting.SaveTheTreesSkill; -import io.github.alathra.alathraskills.skills.woodcutting.TrimmerOneSkill; +import io.github.alathra.alathraskills.skills.woodcutting.*; +import org.bukkit.entity.Player; public class SkillsManager implements Reloadable { @@ -27,6 +28,12 @@ public class SkillsManager implements Reloadable { // Id, Skill public HashMap woodcuttingSkills = new HashMap<>(); + + // List of UUIDs that have One Swing ready + private List activeOneSwing = new ArrayList<>(); + + // List of UUIDs that have One Swing running + private List runningOneSwing = new ArrayList<>(); public SkillsManager(AlathraSkills plugin) { this.plugin = plugin; @@ -65,6 +72,55 @@ public void loadWoodcuttingSkills() { woodcuttingSkills.put(302, new PreciseChopOneSkill(302)); woodcuttingSkills.put(303, new PreciseChopTwoSkill(302)); woodcuttingSkills.put(304, new TrimmerOneSkill(304)); + woodcuttingSkills.put(305, new OneSwingOneSkill(305)); } - + + public void setOneSwingActive(UUID uuid) { + activeOneSwing.add(uuid); + } + + public void setOneSwingActive(Player player) { + setOneSwingActive(player.getUniqueId()); + } + + public boolean oneSwingActive(UUID uuid) { + return activeOneSwing.contains(uuid); + } + + public boolean oneSwingActive(Player player) { + return oneSwingActive(player.getUniqueId()); + } + + public void setOneSwingNotActive(UUID uuid) { + activeOneSwing.remove(uuid); + } + + public void setOneSwingNotActive(Player player) { + setOneSwingNotActive(player.getUniqueId()); + } + + public void setOneSwingRunning(UUID uuid) { + runningOneSwing.add(uuid); + } + + public void setOneSwingRunning(Player player) { + setOneSwingRunning(player.getUniqueId()); + } + + public boolean oneSwingRunning(UUID uuid) { + return runningOneSwing.contains(uuid); + } + + public boolean oneSwingRunning(Player player) { + return oneSwingRunning(player.getUniqueId()); + } + + public void setOneSwingNotRunning(UUID uuid) { + runningOneSwing.remove(uuid); + } + + public void setOneSwingNotRunning(Player player) { + setOneSwingNotRunning(player.getUniqueId()); + } + } diff --git a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java index 88ded18..1b81b52 100644 --- a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java +++ b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java @@ -1,23 +1,29 @@ package io.github.alathra.alathraskills.listeners.skills; -import io.github.alathra.alathraskills.skills.woodcutting.PreciseChopOneSkill; -import io.github.alathra.alathraskills.skills.woodcutting.PreciseChopTwoSkill; -import io.github.alathra.alathraskills.skills.woodcutting.SaveTheTreesSkill; -import io.github.alathra.alathraskills.skills.woodcutting.TrimmerOneSkill; +import io.github.alathra.alathraskills.AlathraSkills; +import io.github.alathra.alathraskills.api.SkillsManager; +import io.github.alathra.alathraskills.skills.woodcutting.*; +import io.github.alathra.alathraskills.skills.woodcutting.util.OneSwing; import org.bukkit.Material; import org.bukkit.Tag; import org.bukkit.block.Block; +import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockDamageEvent; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.inventory.EquipmentSlot; public class WoodcuttingSkillsListener implements Listener { + private SkillsManager skillsManager = AlathraSkills.getSkillsManager(); + @EventHandler public void BlockBreakListener(BlockBreakEvent event) { Block block = event.getBlock(); Material material = block.getType(); + Player player = event.getPlayer(); // TODO Check if block was placed by player @@ -26,6 +32,14 @@ public void BlockBreakListener(BlockBreakEvent event) { SaveTheTreesSkill.saveTheTreeSkillRun(block); PreciseChopOneSkill.preciseChopOneSkillRun(block); PreciseChopTwoSkill.preciseChopTwoSkillRun(block); + + if (skillsManager.oneSwingActive(player)) { + OneSwingOneSkill.runOneSwingSkill(player, block); + } + + if (skillsManager.oneSwingRunning(player)) { + OneSwing.fellTree(block); + } } if (Tag.LEAVES.isTagged(material)) { @@ -45,4 +59,25 @@ public void BlockDamageListener(BlockDamageEvent event) { event.setInstaBreak(true); } + + @EventHandler + public void RightClickListener(PlayerInteractEvent event) { + if (event.getHand() == EquipmentSlot.OFF_HAND) + return; + + if (!event.hasItem()) + return; + + if (!Tag.ITEMS_AXES.isTagged(event.getMaterial())) + return; + + // Return if right click logs + if (Tag.LOGS.isTagged(event.getClickedBlock().getType())) + return; + + Player player = event.getPlayer(); + + // TODO check if player has skill + OneSwingOneSkill.readyOneSwingOneSkill(player); + } } diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingOneSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingOneSkill.java new file mode 100644 index 0000000..9c36648 --- /dev/null +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingOneSkill.java @@ -0,0 +1,66 @@ +package io.github.alathra.alathraskills.skills.woodcutting; + +import com.github.milkdrinkers.colorparser.ColorParser; +import io.github.alathra.alathraskills.AlathraSkills; +import io.github.alathra.alathraskills.api.SkillsManager; +import io.github.alathra.alathraskills.skills.Skill; +import io.github.alathra.alathraskills.skills.woodcutting.util.OneSwing; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.plugin.Plugin; +import org.bukkit.scheduler.BukkitTask; + +import java.util.Collections; + +public class OneSwingOneSkill extends Skill { + + private static SkillsManager skillsManager; + private static Plugin instance; + private static BukkitTask deactivateSkillTask; + + public OneSwingOneSkill(int id) { + super(id, "One Swing 1", "Chop the whole tree down, in one fell swoop!"); + + ItemStack icon = new ItemStack(Material.NETHERITE_AXE); + ItemMeta meta = icon.getItemMeta(); + meta.displayName(ColorParser.of("" + super.getName() + "").build()); + meta.lore(Collections.singletonList(ColorParser.of("" + super.getDescription() + "").build())); + icon.setItemMeta(meta); + super.setIcon(icon); + + skillsManager = AlathraSkills.getSkillsManager(); + instance = AlathraSkills.getInstance(); + super.setCategory(skillsManager.skillCategories.get(3)); + } + + public static void readyOneSwingOneSkill(Player player) { + if(skillsManager.oneSwingActive(player)) { + skillsManager.setOneSwingActive(player); + + player.sendActionBar(ColorParser.of("One Swing is ready.").build()); + + deactivateSkillTask = Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(instance, () -> { + skillsManager.setOneSwingNotActive(player); + player.sendActionBar(ColorParser.of("One Swing is not ready.").build()); + }, 100L); + } else { + skillsManager.setOneSwingNotActive(player); + Bukkit.getServer().getScheduler().cancelTask(deactivateSkillTask.getTaskId()); + + player.sendActionBar(ColorParser.of("One Swing is not ready.").build()); + } + } + + public static void runOneSwingSkill(Player player, Block block) { + skillsManager.setOneSwingRunning(player); + skillsManager.setOneSwingNotActive(player); + Bukkit.getServer().getScheduler().cancelTask(deactivateSkillTask.getTaskId()); + + Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(instance, () -> skillsManager.setOneSwingNotRunning(player), 60L); + OneSwing.fellTree(block); + } +} diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/util/OneSwing.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/util/OneSwing.java new file mode 100644 index 0000000..044ac2f --- /dev/null +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/util/OneSwing.java @@ -0,0 +1,21 @@ +package io.github.alathra.alathraskills.skills.woodcutting.util; + +import org.bukkit.Material; +import org.bukkit.Tag; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; + +public class OneSwing { + + public static void fellTree(Block block) { + Material material = block.getType(); + + if (!Tag.LOGS.isTagged(material) && !Tag.LEAVES.isTagged(material)) + return; + + block.breakNaturally(); + for (BlockFace face : BlockFace.values()) + fellTree(block.getRelative(face)); + } + +} From 00e349d2b4cb742c995e9dd369a7458bb1dff1e0 Mon Sep 17 00:00:00 2001 From: rooooose-b <142353909+rooooose-b@users.noreply.github.com> Date: Thu, 21 Mar 2024 22:07:09 +0100 Subject: [PATCH 08/28] feat: check for skills before running skill functions --- .../api/SkillsPlayerManager.java | 4 +++ .../skills/WoodcuttingSkillsListener.java | 36 ++++++++++++++----- 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/src/main/java/io/github/alathra/alathraskills/api/SkillsPlayerManager.java b/src/main/java/io/github/alathra/alathraskills/api/SkillsPlayerManager.java index 9826a96..a01038b 100644 --- a/src/main/java/io/github/alathra/alathraskills/api/SkillsPlayerManager.java +++ b/src/main/java/io/github/alathra/alathraskills/api/SkillsPlayerManager.java @@ -121,6 +121,10 @@ private void savePlayerValues(SkillsPlayer sp) { )); } + public final HashMap getSkillPlayers() { + return skillPlayers; + } + //TODO // https://github.com/Rumsfield/konquest/blob/main/api/src/main/java/com/github/rumsfield/konquest/api/manager/KonquestPlayerManager.java diff --git a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java index 1b81b52..004e047 100644 --- a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java +++ b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java @@ -2,6 +2,8 @@ import io.github.alathra.alathraskills.AlathraSkills; import io.github.alathra.alathraskills.api.SkillsManager; +import io.github.alathra.alathraskills.api.SkillsPlayer; +import io.github.alathra.alathraskills.api.SkillsPlayerManager; import io.github.alathra.alathraskills.skills.woodcutting.*; import io.github.alathra.alathraskills.skills.woodcutting.util.OneSwing; import org.bukkit.Material; @@ -18,6 +20,7 @@ public class WoodcuttingSkillsListener implements Listener { private SkillsManager skillsManager = AlathraSkills.getSkillsManager(); + private SkillsPlayerManager skillsPlayerManager = AlathraSkills.getSkillsPlayerManager(); @EventHandler public void BlockBreakListener(BlockBreakEvent event) { @@ -25,25 +28,37 @@ public void BlockBreakListener(BlockBreakEvent event) { Material material = block.getType(); Player player = event.getPlayer(); + SkillsPlayer skillsPlayer = skillsPlayerManager.getSkillPlayers().get(player.getUniqueId()); + // TODO Check if block was placed by player if (Tag.LOGS.isTagged(material)) { // TODO check if player has skills before calling function - SaveTheTreesSkill.saveTheTreeSkillRun(block); - PreciseChopOneSkill.preciseChopOneSkillRun(block); - PreciseChopTwoSkill.preciseChopTwoSkillRun(block); - if (skillsManager.oneSwingActive(player)) { - OneSwingOneSkill.runOneSwingSkill(player, block); + if (skillsPlayer.getPlayerSkills().get(301)) + SaveTheTreesSkill.saveTheTreeSkillRun(block); + + if (skillsPlayer.getPlayerSkills().get(302)) { + if (skillsPlayer.getPlayerSkills().get(303)) { + PreciseChopTwoSkill.preciseChopTwoSkillRun(block); + } + PreciseChopOneSkill.preciseChopOneSkillRun(block); } - if (skillsManager.oneSwingRunning(player)) { - OneSwing.fellTree(block); + if (skillsPlayer.getPlayerSkills().get(305)) { + if (skillsManager.oneSwingActive(player)) { + OneSwingOneSkill.runOneSwingSkill(player, block); + } + + if (skillsManager.oneSwingRunning(player)) { + OneSwing.fellTree(block); + } } } if (Tag.LEAVES.isTagged(material)) { - TrimmerOneSkill.trimmerOneSkillRun(block); + if (skillsPlayer.getPlayerSkills().get(304)) + TrimmerOneSkill.trimmerOneSkillRun(block); } } @@ -51,12 +66,17 @@ public void BlockBreakListener(BlockBreakEvent event) { // TODO check if player has trimmer skill @EventHandler public void BlockDamageListener(BlockDamageEvent event) { + SkillsPlayer skillsPlayer = skillsPlayerManager.getSkillPlayers().get(event.getPlayer().getUniqueId()); + if (!Tag.LEAVES.isTagged(event.getBlock().getType())) return; if (!Tag.ITEMS_AXES.isTagged(event.getItemInHand().getType())) return; + if (!skillsPlayer.getPlayerSkills().get(304)) + return; + event.setInstaBreak(true); } From e977c6cba39a287d964994f2f5e6a9fd9ea57a37 Mon Sep 17 00:00:00 2001 From: rooooose-b <142353909+rooooose-b@users.noreply.github.com> Date: Thu, 21 Mar 2024 22:11:07 +0100 Subject: [PATCH 09/28] fix: finished implementing skill checks --- .../listeners/skills/WoodcuttingSkillsListener.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java index 004e047..8637fe3 100644 --- a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java +++ b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java @@ -33,8 +33,6 @@ public void BlockBreakListener(BlockBreakEvent event) { // TODO Check if block was placed by player if (Tag.LOGS.isTagged(material)) { - // TODO check if player has skills before calling function - if (skillsPlayer.getPlayerSkills().get(301)) SaveTheTreesSkill.saveTheTreeSkillRun(block); @@ -63,7 +61,6 @@ public void BlockBreakListener(BlockBreakEvent event) { } - // TODO check if player has trimmer skill @EventHandler public void BlockDamageListener(BlockDamageEvent event) { SkillsPlayer skillsPlayer = skillsPlayerManager.getSkillPlayers().get(event.getPlayer().getUniqueId()); @@ -82,6 +79,8 @@ public void BlockDamageListener(BlockDamageEvent event) { @EventHandler public void RightClickListener(PlayerInteractEvent event) { + SkillsPlayer skillsPlayer = skillsPlayerManager.getSkillPlayers().get(event.getPlayer().getUniqueId()); + if (event.getHand() == EquipmentSlot.OFF_HAND) return; @@ -97,7 +96,7 @@ public void RightClickListener(PlayerInteractEvent event) { Player player = event.getPlayer(); - // TODO check if player has skill - OneSwingOneSkill.readyOneSwingOneSkill(player); + if (skillsPlayer.getPlayerSkills().get(305)) + OneSwingOneSkill.readyOneSwingOneSkill(player); } } From 5218717d9a7a921073fa40cf412107d6dae1de15 Mon Sep 17 00:00:00 2001 From: rooooose-b <142353909+rooooose-b@users.noreply.github.com> Date: Fri, 22 Mar 2024 22:52:28 +0100 Subject: [PATCH 10/28] feat: added carpenter level one --- .../alathraskills/api/SkillsManager.java | 1 + .../skills/WoodcuttingSkillsListener.java | 19 ++++++++++++ .../skills/woodcutting/CarpenterOneSkill.java | 30 +++++++++++++++++++ 3 files changed, 50 insertions(+) create mode 100644 src/main/java/io/github/alathra/alathraskills/skills/woodcutting/CarpenterOneSkill.java diff --git a/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java b/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java index fa9ff71..85abb23 100644 --- a/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java +++ b/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java @@ -73,6 +73,7 @@ public void loadWoodcuttingSkills() { woodcuttingSkills.put(303, new PreciseChopTwoSkill(302)); woodcuttingSkills.put(304, new TrimmerOneSkill(304)); woodcuttingSkills.put(305, new OneSwingOneSkill(305)); + woodcuttingSkills.put(306, new CarpenterOneSkill(306)); } public void setOneSwingActive(UUID uuid) { diff --git a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java index 8637fe3..877eb69 100644 --- a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java +++ b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java @@ -14,8 +14,11 @@ import org.bukkit.event.Listener; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockDamageEvent; +import org.bukkit.event.inventory.CraftItemEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.inventory.EquipmentSlot; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.Recipe; public class WoodcuttingSkillsListener implements Listener { @@ -99,4 +102,20 @@ public void RightClickListener(PlayerInteractEvent event) { if (skillsPlayer.getPlayerSkills().get(305)) OneSwingOneSkill.readyOneSwingOneSkill(player); } + + @EventHandler + public void CraftingListener(CraftItemEvent event) { + Player player = (Player) event.getViewers().get(0); + SkillsPlayer skillsPlayer = skillsPlayerManager.getSkillPlayers().get(player.getUniqueId()); + + Recipe recipe = event.getRecipe(); + Material material = recipe.getResult().getType(); + + if(!Tag.PLANKS.isTagged(material)) + return; + + if (skillsPlayer.getPlayerSkills().get(306)) { + player.getInventory().addItem(new ItemStack(material, 2)); + } + } } diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/CarpenterOneSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/CarpenterOneSkill.java new file mode 100644 index 0000000..2bda2ad --- /dev/null +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/CarpenterOneSkill.java @@ -0,0 +1,30 @@ +package io.github.alathra.alathraskills.skills.woodcutting; + +import com.github.milkdrinkers.colorparser.ColorParser; +import io.github.alathra.alathraskills.AlathraSkills; +import io.github.alathra.alathraskills.api.SkillsManager; +import io.github.alathra.alathraskills.skills.Skill; +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.util.Collections; + +public class CarpenterOneSkill extends Skill { + + private static SkillsManager skillsManager; + + public CarpenterOneSkill(int id) { + super(id, "Carpenter 1", "Get more out of your logs!"); + + ItemStack icon = new ItemStack(Material.NETHERITE_AXE); + ItemMeta meta = icon.getItemMeta(); + meta.displayName(ColorParser.of("" + super.getName() + "").build()); + meta.lore(Collections.singletonList(ColorParser.of("" + super.getDescription() + "").build())); + icon.setItemMeta(meta); + super.setIcon(icon); + + skillsManager = AlathraSkills.getSkillsManager(); + super.setCategory(skillsManager.skillCategories.get(3)); + } +} From e82e88f90ad40d879b5f15ef9382774d4d8804e7 Mon Sep 17 00:00:00 2001 From: rooooose-b <142353909+rooooose-b@users.noreply.github.com> Date: Fri, 22 Mar 2024 22:54:19 +0100 Subject: [PATCH 11/28] fix: corrected skill check --- .../listeners/skills/WoodcuttingSkillsListener.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java index 877eb69..83a6544 100644 --- a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java +++ b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java @@ -42,8 +42,9 @@ public void BlockBreakListener(BlockBreakEvent event) { if (skillsPlayer.getPlayerSkills().get(302)) { if (skillsPlayer.getPlayerSkills().get(303)) { PreciseChopTwoSkill.preciseChopTwoSkillRun(block); + } else { + PreciseChopOneSkill.preciseChopOneSkillRun(block); } - PreciseChopOneSkill.preciseChopOneSkillRun(block); } if (skillsPlayer.getPlayerSkills().get(305)) { From 70bd3539da7b9ece757f665e23bb18fde7f274c9 Mon Sep 17 00:00:00 2001 From: rooooose-b <142353909+rooooose-b@users.noreply.github.com> Date: Fri, 22 Mar 2024 23:19:47 +0100 Subject: [PATCH 12/28] feat: added trimmer level two --- .../alathraskills/api/SkillsManager.java | 1 + .../skills/WoodcuttingSkillsListener.java | 9 +++- .../skills/woodcutting/TrimmerTwoSkill.java | 45 +++++++++++++++++++ 3 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 src/main/java/io/github/alathra/alathraskills/skills/woodcutting/TrimmerTwoSkill.java diff --git a/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java b/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java index 85abb23..c59e4d2 100644 --- a/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java +++ b/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java @@ -74,6 +74,7 @@ public void loadWoodcuttingSkills() { woodcuttingSkills.put(304, new TrimmerOneSkill(304)); woodcuttingSkills.put(305, new OneSwingOneSkill(305)); woodcuttingSkills.put(306, new CarpenterOneSkill(306)); + woodcuttingSkills.put(307, new TrimmerTwoSkill(307)); } public void setOneSwingActive(UUID uuid) { diff --git a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java index 83a6544..86473d6 100644 --- a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java +++ b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java @@ -59,8 +59,13 @@ public void BlockBreakListener(BlockBreakEvent event) { } if (Tag.LEAVES.isTagged(material)) { - if (skillsPlayer.getPlayerSkills().get(304)) - TrimmerOneSkill.trimmerOneSkillRun(block); + if (skillsPlayer.getPlayerSkills().get(304)) { + if (skillsPlayer.getPlayerSkills().get(307)) { + TrimmerTwoSkill.trimmerTwoSkillRun(block); + } else { + TrimmerOneSkill.trimmerOneSkillRun(block); + } + } } } diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/TrimmerTwoSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/TrimmerTwoSkill.java new file mode 100644 index 0000000..cd8cec8 --- /dev/null +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/TrimmerTwoSkill.java @@ -0,0 +1,45 @@ +package io.github.alathra.alathraskills.skills.woodcutting; + +import com.github.milkdrinkers.colorparser.ColorParser; +import io.github.alathra.alathraskills.AlathraSkills; +import io.github.alathra.alathraskills.api.SkillsManager; +import io.github.alathra.alathraskills.skills.Skill; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.World; +import org.bukkit.block.Block; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.util.Collections; +import java.util.Random; + +public class TrimmerTwoSkill extends Skill { + + private SkillsManager skillsManager; + + public TrimmerTwoSkill(int id) { + super(id, "Trimmer 2", "Get an even better chance at apples!"); + + ItemStack icon = new ItemStack(Material.OAK_LEAVES); + ItemMeta meta = icon.getItemMeta(); + meta.displayName(ColorParser.of("" + super.getName() + "").build()); + meta.lore(Collections.singletonList(ColorParser.of("" + super.getDescription() + "").build())); + icon.setItemMeta(meta); + super.setIcon(icon); + + skillsManager = AlathraSkills.getSkillsManager(); + super.setCategory(skillsManager.skillCategories.get(3)); + } + + public static void trimmerTwoSkillRun(Block eventBlock) { + int random = new Random().nextInt(25); + if (random != 0) + return; + + Location location = eventBlock.getLocation(); + World world = eventBlock.getWorld(); + + world.dropItemNaturally(location, new ItemStack(Material.APPLE)); + } +} From 640522a482f05dbf377e6d060bc45775e2c1222a Mon Sep 17 00:00:00 2001 From: rooooose-b <142353909+rooooose-b@users.noreply.github.com> Date: Fri, 22 Mar 2024 23:45:38 +0100 Subject: [PATCH 13/28] refactor: common naming scheme for functions --- .../listeners/skills/WoodcuttingSkillsListener.java | 12 ++++++------ .../skills/woodcutting/OneSwingOneSkill.java | 2 +- .../skills/woodcutting/PreciseChopOneSkill.java | 2 +- .../skills/woodcutting/PreciseChopTwoSkill.java | 2 +- .../skills/woodcutting/SaveTheTreesSkill.java | 2 +- .../skills/woodcutting/TrimmerOneSkill.java | 2 +- .../skills/woodcutting/TrimmerTwoSkill.java | 2 +- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java index 86473d6..a1e4eae 100644 --- a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java +++ b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java @@ -37,19 +37,19 @@ public void BlockBreakListener(BlockBreakEvent event) { if (Tag.LOGS.isTagged(material)) { if (skillsPlayer.getPlayerSkills().get(301)) - SaveTheTreesSkill.saveTheTreeSkillRun(block); + SaveTheTreesSkill.runSaveTheTreesSkill(block); if (skillsPlayer.getPlayerSkills().get(302)) { if (skillsPlayer.getPlayerSkills().get(303)) { - PreciseChopTwoSkill.preciseChopTwoSkillRun(block); + PreciseChopTwoSkill.runPreciseChopTwoSkill(block); } else { - PreciseChopOneSkill.preciseChopOneSkillRun(block); + PreciseChopOneSkill.runPreciseChopOneSkill(block); } } if (skillsPlayer.getPlayerSkills().get(305)) { if (skillsManager.oneSwingActive(player)) { - OneSwingOneSkill.runOneSwingSkill(player, block); + OneSwingOneSkill.runOneSwingOneSkill(player, block); } if (skillsManager.oneSwingRunning(player)) { @@ -61,9 +61,9 @@ public void BlockBreakListener(BlockBreakEvent event) { if (Tag.LEAVES.isTagged(material)) { if (skillsPlayer.getPlayerSkills().get(304)) { if (skillsPlayer.getPlayerSkills().get(307)) { - TrimmerTwoSkill.trimmerTwoSkillRun(block); + TrimmerTwoSkill.runTrimmerTwoSkill(block); } else { - TrimmerOneSkill.trimmerOneSkillRun(block); + TrimmerOneSkill.runTrimmerOneSkill(block); } } } diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingOneSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingOneSkill.java index 9c36648..c066c0e 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingOneSkill.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingOneSkill.java @@ -55,7 +55,7 @@ public static void readyOneSwingOneSkill(Player player) { } } - public static void runOneSwingSkill(Player player, Block block) { + public static void runOneSwingOneSkill(Player player, Block block) { skillsManager.setOneSwingRunning(player); skillsManager.setOneSwingNotActive(player); Bukkit.getServer().getScheduler().cancelTask(deactivateSkillTask.getTaskId()); diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopOneSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopOneSkill.java index f09ebd4..ce9756c 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopOneSkill.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopOneSkill.java @@ -32,7 +32,7 @@ public PreciseChopOneSkill(int id) { super.setCategory(skillsManager.skillCategories.get(3)); } - public static void preciseChopOneSkillRun(Block eventBlock) { + public static void runPreciseChopOneSkill(Block eventBlock) { int random = new Random().nextInt(20); if (random != 0) return; diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopTwoSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopTwoSkill.java index 4d5823b..13d102d 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopTwoSkill.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopTwoSkill.java @@ -32,7 +32,7 @@ public PreciseChopTwoSkill(int id) { super.setCategory(skillsManager.skillCategories.get(3)); } - public static void preciseChopTwoSkillRun(Block eventBlock) { + public static void runPreciseChopTwoSkill(Block eventBlock) { int random = new Random().nextInt(20); if (random > 1) return; diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/SaveTheTreesSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/SaveTheTreesSkill.java index 65cf7de..28aa169 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/SaveTheTreesSkill.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/SaveTheTreesSkill.java @@ -29,7 +29,7 @@ public SaveTheTreesSkill(int id) { super.setCategory(skillsManager.skillCategories.get(3)); } - public static void saveTheTreeSkillRun(Block eventBlock) { + public static void runSaveTheTreesSkill(Block eventBlock) { Material blockUnder = eventBlock.getRelative(0, -1, 0).getType(); if (!Tag.DIRT.isTagged(blockUnder)) return; diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/TrimmerOneSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/TrimmerOneSkill.java index c0a9f2b..d21e292 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/TrimmerOneSkill.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/TrimmerOneSkill.java @@ -32,7 +32,7 @@ public TrimmerOneSkill(int id) { super.setCategory(skillsManager.skillCategories.get(3)); } - public static void trimmerOneSkillRun(Block eventBlock) { + public static void runTrimmerOneSkill(Block eventBlock) { int random = new Random().nextInt(50); if (random != 0) return; diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/TrimmerTwoSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/TrimmerTwoSkill.java index cd8cec8..6527462 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/TrimmerTwoSkill.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/TrimmerTwoSkill.java @@ -32,7 +32,7 @@ public TrimmerTwoSkill(int id) { super.setCategory(skillsManager.skillCategories.get(3)); } - public static void trimmerTwoSkillRun(Block eventBlock) { + public static void runTrimmerTwoSkill(Block eventBlock) { int random = new Random().nextInt(25); if (random != 0) return; From 6dcad76aad86b6e1d05cb7f441a322de16b8093b Mon Sep 17 00:00:00 2001 From: rooooose-b <142353909+rooooose-b@users.noreply.github.com> Date: Sat, 23 Mar 2024 00:11:59 +0100 Subject: [PATCH 14/28] feat: added one swing cooldown --- .../skills/WoodcuttingSkillsListener.java | 9 +++- .../skills/woodcutting/OneSwingOneSkill.java | 1 + .../skills/woodcutting/util/OneSwing.java | 46 +++++++++++++++++++ 3 files changed, 55 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java index a1e4eae..4a7aec0 100644 --- a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java +++ b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java @@ -1,5 +1,6 @@ package io.github.alathra.alathraskills.listeners.skills; +import com.github.milkdrinkers.colorparser.ColorParser; import io.github.alathra.alathraskills.AlathraSkills; import io.github.alathra.alathraskills.api.SkillsManager; import io.github.alathra.alathraskills.api.SkillsPlayer; @@ -105,8 +106,14 @@ public void RightClickListener(PlayerInteractEvent event) { Player player = event.getPlayer(); - if (skillsPlayer.getPlayerSkills().get(305)) + if (skillsPlayer.getPlayerSkills().get(305)) { + if (OneSwing.hasOneSwingCooldown(player)) { + player.sendActionBar(ColorParser.of("One Swing isn't ready yet. Cooldown remaining: " + OneSwing.getRemainingCooldown(player) + " seconds.").build()); + return; + } OneSwingOneSkill.readyOneSwingOneSkill(player); + } + } @EventHandler diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingOneSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingOneSkill.java index c066c0e..21bc12c 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingOneSkill.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingOneSkill.java @@ -59,6 +59,7 @@ public static void runOneSwingOneSkill(Player player, Block block) { skillsManager.setOneSwingRunning(player); skillsManager.setOneSwingNotActive(player); Bukkit.getServer().getScheduler().cancelTask(deactivateSkillTask.getTaskId()); + OneSwing.setOneSwingCooldown(player, 1); Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(instance, () -> skillsManager.setOneSwingNotRunning(player), 60L); OneSwing.fellTree(block); diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/util/OneSwing.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/util/OneSwing.java index 044ac2f..191269b 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/util/OneSwing.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/util/OneSwing.java @@ -4,9 +4,16 @@ import org.bukkit.Tag; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; +import org.bukkit.entity.Player; + +import java.time.Instant; +import java.util.HashMap; +import java.util.UUID; public class OneSwing { + private static HashMap cooldowns = new HashMap<>(); + public static void fellTree(Block block) { Material material = block.getType(); @@ -18,4 +25,43 @@ public static void fellTree(Block block) { fellTree(block.getRelative(face)); } + public static void setOneSwingCooldown(UUID uuid, int oneSwingLevel) { + switch (oneSwingLevel) { + case 1 -> cooldowns.put(uuid, Instant.now().plusSeconds(600)); + case 2 -> cooldowns.put(uuid, Instant.now().plusSeconds(570)); + case 3 -> cooldowns.put(uuid, Instant.now().plusSeconds(540)); + case 4 -> cooldowns.put(uuid, Instant.now().plusSeconds(510)); + case 5 -> cooldowns.put(uuid, Instant.now().plusSeconds(480)); + case 6 -> cooldowns.put(uuid, Instant.now().plusSeconds(420)); + case 7 -> cooldowns.put(uuid, Instant.now().plusSeconds(240)); + } + } + + public static void setOneSwingCooldown(Player player, int oneSwingLevel) { + setOneSwingCooldown(player.getUniqueId(), oneSwingLevel); + } + + public static void clearOneSwingCooldown(UUID uuid) { + cooldowns.remove(uuid); + } + + public static void clearOneSwingCooldown(Player player) { + clearOneSwingCooldown(player.getUniqueId()); + } + + public static boolean hasOneSwingCooldown(UUID uuid) { + return cooldowns.get(uuid).isAfter(Instant.now()); + } + + public static boolean hasOneSwingCooldown(Player player) { + return hasOneSwingCooldown(player.getUniqueId()); + } + + public static int getRemainingCooldown(UUID uuid) { + return cooldowns.get(uuid).compareTo(Instant.now()); + } + + public static int getRemainingCooldown(Player player) { + return getRemainingCooldown(player.getUniqueId()); + } } From d9f888d5d21815ff6dcf5699554bed844801c528 Mon Sep 17 00:00:00 2001 From: rooooose-b <142353909+rooooose-b@users.noreply.github.com> Date: Sat, 23 Mar 2024 00:14:26 +0100 Subject: [PATCH 15/28] refactor: moved one swing active and running lists --- .../alathraskills/api/SkillsManager.java | 54 ------------------ .../skills/woodcutting/OneSwingOneSkill.java | 14 ++--- .../skills/woodcutting/util/OneSwing.java | 55 +++++++++++++++++++ 3 files changed, 62 insertions(+), 61 deletions(-) diff --git a/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java b/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java index c59e4d2..28ed24b 100644 --- a/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java +++ b/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java @@ -28,12 +28,6 @@ public class SkillsManager implements Reloadable { // Id, Skill public HashMap woodcuttingSkills = new HashMap<>(); - - // List of UUIDs that have One Swing ready - private List activeOneSwing = new ArrayList<>(); - - // List of UUIDs that have One Swing running - private List runningOneSwing = new ArrayList<>(); public SkillsManager(AlathraSkills plugin) { this.plugin = plugin; @@ -77,52 +71,4 @@ public void loadWoodcuttingSkills() { woodcuttingSkills.put(307, new TrimmerTwoSkill(307)); } - public void setOneSwingActive(UUID uuid) { - activeOneSwing.add(uuid); - } - - public void setOneSwingActive(Player player) { - setOneSwingActive(player.getUniqueId()); - } - - public boolean oneSwingActive(UUID uuid) { - return activeOneSwing.contains(uuid); - } - - public boolean oneSwingActive(Player player) { - return oneSwingActive(player.getUniqueId()); - } - - public void setOneSwingNotActive(UUID uuid) { - activeOneSwing.remove(uuid); - } - - public void setOneSwingNotActive(Player player) { - setOneSwingNotActive(player.getUniqueId()); - } - - public void setOneSwingRunning(UUID uuid) { - runningOneSwing.add(uuid); - } - - public void setOneSwingRunning(Player player) { - setOneSwingRunning(player.getUniqueId()); - } - - public boolean oneSwingRunning(UUID uuid) { - return runningOneSwing.contains(uuid); - } - - public boolean oneSwingRunning(Player player) { - return oneSwingRunning(player.getUniqueId()); - } - - public void setOneSwingNotRunning(UUID uuid) { - runningOneSwing.remove(uuid); - } - - public void setOneSwingNotRunning(Player player) { - setOneSwingNotRunning(player.getUniqueId()); - } - } diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingOneSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingOneSkill.java index 21bc12c..12ff201 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingOneSkill.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingOneSkill.java @@ -38,17 +38,17 @@ public OneSwingOneSkill(int id) { } public static void readyOneSwingOneSkill(Player player) { - if(skillsManager.oneSwingActive(player)) { - skillsManager.setOneSwingActive(player); + if(OneSwing.oneSwingActive(player)) { + OneSwing.setOneSwingActive(player); player.sendActionBar(ColorParser.of("One Swing is ready.").build()); deactivateSkillTask = Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(instance, () -> { - skillsManager.setOneSwingNotActive(player); + OneSwing.setOneSwingNotActive(player); player.sendActionBar(ColorParser.of("One Swing is not ready.").build()); }, 100L); } else { - skillsManager.setOneSwingNotActive(player); + OneSwing.setOneSwingNotActive(player); Bukkit.getServer().getScheduler().cancelTask(deactivateSkillTask.getTaskId()); player.sendActionBar(ColorParser.of("One Swing is not ready.").build()); @@ -56,12 +56,12 @@ public static void readyOneSwingOneSkill(Player player) { } public static void runOneSwingOneSkill(Player player, Block block) { - skillsManager.setOneSwingRunning(player); - skillsManager.setOneSwingNotActive(player); + OneSwing.setOneSwingRunning(player); + OneSwing.setOneSwingNotActive(player); Bukkit.getServer().getScheduler().cancelTask(deactivateSkillTask.getTaskId()); OneSwing.setOneSwingCooldown(player, 1); - Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(instance, () -> skillsManager.setOneSwingNotRunning(player), 60L); + Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(instance, () -> OneSwing.setOneSwingNotRunning(player), 60L); OneSwing.fellTree(block); } } diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/util/OneSwing.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/util/OneSwing.java index 191269b..2488f44 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/util/OneSwing.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/util/OneSwing.java @@ -7,13 +7,19 @@ import org.bukkit.entity.Player; import java.time.Instant; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.UUID; public class OneSwing { private static HashMap cooldowns = new HashMap<>(); + private List activeOneSwing = new ArrayList<>(); + + private List runningOneSwing = new ArrayList<>(); + public static void fellTree(Block block) { Material material = block.getType(); @@ -64,4 +70,53 @@ public static int getRemainingCooldown(UUID uuid) { public static int getRemainingCooldown(Player player) { return getRemainingCooldown(player.getUniqueId()); } + + public void setOneSwingActive(UUID uuid) { + activeOneSwing.add(uuid); + } + + public static void setOneSwingActive(Player player) { + setOneSwingActive(player.getUniqueId()); + } + + public boolean oneSwingActive(UUID uuid) { + return activeOneSwing.contains(uuid); + } + + public static boolean oneSwingActive(Player player) { + return oneSwingActive(player.getUniqueId()); + } + + public void setOneSwingNotActive(UUID uuid) { + activeOneSwing.remove(uuid); + } + + public static void setOneSwingNotActive(Player player) { + setOneSwingNotActive(player.getUniqueId()); + } + + public void setOneSwingRunning(UUID uuid) { + runningOneSwing.add(uuid); + } + + public static void setOneSwingRunning(Player player) { + setOneSwingRunning(player.getUniqueId()); + } + + public boolean oneSwingRunning(UUID uuid) { + return runningOneSwing.contains(uuid); + } + + public boolean oneSwingRunning(Player player) { + return oneSwingRunning(player.getUniqueId()); + } + + public void setOneSwingNotRunning(UUID uuid) { + runningOneSwing.remove(uuid); + } + + public static void setOneSwingNotRunning(Player player) { + setOneSwingNotRunning(player.getUniqueId()); + } + } From a64b937ec6052a695e432c401c9ba854fff48159 Mon Sep 17 00:00:00 2001 From: rooooose-b <142353909+rooooose-b@users.noreply.github.com> Date: Wed, 17 Apr 2024 23:11:54 +0200 Subject: [PATCH 16/28] fix: corrected classes for oneswing methods --- .../listeners/skills/WoodcuttingSkillsListener.java | 5 ++--- .../alathraskills/skills/woodcutting/util/OneSwing.java | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java index 4a7aec0..b973965 100644 --- a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java +++ b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java @@ -23,7 +23,6 @@ public class WoodcuttingSkillsListener implements Listener { - private SkillsManager skillsManager = AlathraSkills.getSkillsManager(); private SkillsPlayerManager skillsPlayerManager = AlathraSkills.getSkillsPlayerManager(); @EventHandler @@ -49,11 +48,11 @@ public void BlockBreakListener(BlockBreakEvent event) { } if (skillsPlayer.getPlayerSkills().get(305)) { - if (skillsManager.oneSwingActive(player)) { + if (OneSwing.oneSwingActive(player)) { OneSwingOneSkill.runOneSwingOneSkill(player, block); } - if (skillsManager.oneSwingRunning(player)) { + if (OneSwing.oneSwingRunning(player)) { OneSwing.fellTree(block); } } diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/util/OneSwing.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/util/OneSwing.java index 2488f44..fc2df9d 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/util/OneSwing.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/util/OneSwing.java @@ -107,7 +107,7 @@ public boolean oneSwingRunning(UUID uuid) { return runningOneSwing.contains(uuid); } - public boolean oneSwingRunning(Player player) { + public static boolean oneSwingRunning(Player player) { return oneSwingRunning(player.getUniqueId()); } From c39d56de82dcda0be0a6fc52b017638e3271f2d7 Mon Sep 17 00:00:00 2001 From: rooooose-b <142353909+rooooose-b@users.noreply.github.com> Date: Wed, 17 Apr 2024 23:24:23 +0200 Subject: [PATCH 17/28] fix: check for right click before firing one swing --- .../skills/WoodcuttingSkillsListener.java | 47 +++++++------------ 1 file changed, 18 insertions(+), 29 deletions(-) diff --git a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java index b973965..1bcea69 100644 --- a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java +++ b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java @@ -13,6 +13,7 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; +import org.bukkit.event.block.Action; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockDamageEvent; import org.bukkit.event.inventory.CraftItemEvent; @@ -90,44 +91,32 @@ public void BlockDamageListener(BlockDamageEvent event) { public void RightClickListener(PlayerInteractEvent event) { SkillsPlayer skillsPlayer = skillsPlayerManager.getSkillPlayers().get(event.getPlayer().getUniqueId()); - if (event.getHand() == EquipmentSlot.OFF_HAND) - return; + if (event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) { + if (event.getHand() == EquipmentSlot.OFF_HAND) + return; - if (!event.hasItem()) - return; + if (!event.hasItem()) + return; - if (!Tag.ITEMS_AXES.isTagged(event.getMaterial())) - return; + if (!Tag.ITEMS_AXES.isTagged(event.getMaterial())) + return; - // Return if right click logs - if (Tag.LOGS.isTagged(event.getClickedBlock().getType())) - return; + // Return if right click logs + if (Tag.LOGS.isTagged(event.getClickedBlock().getType())) + return; - Player player = event.getPlayer(); + Player player = event.getPlayer(); - if (skillsPlayer.getPlayerSkills().get(305)) { - if (OneSwing.hasOneSwingCooldown(player)) { - player.sendActionBar(ColorParser.of("One Swing isn't ready yet. Cooldown remaining: " + OneSwing.getRemainingCooldown(player) + " seconds.").build()); - return; + if (skillsPlayer.getPlayerSkills().get(305)) { + if (OneSwing.hasOneSwingCooldown(player)) { + player.sendActionBar(ColorParser.of("One Swing isn't ready yet. Cooldown remaining: " + OneSwing.getRemainingCooldown(player) + " seconds.").build()); + return; + } + OneSwingOneSkill.readyOneSwingOneSkill(player); } - OneSwingOneSkill.readyOneSwingOneSkill(player); } - } - @EventHandler - public void CraftingListener(CraftItemEvent event) { - Player player = (Player) event.getViewers().get(0); - SkillsPlayer skillsPlayer = skillsPlayerManager.getSkillPlayers().get(player.getUniqueId()); - Recipe recipe = event.getRecipe(); - Material material = recipe.getResult().getType(); - - if(!Tag.PLANKS.isTagged(material)) - return; - - if (skillsPlayer.getPlayerSkills().get(306)) { - player.getInventory().addItem(new ItemStack(material, 2)); - } } } From 8680beae75b4a6bf693526dd5c475d7a6ce790bd Mon Sep 17 00:00:00 2001 From: rooooose-b <142353909+rooooose-b@users.noreply.github.com> Date: Wed, 17 Apr 2024 23:43:40 +0200 Subject: [PATCH 18/28] feat: replaced carpenter with groundskeeper --- .../alathraskills/api/SkillsManager.java | 6 +- .../skills/WoodcuttingSkillsListener.java | 11 ++-- .../skills/woodcutting/CarpenterOneSkill.java | 30 --------- .../woodcutting/GroundskeeperOneSkill.java | 62 +++++++++++++++++++ 4 files changed, 67 insertions(+), 42 deletions(-) delete mode 100644 src/main/java/io/github/alathra/alathraskills/skills/woodcutting/CarpenterOneSkill.java create mode 100644 src/main/java/io/github/alathra/alathraskills/skills/woodcutting/GroundskeeperOneSkill.java diff --git a/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java b/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java index 28ed24b..683b539 100644 --- a/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java +++ b/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java @@ -1,9 +1,6 @@ package io.github.alathra.alathraskills.api; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; -import java.util.UUID; import io.github.alathra.alathraskills.AlathraSkills; import io.github.alathra.alathraskills.Reloadable; @@ -13,7 +10,6 @@ import io.github.alathra.alathraskills.skills.categories.MiningSkillCategory; import io.github.alathra.alathraskills.skills.categories.WoodcuttingSkillCategory; import io.github.alathra.alathraskills.skills.woodcutting.*; -import org.bukkit.entity.Player; public class SkillsManager implements Reloadable { @@ -67,7 +63,7 @@ public void loadWoodcuttingSkills() { woodcuttingSkills.put(303, new PreciseChopTwoSkill(302)); woodcuttingSkills.put(304, new TrimmerOneSkill(304)); woodcuttingSkills.put(305, new OneSwingOneSkill(305)); - woodcuttingSkills.put(306, new CarpenterOneSkill(306)); + woodcuttingSkills.put(306, new GroundskeeperOneSkill(306)); woodcuttingSkills.put(307, new TrimmerTwoSkill(307)); } diff --git a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java index 1bcea69..79b7c5a 100644 --- a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java +++ b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java @@ -2,7 +2,6 @@ import com.github.milkdrinkers.colorparser.ColorParser; import io.github.alathra.alathraskills.AlathraSkills; -import io.github.alathra.alathraskills.api.SkillsManager; import io.github.alathra.alathraskills.api.SkillsPlayer; import io.github.alathra.alathraskills.api.SkillsPlayerManager; import io.github.alathra.alathraskills.skills.woodcutting.*; @@ -16,11 +15,8 @@ import org.bukkit.event.block.Action; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockDamageEvent; -import org.bukkit.event.inventory.CraftItemEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.inventory.EquipmentSlot; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.Recipe; public class WoodcuttingSkillsListener implements Listener { @@ -67,6 +63,10 @@ public void BlockBreakListener(BlockBreakEvent event) { TrimmerOneSkill.runTrimmerOneSkill(block); } } + + if (skillsPlayer.getPlayerSkills().get(306)) { + GroundskeeperOneSkill.runGroundskeeperOneSkill(event); + } } } @@ -115,8 +115,5 @@ public void RightClickListener(PlayerInteractEvent event) { OneSwingOneSkill.readyOneSwingOneSkill(player); } } - - - } } diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/CarpenterOneSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/CarpenterOneSkill.java deleted file mode 100644 index 2bda2ad..0000000 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/CarpenterOneSkill.java +++ /dev/null @@ -1,30 +0,0 @@ -package io.github.alathra.alathraskills.skills.woodcutting; - -import com.github.milkdrinkers.colorparser.ColorParser; -import io.github.alathra.alathraskills.AlathraSkills; -import io.github.alathra.alathraskills.api.SkillsManager; -import io.github.alathra.alathraskills.skills.Skill; -import org.bukkit.Material; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; - -import java.util.Collections; - -public class CarpenterOneSkill extends Skill { - - private static SkillsManager skillsManager; - - public CarpenterOneSkill(int id) { - super(id, "Carpenter 1", "Get more out of your logs!"); - - ItemStack icon = new ItemStack(Material.NETHERITE_AXE); - ItemMeta meta = icon.getItemMeta(); - meta.displayName(ColorParser.of("" + super.getName() + "").build()); - meta.lore(Collections.singletonList(ColorParser.of("" + super.getDescription() + "").build())); - icon.setItemMeta(meta); - super.setIcon(icon); - - skillsManager = AlathraSkills.getSkillsManager(); - super.setCategory(skillsManager.skillCategories.get(3)); - } -} diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/GroundskeeperOneSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/GroundskeeperOneSkill.java new file mode 100644 index 0000000..d423bf4 --- /dev/null +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/GroundskeeperOneSkill.java @@ -0,0 +1,62 @@ +package io.github.alathra.alathraskills.skills.woodcutting; + +import com.github.milkdrinkers.colorparser.ColorParser; +import io.github.alathra.alathraskills.AlathraSkills; +import io.github.alathra.alathraskills.api.SkillsManager; +import io.github.alathra.alathraskills.skills.Skill; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Random; + +public class GroundskeeperOneSkill extends Skill { + + private static SkillsManager skillsManager; + + + public GroundskeeperOneSkill(int id) { + super(id, "Groundskeeper 1", "Quickly shear your leaves, with an extra chance at leaves!"); + + ItemStack icon = new ItemStack(Material.SHEARS); + ItemMeta meta = icon.getItemMeta(); + meta.displayName(ColorParser.of("" + super.getName() + "").build()); + meta.lore(Collections.singletonList(ColorParser.of("" + super.getDescription() + "").build())); + icon.setItemMeta(meta); + super.setIcon(icon); + + skillsManager = AlathraSkills.getSkillsManager(); + super.setCategory(skillsManager.skillCategories.get(3)); + } + + + + + public static void runGroundskeeperOneSkill(BlockBreakEvent event) { + Block block = event.getBlock(); + Material material = block.getType(); + Location location = block.getLocation(); + + List blockList = new ArrayList<>(); + blockList.add(block.getRelative(1, 0, 0)); + blockList.add(block.getRelative(0, 1, 0)); + blockList.add(block.getRelative(0, 0, 1)); + blockList.add(block.getRelative(1, 0, 1)); + blockList.add(block.getRelative(1, 1, 0)); + blockList.add(block.getRelative(0, 1, 1)); + blockList.add(block.getRelative(1, 1, 1)); + + blockList.forEach(Block::breakNaturally); + + int random = new Random().nextInt(20); + if (random < 3) + location.getWorld().dropItemNaturally(location, new ItemStack(material, 2)); + } +} From 610bdb85759da7947604379f1b6c3c81419c25e8 Mon Sep 17 00:00:00 2001 From: rooooose-b <142353909+rooooose-b@users.noreply.github.com> Date: Wed, 17 Apr 2024 23:59:27 +0200 Subject: [PATCH 19/28] fix: build errors --- .../skills/WoodcuttingSkillsListener.java | 18 +++++++++--------- .../skills/woodcutting/util/OneSwing.java | 16 ++++++++-------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java index 79b7c5a..29139f2 100644 --- a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java +++ b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java @@ -33,18 +33,18 @@ public void BlockBreakListener(BlockBreakEvent event) { // TODO Check if block was placed by player if (Tag.LOGS.isTagged(material)) { - if (skillsPlayer.getPlayerSkills().get(301)) + if (skillsPlayer.getPlayerSkills().get(301).isSelected()) SaveTheTreesSkill.runSaveTheTreesSkill(block); - if (skillsPlayer.getPlayerSkills().get(302)) { - if (skillsPlayer.getPlayerSkills().get(303)) { + if (skillsPlayer.getPlayerSkills().get(302).isSelected()) { + if (skillsPlayer.getPlayerSkills().get(303).isSelected()) { PreciseChopTwoSkill.runPreciseChopTwoSkill(block); } else { PreciseChopOneSkill.runPreciseChopOneSkill(block); } } - if (skillsPlayer.getPlayerSkills().get(305)) { + if (skillsPlayer.getPlayerSkills().get(305).isSelected()) { if (OneSwing.oneSwingActive(player)) { OneSwingOneSkill.runOneSwingOneSkill(player, block); } @@ -56,15 +56,15 @@ public void BlockBreakListener(BlockBreakEvent event) { } if (Tag.LEAVES.isTagged(material)) { - if (skillsPlayer.getPlayerSkills().get(304)) { - if (skillsPlayer.getPlayerSkills().get(307)) { + if (skillsPlayer.getPlayerSkills().get(304).isSelected()) { + if (skillsPlayer.getPlayerSkills().get(307).isSelected()) { TrimmerTwoSkill.runTrimmerTwoSkill(block); } else { TrimmerOneSkill.runTrimmerOneSkill(block); } } - if (skillsPlayer.getPlayerSkills().get(306)) { + if (skillsPlayer.getPlayerSkills().get(306).isSelected()) { GroundskeeperOneSkill.runGroundskeeperOneSkill(event); } } @@ -81,7 +81,7 @@ public void BlockDamageListener(BlockDamageEvent event) { if (!Tag.ITEMS_AXES.isTagged(event.getItemInHand().getType())) return; - if (!skillsPlayer.getPlayerSkills().get(304)) + if (!skillsPlayer.getPlayerSkills().get(304).isSelected()) return; event.setInstaBreak(true); @@ -107,7 +107,7 @@ public void RightClickListener(PlayerInteractEvent event) { Player player = event.getPlayer(); - if (skillsPlayer.getPlayerSkills().get(305)) { + if (skillsPlayer.getPlayerSkills().get(305).isSelected()) { if (OneSwing.hasOneSwingCooldown(player)) { player.sendActionBar(ColorParser.of("One Swing isn't ready yet. Cooldown remaining: " + OneSwing.getRemainingCooldown(player) + " seconds.").build()); return; diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/util/OneSwing.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/util/OneSwing.java index fc2df9d..6875318 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/util/OneSwing.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/util/OneSwing.java @@ -16,9 +16,9 @@ public class OneSwing { private static HashMap cooldowns = new HashMap<>(); - private List activeOneSwing = new ArrayList<>(); + private static List activeOneSwing = new ArrayList<>(); - private List runningOneSwing = new ArrayList<>(); + private static List runningOneSwing = new ArrayList<>(); public static void fellTree(Block block) { Material material = block.getType(); @@ -71,7 +71,7 @@ public static int getRemainingCooldown(Player player) { return getRemainingCooldown(player.getUniqueId()); } - public void setOneSwingActive(UUID uuid) { + public static void setOneSwingActive(UUID uuid) { activeOneSwing.add(uuid); } @@ -79,7 +79,7 @@ public static void setOneSwingActive(Player player) { setOneSwingActive(player.getUniqueId()); } - public boolean oneSwingActive(UUID uuid) { + public static boolean oneSwingActive(UUID uuid) { return activeOneSwing.contains(uuid); } @@ -87,7 +87,7 @@ public static boolean oneSwingActive(Player player) { return oneSwingActive(player.getUniqueId()); } - public void setOneSwingNotActive(UUID uuid) { + public static void setOneSwingNotActive(UUID uuid) { activeOneSwing.remove(uuid); } @@ -95,7 +95,7 @@ public static void setOneSwingNotActive(Player player) { setOneSwingNotActive(player.getUniqueId()); } - public void setOneSwingRunning(UUID uuid) { + public static void setOneSwingRunning(UUID uuid) { runningOneSwing.add(uuid); } @@ -103,7 +103,7 @@ public static void setOneSwingRunning(Player player) { setOneSwingRunning(player.getUniqueId()); } - public boolean oneSwingRunning(UUID uuid) { + public static boolean oneSwingRunning(UUID uuid) { return runningOneSwing.contains(uuid); } @@ -111,7 +111,7 @@ public static boolean oneSwingRunning(Player player) { return oneSwingRunning(player.getUniqueId()); } - public void setOneSwingNotRunning(UUID uuid) { + public static void setOneSwingNotRunning(UUID uuid) { runningOneSwing.remove(uuid); } From a5eca673c1e841641fd1b734fa15016d52329758 Mon Sep 17 00:00:00 2001 From: rooooose-b <142353909+rooooose-b@users.noreply.github.com> Date: Thu, 18 Apr 2024 00:03:26 +0200 Subject: [PATCH 20/28] feat: check if block is natural before firing skills --- .../listeners/skills/WoodcuttingSkillsListener.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java index 29139f2..858f151 100644 --- a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java +++ b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java @@ -6,6 +6,7 @@ import io.github.alathra.alathraskills.api.SkillsPlayerManager; import io.github.alathra.alathraskills.skills.woodcutting.*; import io.github.alathra.alathraskills.skills.woodcutting.util.OneSwing; +import io.github.alathra.alathraskills.utility.PDCUtil; import org.bukkit.Material; import org.bukkit.Tag; import org.bukkit.block.Block; @@ -30,7 +31,8 @@ public void BlockBreakListener(BlockBreakEvent event) { SkillsPlayer skillsPlayer = skillsPlayerManager.getSkillPlayers().get(player.getUniqueId()); - // TODO Check if block was placed by player + if (PDCUtil.isUnnatural(block)) + return; if (Tag.LOGS.isTagged(material)) { if (skillsPlayer.getPlayerSkills().get(301).isSelected()) From eb5418c4d43fe7004be365ebe06857dada93eea1 Mon Sep 17 00:00:00 2001 From: rooooose-b <142353909+rooooose-b@users.noreply.github.com> Date: Thu, 18 Apr 2024 00:28:55 +0200 Subject: [PATCH 21/28] feat: added groundskeeper two skill --- .../alathraskills/api/SkillsManager.java | 1 + .../skills/WoodcuttingSkillsListener.java | 6 +- .../woodcutting/GroundskeeperTwoSkill.java | 57 +++++++++++++++++++ 3 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 src/main/java/io/github/alathra/alathraskills/skills/woodcutting/GroundskeeperTwoSkill.java diff --git a/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java b/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java index 683b539..bbb1bd0 100644 --- a/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java +++ b/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java @@ -65,6 +65,7 @@ public void loadWoodcuttingSkills() { woodcuttingSkills.put(305, new OneSwingOneSkill(305)); woodcuttingSkills.put(306, new GroundskeeperOneSkill(306)); woodcuttingSkills.put(307, new TrimmerTwoSkill(307)); + woodcuttingSkills.put(308, new GroundskeeperTwoSkill(308)); } } diff --git a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java index 858f151..48c22ef 100644 --- a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java +++ b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java @@ -67,7 +67,11 @@ public void BlockBreakListener(BlockBreakEvent event) { } if (skillsPlayer.getPlayerSkills().get(306).isSelected()) { - GroundskeeperOneSkill.runGroundskeeperOneSkill(event); + if (skillsPlayer.getPlayerSkills().get(308).isSelected()) { + GroundskeeperTwoSkill.runGroundskeeperTwoSkill(event); + } else { + GroundskeeperOneSkill.runGroundskeeperOneSkill(event); + } } } } diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/GroundskeeperTwoSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/GroundskeeperTwoSkill.java new file mode 100644 index 0000000..85c0b6a --- /dev/null +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/GroundskeeperTwoSkill.java @@ -0,0 +1,57 @@ +package io.github.alathra.alathraskills.skills.woodcutting; + +import com.github.milkdrinkers.colorparser.ColorParser; +import io.github.alathra.alathraskills.AlathraSkills; +import io.github.alathra.alathraskills.api.SkillsManager; +import io.github.alathra.alathraskills.skills.Skill; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Random; + +public class GroundskeeperTwoSkill extends Skill { + + private static SkillsManager skillsManager; + + + public GroundskeeperTwoSkill(int id) { + super(id, "Groundskeeper 2", "Now with an increased chance at extra leaves!"); + + ItemStack icon = new ItemStack(Material.SHEARS); + ItemMeta meta = icon.getItemMeta(); + meta.displayName(ColorParser.of("" + super.getName() + "").build()); + meta.lore(Collections.singletonList(ColorParser.of("" + super.getDescription() + "").build())); + icon.setItemMeta(meta); + super.setIcon(icon); + + skillsManager = AlathraSkills.getSkillsManager(); + super.setCategory(skillsManager.skillCategories.get(3)); + } + + public static void runGroundskeeperTwoSkill(BlockBreakEvent event) { + Block block = event.getBlock(); + Material material = block.getType(); + Location location = block.getLocation(); + + List blockList = new ArrayList<>(); + blockList.add(block.getRelative(1, 0, 0)); + blockList.add(block.getRelative(0, 1, 0)); + blockList.add(block.getRelative(0, 0, 1)); + blockList.add(block.getRelative(1, 0, 1)); + blockList.add(block.getRelative(1, 1, 0)); + blockList.add(block.getRelative(0, 1, 1)); + blockList.add(block.getRelative(1, 1, 1)); + + blockList.forEach(Block::breakNaturally); + + if (Math.random() < 0.25) + location.getWorld().dropItemNaturally(location, new ItemStack(material, 2)); + } +} From 1cddba9a80e58fcbd5b244b40988299de662ac5a Mon Sep 17 00:00:00 2001 From: rooooose-b <142353909+rooooose-b@users.noreply.github.com> Date: Thu, 18 Apr 2024 00:35:12 +0200 Subject: [PATCH 22/28] refactor: redid random percentage chances --- .../skills/woodcutting/GroundskeeperOneSkill.java | 3 +-- .../skills/woodcutting/GroundskeeperTwoSkill.java | 2 +- .../alathraskills/skills/woodcutting/PreciseChopOneSkill.java | 3 +-- .../alathraskills/skills/woodcutting/PreciseChopTwoSkill.java | 3 +-- .../alathraskills/skills/woodcutting/TrimmerOneSkill.java | 3 +-- .../alathraskills/skills/woodcutting/TrimmerTwoSkill.java | 3 +-- 6 files changed, 6 insertions(+), 11 deletions(-) diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/GroundskeeperOneSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/GroundskeeperOneSkill.java index d423bf4..9c486a1 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/GroundskeeperOneSkill.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/GroundskeeperOneSkill.java @@ -55,8 +55,7 @@ public static void runGroundskeeperOneSkill(BlockBreakEvent event) { blockList.forEach(Block::breakNaturally); - int random = new Random().nextInt(20); - if (random < 3) + if (Math.random() <= 0.15) location.getWorld().dropItemNaturally(location, new ItemStack(material, 2)); } } diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/GroundskeeperTwoSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/GroundskeeperTwoSkill.java index 85c0b6a..09b5411 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/GroundskeeperTwoSkill.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/GroundskeeperTwoSkill.java @@ -51,7 +51,7 @@ public static void runGroundskeeperTwoSkill(BlockBreakEvent event) { blockList.forEach(Block::breakNaturally); - if (Math.random() < 0.25) + if (Math.random() <= 0.25) location.getWorld().dropItemNaturally(location, new ItemStack(material, 2)); } } diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopOneSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopOneSkill.java index ce9756c..7e2cf73 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopOneSkill.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopOneSkill.java @@ -33,8 +33,7 @@ public PreciseChopOneSkill(int id) { } public static void runPreciseChopOneSkill(Block eventBlock) { - int random = new Random().nextInt(20); - if (random != 0) + if (Math.random() <= 0.05) return; Material material = eventBlock.getType(); diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopTwoSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopTwoSkill.java index 13d102d..4f3ff84 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopTwoSkill.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopTwoSkill.java @@ -33,8 +33,7 @@ public PreciseChopTwoSkill(int id) { } public static void runPreciseChopTwoSkill(Block eventBlock) { - int random = new Random().nextInt(20); - if (random > 1) + if (Math.random() <= 0.1) return; Material material = eventBlock.getType(); diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/TrimmerOneSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/TrimmerOneSkill.java index d21e292..380eace 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/TrimmerOneSkill.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/TrimmerOneSkill.java @@ -33,8 +33,7 @@ public TrimmerOneSkill(int id) { } public static void runTrimmerOneSkill(Block eventBlock) { - int random = new Random().nextInt(50); - if (random != 0) + if (Math.random() <= 0.02) return; Location location = eventBlock.getLocation(); diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/TrimmerTwoSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/TrimmerTwoSkill.java index 6527462..1ef79c9 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/TrimmerTwoSkill.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/TrimmerTwoSkill.java @@ -33,8 +33,7 @@ public TrimmerTwoSkill(int id) { } public static void runTrimmerTwoSkill(Block eventBlock) { - int random = new Random().nextInt(25); - if (random != 0) + if (Math.random() <= 0.04) return; Location location = eventBlock.getLocation(); From 9fcb6f790419a629f83780763f2f21d366b3b72f Mon Sep 17 00:00:00 2001 From: rooooose-b <142353909+rooooose-b@users.noreply.github.com> Date: Thu, 18 Apr 2024 00:49:56 +0200 Subject: [PATCH 23/28] refactor: refactored one swing readying and activation --- .../skills/WoodcuttingSkillsListener.java | 2 +- .../skills/woodcutting/OneSwingOneSkill.java | 28 -------- .../skills/woodcutting/util/OneSwing.java | 65 +++++++++++++++++++ 3 files changed, 66 insertions(+), 29 deletions(-) diff --git a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java index 48c22ef..345a3f4 100644 --- a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java +++ b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java @@ -118,7 +118,7 @@ public void RightClickListener(PlayerInteractEvent event) { player.sendActionBar(ColorParser.of("One Swing isn't ready yet. Cooldown remaining: " + OneSwing.getRemainingCooldown(player) + " seconds.").build()); return; } - OneSwingOneSkill.readyOneSwingOneSkill(player); + OneSwing.readyOneSwing(player); } } } diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingOneSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingOneSkill.java index 12ff201..76cd3d1 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingOneSkill.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingOneSkill.java @@ -36,32 +36,4 @@ public OneSwingOneSkill(int id) { instance = AlathraSkills.getInstance(); super.setCategory(skillsManager.skillCategories.get(3)); } - - public static void readyOneSwingOneSkill(Player player) { - if(OneSwing.oneSwingActive(player)) { - OneSwing.setOneSwingActive(player); - - player.sendActionBar(ColorParser.of("One Swing is ready.").build()); - - deactivateSkillTask = Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(instance, () -> { - OneSwing.setOneSwingNotActive(player); - player.sendActionBar(ColorParser.of("One Swing is not ready.").build()); - }, 100L); - } else { - OneSwing.setOneSwingNotActive(player); - Bukkit.getServer().getScheduler().cancelTask(deactivateSkillTask.getTaskId()); - - player.sendActionBar(ColorParser.of("One Swing is not ready.").build()); - } - } - - public static void runOneSwingOneSkill(Player player, Block block) { - OneSwing.setOneSwingRunning(player); - OneSwing.setOneSwingNotActive(player); - Bukkit.getServer().getScheduler().cancelTask(deactivateSkillTask.getTaskId()); - OneSwing.setOneSwingCooldown(player, 1); - - Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(instance, () -> OneSwing.setOneSwingNotRunning(player), 60L); - OneSwing.fellTree(block); - } } diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/util/OneSwing.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/util/OneSwing.java index 6875318..e44c9cc 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/util/OneSwing.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/util/OneSwing.java @@ -1,10 +1,15 @@ package io.github.alathra.alathraskills.skills.woodcutting.util; +import com.github.milkdrinkers.colorparser.ColorParser; +import io.github.alathra.alathraskills.AlathraSkills; +import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.Tag; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.entity.Player; +import org.bukkit.plugin.Plugin; +import org.bukkit.scheduler.BukkitTask; import java.time.Instant; import java.util.ArrayList; @@ -20,6 +25,9 @@ public class OneSwing { private static List runningOneSwing = new ArrayList<>(); + private static Plugin instance = AlathraSkills.getInstance(); + private static BukkitTask deactivateSkillTask; + public static void fellTree(Block block) { Material material = block.getType(); @@ -31,6 +39,63 @@ public static void fellTree(Block block) { fellTree(block.getRelative(face)); } + public static void readyOneSwing(Player player) { + if(oneSwingActive(player)) { + setOneSwingActive(player); + + player.sendActionBar(ColorParser.of("One Swing is ready.").build()); + + deactivateSkillTask = Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(instance, () -> { + setOneSwingNotActive(player); + player.sendActionBar(ColorParser.of("One Swing is not ready.").build()); + }, 100L); + } else { + setOneSwingNotActive(player); + Bukkit.getServer().getScheduler().cancelTask(deactivateSkillTask.getTaskId()); + + player.sendActionBar(ColorParser.of("One Swing is not ready.").build()); + } + } + + public static void runOneSwing(Player player, Block block, int oneSwingLevel) { + OneSwing.setOneSwingRunning(player); + OneSwing.setOneSwingNotActive(player); + Bukkit.getServer().getScheduler().cancelTask(deactivateSkillTask.getTaskId()); + OneSwing.setOneSwingCooldown(player, oneSwingLevel); + + Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(instance, () -> OneSwing.setOneSwingNotRunning(player), oneSwingDuration(oneSwingLevel)); + OneSwing.fellTree(block); + } + + private static long oneSwingDuration(int oneSwingLevel) { + switch (oneSwingLevel) { + case 1 -> { + return 60L; + } + case 2 -> { + return 100L; + } + case 3 -> { + return 200L; + } + case 4 -> { + return 260L; + } + case 5 -> { + return 300L; + } + case 6 -> { + return 360L; + } + case 7 -> { + return 600L; + } + default -> { + return 0; + } + } + } + public static void setOneSwingCooldown(UUID uuid, int oneSwingLevel) { switch (oneSwingLevel) { case 1 -> cooldowns.put(uuid, Instant.now().plusSeconds(600)); From 85f3e796e2d8310720c4e705aad6f92144d167c8 Mon Sep 17 00:00:00 2001 From: rooooose-b <142353909+rooooose-b@users.noreply.github.com> Date: Thu, 18 Apr 2024 00:54:46 +0200 Subject: [PATCH 24/28] feat: added one swing level two --- .../alathraskills/api/SkillsManager.java | 1 + .../skills/WoodcuttingSkillsListener.java | 18 ++++++---- .../skills/woodcutting/OneSwingTwoSkill.java | 34 +++++++++++++++++++ 3 files changed, 46 insertions(+), 7 deletions(-) create mode 100644 src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingTwoSkill.java diff --git a/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java b/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java index bbb1bd0..e6aca6d 100644 --- a/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java +++ b/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java @@ -66,6 +66,7 @@ public void loadWoodcuttingSkills() { woodcuttingSkills.put(306, new GroundskeeperOneSkill(306)); woodcuttingSkills.put(307, new TrimmerTwoSkill(307)); woodcuttingSkills.put(308, new GroundskeeperTwoSkill(308)); + woodcuttingSkills.put(309, new OneSwingTwoSkill(309)); } } diff --git a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java index 345a3f4..71c8507 100644 --- a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java +++ b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java @@ -46,15 +46,19 @@ public void BlockBreakListener(BlockBreakEvent event) { } } - if (skillsPlayer.getPlayerSkills().get(305).isSelected()) { - if (OneSwing.oneSwingActive(player)) { - OneSwingOneSkill.runOneSwingOneSkill(player, block); - } - - if (OneSwing.oneSwingRunning(player)) { - OneSwing.fellTree(block); + if (OneSwing.oneSwingRunning(player)) { + OneSwing.fellTree(block); + } else if (OneSwing.oneSwingActive(player)) { + if (skillsPlayer.getPlayerSkills().get(305).isSelected()) { + if (skillsPlayer.getPlayerSkills().get(309).isSelected()) { + OneSwing.runOneSwing(player, block, 2); + } else { + OneSwing.runOneSwing(player, block, 1); + } } } + + } if (Tag.LEAVES.isTagged(material)) { diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingTwoSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingTwoSkill.java new file mode 100644 index 0000000..e5741c9 --- /dev/null +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingTwoSkill.java @@ -0,0 +1,34 @@ +package io.github.alathra.alathraskills.skills.woodcutting; + +import com.github.milkdrinkers.colorparser.ColorParser; +import io.github.alathra.alathraskills.AlathraSkills; +import io.github.alathra.alathraskills.api.SkillsManager; +import io.github.alathra.alathraskills.skills.Skill; +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.plugin.Plugin; +import org.bukkit.scheduler.BukkitTask; + +import java.util.Collections; + +public class OneSwingTwoSkill extends Skill { + + private static SkillsManager skillsManager; + private static Plugin instance; + private static BukkitTask deactivateSkillTask; + public OneSwingTwoSkill(int id) { + super(id, "One Swing 2", "Extended time, and a slower cooldown!"); + + ItemStack icon = new ItemStack(Material.NETHERITE_AXE); + ItemMeta meta = icon.getItemMeta(); + meta.displayName(ColorParser.of("" + super.getName() + "").build()); + meta.lore(Collections.singletonList(ColorParser.of("" + super.getDescription() + "").build())); + icon.setItemMeta(meta); + super.setIcon(icon); + + skillsManager = AlathraSkills.getSkillsManager(); + instance = AlathraSkills.getInstance(); + super.setCategory(skillsManager.skillCategories.get(3)); + } +} From 3f15ef8003da2818f1587317fed975358362a58c Mon Sep 17 00:00:00 2001 From: rooooose-b <142353909+rooooose-b@users.noreply.github.com> Date: Thu, 18 Apr 2024 01:35:37 +0200 Subject: [PATCH 25/28] refactor: removed unnecessary variables --- .../alathraskills/skills/woodcutting/OneSwingOneSkill.java | 2 -- .../alathraskills/skills/woodcutting/OneSwingTwoSkill.java | 3 +-- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingOneSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingOneSkill.java index 76cd3d1..b834782 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingOneSkill.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingOneSkill.java @@ -19,8 +19,6 @@ public class OneSwingOneSkill extends Skill { private static SkillsManager skillsManager; - private static Plugin instance; - private static BukkitTask deactivateSkillTask; public OneSwingOneSkill(int id) { super(id, "One Swing 1", "Chop the whole tree down, in one fell swoop!"); diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingTwoSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingTwoSkill.java index e5741c9..dba58f6 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingTwoSkill.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingTwoSkill.java @@ -15,8 +15,7 @@ public class OneSwingTwoSkill extends Skill { private static SkillsManager skillsManager; - private static Plugin instance; - private static BukkitTask deactivateSkillTask; + public OneSwingTwoSkill(int id) { super(id, "One Swing 2", "Extended time, and a slower cooldown!"); From 9122f3d9637cd5c77f5fdf82496cc92f36772f17 Mon Sep 17 00:00:00 2001 From: rooooose-b <142353909+rooooose-b@users.noreply.github.com> Date: Thu, 18 Apr 2024 02:03:52 +0200 Subject: [PATCH 26/28] fix: one swing doesn't clear leaves --- .../alathra/alathraskills/skills/woodcutting/util/OneSwing.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/util/OneSwing.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/util/OneSwing.java index e44c9cc..ee5ffa9 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/util/OneSwing.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/util/OneSwing.java @@ -31,7 +31,7 @@ public class OneSwing { public static void fellTree(Block block) { Material material = block.getType(); - if (!Tag.LOGS.isTagged(material) && !Tag.LEAVES.isTagged(material)) + if (!Tag.LOGS.isTagged(material)) return; block.breakNaturally(); From 4a2dcaebc4551ecb231e995a2079e9c44e787bd2 Mon Sep 17 00:00:00 2001 From: rooooose-b <142353909+rooooose-b@users.noreply.github.com> Date: Sun, 21 Apr 2024 01:03:22 +0200 Subject: [PATCH 27/28] feat: added one swing level three --- .../alathraskills/api/SkillsManager.java | 1 + .../skills/WoodcuttingSkillsListener.java | 7 ++++- .../woodcutting/OneSwingThreeSkill.java | 31 +++++++++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingThreeSkill.java diff --git a/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java b/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java index e6aca6d..977e264 100644 --- a/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java +++ b/src/main/java/io/github/alathra/alathraskills/api/SkillsManager.java @@ -67,6 +67,7 @@ public void loadWoodcuttingSkills() { woodcuttingSkills.put(307, new TrimmerTwoSkill(307)); woodcuttingSkills.put(308, new GroundskeeperTwoSkill(308)); woodcuttingSkills.put(309, new OneSwingTwoSkill(309)); + woodcuttingSkills.put(3110, new OneSwingThreeSkill(3110)); } } diff --git a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java index 71c8507..61fc315 100644 --- a/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java +++ b/src/main/java/io/github/alathra/alathraskills/listeners/skills/WoodcuttingSkillsListener.java @@ -23,6 +23,7 @@ public class WoodcuttingSkillsListener implements Listener { private SkillsPlayerManager skillsPlayerManager = AlathraSkills.getSkillsPlayerManager(); + // TODO: clean up skill check logic @EventHandler public void BlockBreakListener(BlockBreakEvent event) { Block block = event.getBlock(); @@ -51,7 +52,11 @@ public void BlockBreakListener(BlockBreakEvent event) { } else if (OneSwing.oneSwingActive(player)) { if (skillsPlayer.getPlayerSkills().get(305).isSelected()) { if (skillsPlayer.getPlayerSkills().get(309).isSelected()) { - OneSwing.runOneSwing(player, block, 2); + if (skillsPlayer.getPlayerSkills().get(3110).isSelected()) { + OneSwing.runOneSwing(player, block, 3); + } else { + OneSwing.runOneSwing(player, block, 2); + } } else { OneSwing.runOneSwing(player, block, 1); } diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingThreeSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingThreeSkill.java new file mode 100644 index 0000000..1a08393 --- /dev/null +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingThreeSkill.java @@ -0,0 +1,31 @@ +package io.github.alathra.alathraskills.skills.woodcutting; + +import com.github.milkdrinkers.colorparser.ColorParser; +import io.github.alathra.alathraskills.AlathraSkills; +import io.github.alathra.alathraskills.api.SkillsManager; +import io.github.alathra.alathraskills.skills.Skill; +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.util.Collections; + +public class OneSwingThreeSkill extends Skill { + + private static SkillsManager skillsManager; + + public OneSwingThreeSkill(int id) { + super(id, "One Swing 3", "Even more time, and even lower cooldown."); + + ItemStack icon = new ItemStack(Material.NETHERITE_AXE); + ItemMeta meta = icon.getItemMeta(); + meta.displayName(ColorParser.of("" + super.getName() + "").build()); + meta.lore(Collections.singletonList(ColorParser.of("" + super.getDescription() + "").build())); + icon.setItemMeta(meta); + super.setIcon(icon); + + skillsManager = AlathraSkills.getSkillsManager(); + instance = AlathraSkills.getInstance(); + super.setCategory(skillsManager.skillCategories.get(3)); + } +} From 29365339c93bb440d76d8c3b43e438ea9a17f900 Mon Sep 17 00:00:00 2001 From: rooooose-b <142353909+rooooose-b@users.noreply.github.com> Date: Sun, 21 Apr 2024 01:09:52 +0200 Subject: [PATCH 28/28] fix: changed lore to align with GUI design --- .../skills/woodcutting/GroundskeeperOneSkill.java | 5 +++-- .../skills/woodcutting/GroundskeeperTwoSkill.java | 3 ++- .../alathraskills/skills/woodcutting/OneSwingOneSkill.java | 5 +++-- .../skills/woodcutting/OneSwingThreeSkill.java | 5 +++-- .../alathraskills/skills/woodcutting/OneSwingTwoSkill.java | 5 +++-- .../skills/woodcutting/PreciseChopOneSkill.java | 4 +++- .../skills/woodcutting/PreciseChopTwoSkill.java | 5 +++-- .../alathraskills/skills/woodcutting/SaveTheTreesSkill.java | 6 +++++- .../alathraskills/skills/woodcutting/TrimmerOneSkill.java | 5 +++-- .../alathraskills/skills/woodcutting/TrimmerTwoSkill.java | 5 +++-- 10 files changed, 31 insertions(+), 17 deletions(-) diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/GroundskeeperOneSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/GroundskeeperOneSkill.java index 9c486a1..e6b62ef 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/GroundskeeperOneSkill.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/GroundskeeperOneSkill.java @@ -28,7 +28,8 @@ public GroundskeeperOneSkill(int id) { ItemStack icon = new ItemStack(Material.SHEARS); ItemMeta meta = icon.getItemMeta(); meta.displayName(ColorParser.of("" + super.getName() + "").build()); - meta.lore(Collections.singletonList(ColorParser.of("" + super.getDescription() + "").build())); + meta.lore(List.of(ColorParser.of("Level 6").build(), + ColorParser.of("" + super.getDescription() + "").build())); icon.setItemMeta(meta); super.setIcon(icon); @@ -38,7 +39,7 @@ public GroundskeeperOneSkill(int id) { - + // TODO: possibly refactor this skill run public static void runGroundskeeperOneSkill(BlockBreakEvent event) { Block block = event.getBlock(); Material material = block.getType(); diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/GroundskeeperTwoSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/GroundskeeperTwoSkill.java index 09b5411..6d9ec30 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/GroundskeeperTwoSkill.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/GroundskeeperTwoSkill.java @@ -27,7 +27,8 @@ public GroundskeeperTwoSkill(int id) { ItemStack icon = new ItemStack(Material.SHEARS); ItemMeta meta = icon.getItemMeta(); meta.displayName(ColorParser.of("" + super.getName() + "").build()); - meta.lore(Collections.singletonList(ColorParser.of("" + super.getDescription() + "").build())); + meta.lore(List.of(ColorParser.of("Level 8").build(), + ColorParser.of("" + super.getDescription() + "").build())); icon.setItemMeta(meta); super.setIcon(icon); diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingOneSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingOneSkill.java index b834782..db150b9 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingOneSkill.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingOneSkill.java @@ -15,6 +15,7 @@ import org.bukkit.scheduler.BukkitTask; import java.util.Collections; +import java.util.List; public class OneSwingOneSkill extends Skill { @@ -26,12 +27,12 @@ public OneSwingOneSkill(int id) { ItemStack icon = new ItemStack(Material.NETHERITE_AXE); ItemMeta meta = icon.getItemMeta(); meta.displayName(ColorParser.of("" + super.getName() + "").build()); - meta.lore(Collections.singletonList(ColorParser.of("" + super.getDescription() + "").build())); + meta.lore(List.of(ColorParser.of("Level 5").build(), + ColorParser.of("" + super.getDescription() + "").build())); icon.setItemMeta(meta); super.setIcon(icon); skillsManager = AlathraSkills.getSkillsManager(); - instance = AlathraSkills.getInstance(); super.setCategory(skillsManager.skillCategories.get(3)); } } diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingThreeSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingThreeSkill.java index 1a08393..046fda4 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingThreeSkill.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingThreeSkill.java @@ -9,6 +9,7 @@ import org.bukkit.inventory.meta.ItemMeta; import java.util.Collections; +import java.util.List; public class OneSwingThreeSkill extends Skill { @@ -20,12 +21,12 @@ public OneSwingThreeSkill(int id) { ItemStack icon = new ItemStack(Material.NETHERITE_AXE); ItemMeta meta = icon.getItemMeta(); meta.displayName(ColorParser.of("" + super.getName() + "").build()); - meta.lore(Collections.singletonList(ColorParser.of("" + super.getDescription() + "").build())); + meta.lore(List.of(ColorParser.of("Level 10").build(), + ColorParser.of("" + super.getDescription() + "").build())); icon.setItemMeta(meta); super.setIcon(icon); skillsManager = AlathraSkills.getSkillsManager(); - instance = AlathraSkills.getInstance(); super.setCategory(skillsManager.skillCategories.get(3)); } } diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingTwoSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingTwoSkill.java index dba58f6..27fa487 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingTwoSkill.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/OneSwingTwoSkill.java @@ -11,6 +11,7 @@ import org.bukkit.scheduler.BukkitTask; import java.util.Collections; +import java.util.List; public class OneSwingTwoSkill extends Skill { @@ -22,12 +23,12 @@ public OneSwingTwoSkill(int id) { ItemStack icon = new ItemStack(Material.NETHERITE_AXE); ItemMeta meta = icon.getItemMeta(); meta.displayName(ColorParser.of("" + super.getName() + "").build()); - meta.lore(Collections.singletonList(ColorParser.of("" + super.getDescription() + "").build())); + meta.lore(List.of(ColorParser.of("Level 9").build(), + ColorParser.of("" + super.getDescription() + "").build())); icon.setItemMeta(meta); super.setIcon(icon); skillsManager = AlathraSkills.getSkillsManager(); - instance = AlathraSkills.getInstance(); super.setCategory(skillsManager.skillCategories.get(3)); } } diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopOneSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopOneSkill.java index 7e2cf73..e441d76 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopOneSkill.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopOneSkill.java @@ -12,6 +12,7 @@ import org.bukkit.inventory.meta.ItemMeta; import java.util.Collections; +import java.util.List; import java.util.Random; public class PreciseChopOneSkill extends Skill { @@ -24,7 +25,8 @@ public PreciseChopOneSkill(int id) { ItemStack icon = new ItemStack(Material.OAK_LOG); ItemMeta meta = icon.getItemMeta(); meta.displayName(ColorParser.of("" + super.getName() + "").build()); - meta.lore(Collections.singletonList(ColorParser.of("" + super.getDescription() + "").build())); + meta.lore(List.of(ColorParser.of("Level 2").build(), + ColorParser.of("" + super.getDescription() + "").build())); icon.setItemMeta(meta); super.setIcon(icon); diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopTwoSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopTwoSkill.java index 4f3ff84..1f67709 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopTwoSkill.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/PreciseChopTwoSkill.java @@ -12,6 +12,7 @@ import org.bukkit.inventory.meta.ItemMeta; import java.util.Collections; +import java.util.List; import java.util.Random; public class PreciseChopTwoSkill extends Skill { @@ -24,8 +25,8 @@ public PreciseChopTwoSkill(int id) { ItemStack icon = new ItemStack(Material.OAK_LOG); ItemMeta meta = icon.getItemMeta(); meta.displayName(ColorParser.of("" + super.getName() + "").build()); - meta.lore(Collections.singletonList(ColorParser.of("" + super.getDescription() + "").build())); - icon.setItemMeta(meta); + meta.lore(List.of(ColorParser.of("Level 3").build(), + ColorParser.of("" + super.getDescription() + "").build())); icon.setItemMeta(meta); super.setIcon(icon); skillsManager = AlathraSkills.getSkillsManager(); diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/SaveTheTreesSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/SaveTheTreesSkill.java index 28aa169..d788d4f 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/SaveTheTreesSkill.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/SaveTheTreesSkill.java @@ -4,13 +4,16 @@ import io.github.alathra.alathraskills.AlathraSkills; import io.github.alathra.alathraskills.api.SkillsManager; import io.github.alathra.alathraskills.skills.Skill; +import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.Tag; import org.bukkit.block.Block; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; +import java.util.ArrayList; import java.util.Collections; +import java.util.List; public class SaveTheTreesSkill extends Skill { private SkillsManager skillsManager; @@ -21,7 +24,8 @@ public SaveTheTreesSkill(int id) { ItemStack icon = new ItemStack(Material.OAK_SAPLING); ItemMeta meta = icon.getItemMeta(); meta.displayName(ColorParser.of("" + super.getName() + "").build()); - meta.lore(Collections.singletonList(ColorParser.of("" + super.getDescription() + "").build())); + meta.lore(List.of(ColorParser.of("Level 1").build(), + ColorParser.of("" + super.getDescription() + "").build())); icon.setItemMeta(meta); super.setIcon(icon); diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/TrimmerOneSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/TrimmerOneSkill.java index 380eace..30327bd 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/TrimmerOneSkill.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/TrimmerOneSkill.java @@ -12,6 +12,7 @@ import org.bukkit.inventory.meta.ItemMeta; import java.util.Collections; +import java.util.List; import java.util.Random; public class TrimmerOneSkill extends Skill { @@ -24,8 +25,8 @@ public TrimmerOneSkill(int id) { ItemStack icon = new ItemStack(Material.OAK_LEAVES); ItemMeta meta = icon.getItemMeta(); meta.displayName(ColorParser.of("" + super.getName() + "").build()); - meta.lore(Collections.singletonList(ColorParser.of("" + super.getDescription() + "").build())); - icon.setItemMeta(meta); + meta.lore(List.of(ColorParser.of("Level 4").build(), + ColorParser.of("" + super.getDescription() + "").build())); icon.setItemMeta(meta); super.setIcon(icon); skillsManager = AlathraSkills.getSkillsManager(); diff --git a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/TrimmerTwoSkill.java b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/TrimmerTwoSkill.java index 1ef79c9..3e3c619 100644 --- a/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/TrimmerTwoSkill.java +++ b/src/main/java/io/github/alathra/alathraskills/skills/woodcutting/TrimmerTwoSkill.java @@ -12,6 +12,7 @@ import org.bukkit.inventory.meta.ItemMeta; import java.util.Collections; +import java.util.List; import java.util.Random; public class TrimmerTwoSkill extends Skill { @@ -24,8 +25,8 @@ public TrimmerTwoSkill(int id) { ItemStack icon = new ItemStack(Material.OAK_LEAVES); ItemMeta meta = icon.getItemMeta(); meta.displayName(ColorParser.of("" + super.getName() + "").build()); - meta.lore(Collections.singletonList(ColorParser.of("" + super.getDescription() + "").build())); - icon.setItemMeta(meta); + meta.lore(List.of(ColorParser.of("Level 7").build(), + ColorParser.of("" + super.getDescription() + "").build())); icon.setItemMeta(meta); super.setIcon(icon); skillsManager = AlathraSkills.getSkillsManager();