Skip to content

Commit 24e819c

Browse files
committedDec 21, 2024·
Simplified and standardized code as request in PR:342
1 parent bb75f2c commit 24e819c

File tree

8 files changed

+45
-39
lines changed

8 files changed

+45
-39
lines changed
 

‎bukkit/src/main/java/dev/aurelium/auraskills/bukkit/requirement/RequirementListener.java

+18-2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.bukkit.event.block.BlockPlaceEvent;
2020
import org.bukkit.event.entity.EntityDamageByEntityEvent;
2121
import org.bukkit.event.entity.EntityShootBowEvent;
22+
import org.bukkit.event.player.PlayerHarvestBlockEvent;
2223
import org.bukkit.event.player.PlayerInteractEvent;
2324
import org.bukkit.inventory.ItemStack;
2425

@@ -113,6 +114,13 @@ public void onPlace(BlockPlaceEvent event) {
113114
checkBlockRequirements(event.getPlayer(), event.getBlock().getType(), event);
114115
}
115116

117+
@EventHandler(priority = EventPriority.HIGH)
118+
public void onHarvest(PlayerHarvestBlockEvent event) {
119+
if (event.isCancelled()) return;
120+
checkBlockRequirements(event.getPlayer(), event.getHarvestedBlock().getType(), event);
121+
}
122+
123+
116124
@EventHandler(priority = EventPriority.HIGH)
117125
public void onAttack(EntityDamageByEntityEvent event) {
118126
if (event.isCancelled()) return;
@@ -168,7 +176,15 @@ private void checkItemRequirements(Player player, ItemStack item, Cancellable ev
168176
}
169177

170178
private void checkBlockRequirements(Player player, Material material, Cancellable event) {
171-
BlockRequirement blockRequirement = manager.getBlocks().stream().filter(b -> b.getMaterial() == material).findFirst().orElse(null);
179+
BlockRequirement blockRequirement = null;
180+
181+
for (BlockRequirement block : manager.getBlocks()) {
182+
if (block.getMaterial() == material) {
183+
blockRequirement = block;
184+
break;
185+
}
186+
}
187+
172188
if (blockRequirement != null) {
173189
if (event instanceof BlockBreakEvent) {
174190
if (!blockRequirement.checksBreaking()) return;
@@ -180,7 +196,7 @@ private void checkBlockRequirements(Player player, Material material, Cancellabl
180196
if (!node.check(player)) {
181197
event.setCancelled(true);
182198
String message = node.getDenyMessage();
183-
if(!message.isEmpty()) player.sendMessage(message);
199+
if (!message.isEmpty()) player.sendMessage(message);
184200
}
185201
}
186202
}

‎bukkit/src/main/java/dev/aurelium/auraskills/bukkit/requirement/RequirementManager.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,9 @@ public void loadBlocks() {
8989
Material material = Material.valueOf(blockNode.node("material").getString().toUpperCase(Locale.ROOT));
9090
boolean allowPlace = blockNode.node("allow_place").getBoolean();
9191
boolean allowBreak = blockNode.node("allow_break").getBoolean();
92+
boolean allowHarvest = blockNode.node("allow_harvest").getBoolean();
9293
List<? extends ConfigurationNode> requirementNodes = blockNode.node("requirements").childrenList();
93-
LinkedList<RequirementNode> nodes = new LinkedList<>();
94+
List<RequirementNode> nodes = new ArrayList<>();
9495

9596
for (ConfigurationNode requirementNode : requirementNodes) {
9697
String type = requirementNode.node("type").getString();
@@ -120,7 +121,7 @@ public void loadBlocks() {
120121
}
121122
}
122123

123-
BlockRequirement blockRequirement = new BlockRequirement(material, allowPlace, allowBreak, nodes);
124+
BlockRequirement blockRequirement = new BlockRequirement(material, allowPlace, allowBreak, allowHarvest, nodes);
124125
blockRequirements.add(blockRequirement);
125126
}
126127
if (!blockRequirements.isEmpty()) {

‎bukkit/src/main/java/dev/aurelium/auraskills/bukkit/requirement/blocks/BlockRequirement.java

+10-4
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,21 @@
22

33
import org.bukkit.Material;
44

5-
import java.util.LinkedList;
5+
import java.util.List;
66

77
public class BlockRequirement {
88

99
private final Material material;
1010
private final boolean checksPlace;
1111
private final boolean checksBreak;
12-
private final LinkedList<RequirementNode> nodes;
12+
private final boolean checksHarvest;
13+
private final List<RequirementNode> nodes;
1314

14-
public BlockRequirement(Material material, boolean checksPlace, boolean checksBreak, LinkedList<RequirementNode> nodes) {
15+
public BlockRequirement(Material material, boolean checksPlace, boolean checksBreak, boolean checksHarvest, List<RequirementNode> nodes) {
1516
this.material = material;
1617
this.checksPlace = checksPlace;
1718
this.checksBreak = checksBreak;
19+
this.checksHarvest = checksHarvest;
1820
this.nodes = nodes;
1921
}
2022

@@ -30,7 +32,11 @@ public boolean checksBreaking() {
3032
return checksBreak;
3133
}
3234

33-
public LinkedList<RequirementNode> getNodes() {
35+
public boolean checksHarvesting() {
36+
return checksHarvest;
37+
}
38+
39+
public List<RequirementNode> getNodes() {
3440
return nodes;
3541
}
3642
}

‎bukkit/src/main/java/dev/aurelium/auraskills/bukkit/requirement/blocks/ExcludedWorldNode.java

+1-8
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,10 @@
66
public class ExcludedWorldNode extends RequirementNode {
77

88
private final String[] worlds;
9-
private final String message;
109

1110
public ExcludedWorldNode(AuraSkills plugin, String[] worlds, String message) {
12-
super(plugin);
11+
super(plugin, message);
1312
this.worlds = worlds;
14-
this.message = message;
1513
}
1614

1715
@Override
@@ -23,9 +21,4 @@ public boolean check(Player player) {
2321
}
2422
return true;
2523
}
26-
27-
@Override
28-
public String getDenyMessage() {
29-
return message;
30-
}
3124
}

‎bukkit/src/main/java/dev/aurelium/auraskills/bukkit/requirement/blocks/PermissionNode.java

+2-7
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,14 @@
66
public class PermissionNode extends RequirementNode {
77

88
private final String permission;
9-
private final String message;
109

1110
public PermissionNode(AuraSkills plugin, String permission, String message) {
12-
super(plugin);
11+
super(plugin, message);
1312
this.permission = permission;
14-
this.message = message;
1513
}
1614

15+
@Override
1716
public boolean check(Player player) {
1817
return player.hasPermission(permission);
1918
}
20-
21-
public String getDenyMessage() {
22-
return message;
23-
}
2419
}

‎bukkit/src/main/java/dev/aurelium/auraskills/bukkit/requirement/blocks/RequirementNode.java

+7-2
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,16 @@
66
public abstract class RequirementNode {
77

88
protected AuraSkills plugin;
9+
protected String denyMessage;
910

10-
public RequirementNode(AuraSkills plugin) {
11+
public RequirementNode(AuraSkills plugin, String denyMessage) {
1112
this.plugin = plugin;
13+
this.denyMessage = denyMessage;
1214
}
1315

14-
public abstract String getDenyMessage();
1516
public abstract boolean check(Player player);
17+
18+
public String getDenyMessage() {
19+
return denyMessage;
20+
}
1621
}

‎bukkit/src/main/java/dev/aurelium/auraskills/bukkit/requirement/blocks/SkillNode.java

+2-7
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,15 @@ public class SkillNode extends RequirementNode {
88

99
private final Skill skill;
1010
private final int level;
11-
private final String message;
1211

1312
public SkillNode(AuraSkills plugin, Skill skill, int level, String message) {
14-
super(plugin);
13+
super(plugin, message);
1514
this.skill = skill;
1615
this.level = level;
17-
this.message = message;
1816
}
1917

18+
@Override
2019
public boolean check(Player player) {
2120
return plugin.getUser(player).getSkillLevel(skill) >= level;
2221
}
23-
24-
public String getDenyMessage() {
25-
return message;
26-
}
2722
}

‎bukkit/src/main/java/dev/aurelium/auraskills/bukkit/requirement/blocks/StatNode.java

+2-7
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,15 @@ public class StatNode extends RequirementNode {
88

99
private final Stat stat;
1010
private final int value;
11-
private final String message;
1211

1312
public StatNode(AuraSkills plugin, Stat stat, int value, String message) {
14-
super(plugin);
13+
super(plugin, message);
1514
this.stat = stat;
1615
this.value = value;
17-
this.message = message;
1816
}
1917

18+
@Override
2019
public boolean check(Player player) {
2120
return plugin.getUser(player).getStatLevel(stat) >= value;
2221
}
23-
24-
public String getDenyMessage() {
25-
return message;
26-
}
2722
}

0 commit comments

Comments
 (0)