Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: first 10 woodcutting skills #32

Merged
merged 30 commits into from
Apr 21, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
0014e10
fix: new skill ID system
rooooose-b Mar 15, 2024
34c0498
refactor: moved save the trees skill logic
rooooose-b Mar 19, 2024
e469c7a
feat: added precise chop level one
rooooose-b Mar 19, 2024
c599007
feat: added precise chop level two
rooooose-b Mar 19, 2024
30d2aad
feat: added trimmer level one
rooooose-b Mar 19, 2024
d295e2d
refactor: standardized function names
rooooose-b Mar 19, 2024
fa41ea1
feat: added one swing level one
rooooose-b Mar 19, 2024
9070987
Merge branch 'main' into feat/skill-structure
rooooose-b Mar 21, 2024
00e349d
feat: check for skills before running skill functions
rooooose-b Mar 21, 2024
e977c6c
fix: finished implementing skill checks
rooooose-b Mar 21, 2024
5218717
feat: added carpenter level one
rooooose-b Mar 22, 2024
e82e88f
fix: corrected skill check
rooooose-b Mar 22, 2024
70bd353
feat: added trimmer level two
rooooose-b Mar 22, 2024
640522a
refactor: common naming scheme for functions
rooooose-b Mar 22, 2024
6dcad76
feat: added one swing cooldown
rooooose-b Mar 22, 2024
d9f888d
refactor: moved one swing active and running lists
rooooose-b Mar 22, 2024
a64b937
fix: corrected classes for oneswing methods
rooooose-b Apr 17, 2024
c39d56d
fix: check for right click before firing one swing
rooooose-b Apr 17, 2024
8680bea
feat: replaced carpenter with groundskeeper
rooooose-b Apr 17, 2024
cfc3808
Merge branch 'main' into feat/skill-structure
rooooose-b Apr 17, 2024
610bdb8
fix: build errors
rooooose-b Apr 17, 2024
a5eca67
feat: check if block is natural before firing skills
rooooose-b Apr 17, 2024
eb5418c
feat: added groundskeeper two skill
rooooose-b Apr 17, 2024
1cddba9
refactor: redid random percentage chances
rooooose-b Apr 17, 2024
9fcb6f7
refactor: refactored one swing readying and activation
rooooose-b Apr 17, 2024
85f3e79
feat: added one swing level two
rooooose-b Apr 17, 2024
3f15ef8
refactor: removed unnecessary variables
rooooose-b Apr 17, 2024
9122f3d
fix: one swing doesn't clear leaves
rooooose-b Apr 18, 2024
4a2dcae
feat: added one swing level three
rooooose-b Apr 20, 2024
2936533
fix: changed lore to align with GUI design
rooooose-b Apr 20, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +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.SaveTheTreesSkill;
import io.github.alathra.alathraskills.skills.woodcutting.*;

public class SkillsManager implements Reloadable {

Expand Down Expand Up @@ -58,7 +58,16 @@ public void loadSkills() {
}

public void loadWoodcuttingSkills() {
woodcuttingSkills.put(1, new SaveTheTreesSkill(1));
woodcuttingSkills.put(301, new SaveTheTreesSkill(301));
woodcuttingSkills.put(302, new PreciseChopOneSkill(302));
woodcuttingSkills.put(303, new PreciseChopTwoSkill(302));
woodcuttingSkills.put(304, new TrimmerOneSkill(304));
woodcuttingSkills.put(305, new OneSwingOneSkill(305));
woodcuttingSkills.put(306, new GroundskeeperOneSkill(306));
woodcuttingSkills.put(307, new TrimmerTwoSkill(307));
woodcuttingSkills.put(308, new GroundskeeperTwoSkill(308));
woodcuttingSkills.put(309, new OneSwingTwoSkill(309));
woodcuttingSkills.put(3110, new OneSwingThreeSkill(3110));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,10 @@ public static float getSkillCategoryExperience(
}


public final HashMap<UUID, SkillsPlayer> getSkillPlayers() {
return skillPlayers;
}

//TODO
// https://github.com/Rumsfield/konquest/blob/main/api/src/main/java/com/github/rumsfield/konquest/api/manager/KonquestPlayerManager.java

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,12 @@
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.WoodcuttingSkillsListener;
import io.github.alathra.alathraskills.listeners.pdc.PDCUnnaturalBlockHandler;
import io.github.alathra.alathraskills.listeners.player.PlayerJoinListener;
import io.github.alathra.alathraskills.listeners.player.PlayerLeaveListener;
import io.github.alathra.alathraskills.listeners.skills.woodcutting.SaveTheTreesListener;



/**
* A class to handle registration of event listeners.
Expand Down Expand Up @@ -37,6 +39,6 @@ public void onDisable() {
}

public void registerWoodcuttingSkillsListeners() {
plugin.getServer().getPluginManager().registerEvents(new SaveTheTreesListener(), plugin);
plugin.getServer().getPluginManager().registerEvents(new WoodcuttingSkillsListener(), plugin);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
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.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 io.github.alathra.alathraskills.utility.PDCUtil;
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.Action;
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 SkillsPlayerManager skillsPlayerManager = AlathraSkills.getSkillsPlayerManager();

// TODO: clean up skill check logic
@EventHandler
public void BlockBreakListener(BlockBreakEvent event) {
Block block = event.getBlock();
Material material = block.getType();
Player player = event.getPlayer();

SkillsPlayer skillsPlayer = skillsPlayerManager.getSkillPlayers().get(player.getUniqueId());

if (PDCUtil.isUnnatural(block))
return;

if (Tag.LOGS.isTagged(material)) {
if (skillsPlayer.getPlayerSkills().get(301).isSelected())
SaveTheTreesSkill.runSaveTheTreesSkill(block);

if (skillsPlayer.getPlayerSkills().get(302).isSelected()) {
if (skillsPlayer.getPlayerSkills().get(303).isSelected()) {
PreciseChopTwoSkill.runPreciseChopTwoSkill(block);
} else {
PreciseChopOneSkill.runPreciseChopOneSkill(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()) {
if (skillsPlayer.getPlayerSkills().get(3110).isSelected()) {
OneSwing.runOneSwing(player, block, 3);
} else {
OneSwing.runOneSwing(player, block, 2);
}
} else {
OneSwing.runOneSwing(player, block, 1);
}
}
}


}

if (Tag.LEAVES.isTagged(material)) {
if (skillsPlayer.getPlayerSkills().get(304).isSelected()) {
if (skillsPlayer.getPlayerSkills().get(307).isSelected()) {
TrimmerTwoSkill.runTrimmerTwoSkill(block);
} else {
TrimmerOneSkill.runTrimmerOneSkill(block);
}
}

if (skillsPlayer.getPlayerSkills().get(306).isSelected()) {
if (skillsPlayer.getPlayerSkills().get(308).isSelected()) {
GroundskeeperTwoSkill.runGroundskeeperTwoSkill(event);
} else {
GroundskeeperOneSkill.runGroundskeeperOneSkill(event);
}
}
}
}


@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).isSelected())
return;

event.setInstaBreak(true);
}

@EventHandler
public void RightClickListener(PlayerInteractEvent event) {
SkillsPlayer skillsPlayer = skillsPlayerManager.getSkillPlayers().get(event.getPlayer().getUniqueId());

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 (!Tag.ITEMS_AXES.isTagged(event.getMaterial()))
return;

// Return if right click logs
if (Tag.LOGS.isTagged(event.getClickedBlock().getType()))
return;

Player player = event.getPlayer();

if (skillsPlayer.getPlayerSkills().get(305).isSelected()) {
if (OneSwing.hasOneSwingCooldown(player)) {
player.sendActionBar(ColorParser.of("<dark_red>One Swing isn't ready yet. Cooldown remaining: " + OneSwing.getRemainingCooldown(player) + " seconds.").build());
return;
}
OneSwing.readyOneSwing(player);
}
}
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -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("<green><bold>" + super.getName() + "</green></bold>").build());
meta.lore(List.of(ColorParser.of("<yellow>Level 6</yellow>").build(),
ColorParser.of("<red><italics>" + super.getDescription() + "</gray></italics>").build()));
icon.setItemMeta(meta);
super.setIcon(icon);

skillsManager = AlathraSkills.getSkillsManager();
super.setCategory(skillsManager.skillCategories.get(3));
}



// TODO: possibly refactor this skill run
public static void runGroundskeeperOneSkill(BlockBreakEvent event) {
Block block = event.getBlock();
Material material = block.getType();
Location location = block.getLocation();

List<Block> 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.15)
location.getWorld().dropItemNaturally(location, new ItemStack(material, 2));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
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("<green><bold>" + super.getName() + "</green></bold>").build());
meta.lore(List.of(ColorParser.of("<yellow>Level 8</yellow>").build(),
ColorParser.of("<red><italics>" + super.getDescription() + "</gray></italics>").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<Block> 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));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
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;
import java.util.List;

public class OneSwingOneSkill extends Skill {

private static SkillsManager skillsManager;

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("<green><bold>" + super.getName() + "</green></bold>").build());
meta.lore(List.of(ColorParser.of("<yellow>Level 5</yellow>").build(),
ColorParser.of("<red><italics>" + super.getDescription() + "</gray></italics>").build()));
icon.setItemMeta(meta);
super.setIcon(icon);

skillsManager = AlathraSkills.getSkillsManager();
super.setCategory(skillsManager.skillCategories.get(3));
}
}
Loading