Skip to content

Commit f7f143e

Browse files
authored
Merge pull request #17 from ADHDMC/rewrite
Rewrite
2 parents f9796fe + 172d05b commit f7f143e

40 files changed

Lines changed: 1012 additions & 746 deletions

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>ADHDMC</groupId>
88
<artifactId>NerfFarms</artifactId>
9-
<version>0.3.2</version>
9+
<version>0.4.0</version>
1010
<packaging>jar</packaging>
1111

1212
<name>NerfFarms</name>
@@ -74,7 +74,7 @@
7474
<dependency>
7575
<groupId>io.papermc.paper</groupId>
7676
<artifactId>paper-api</artifactId>
77-
<version>1.19.2-R0.1-SNAPSHOT</version>
77+
<version>1.19.3-R0.1-SNAPSHOT</version>
7878
<scope>provided</scope>
7979
</dependency>
8080
<dependency>
Lines changed: 13 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,41 @@
11
package adhdmc.nerffarms;
22

33
import adhdmc.nerffarms.command.CommandHandler;
4-
import adhdmc.nerffarms.config.ConfigParser;
4+
import adhdmc.nerffarms.util.NFConfig;
5+
import adhdmc.nerffarms.util.Defaults;
56
import adhdmc.nerffarms.listener.ItemPickupListener;
6-
import adhdmc.nerffarms.listener.MobDamageListener;
7+
import adhdmc.nerffarms.listener.damagehandling.DamageListener;
78
import adhdmc.nerffarms.listener.MobDeathListener;
89
import net.kyori.adventure.text.minimessage.MiniMessage;
910
import org.bstats.bukkit.Metrics;
1011
import org.bukkit.command.CommandExecutor;
1112
import org.bukkit.command.PluginCommand;
12-
import org.bukkit.configuration.file.FileConfiguration;
1313
import org.bukkit.plugin.java.JavaPlugin;
1414

15-
import java.util.Arrays;
16-
import java.util.List;
17-
1815
public final class NerfFarms extends JavaPlugin {
1916
//TODO: Add config for a message that is sent to the player when the mob they kill is nerfed
2017
//TODO: Add a toggle command for that message
2118
//TODO: Add a config option for allowing non-player kills (checkDamager method in MobDamageListener)
22-
//TODO: Add configuration for max height diff between mob and attacker
23-
//TODO: Move permissions to an Enum
24-
//TODO: Move messages to an Enum
25-
public static NerfFarms plugin;
26-
public final MiniMessage miniMessage = MiniMessage.miniMessage();
19+
private static NerfFarms instance;
20+
private static final MiniMessage miniMessage = MiniMessage.miniMessage();
2721

2822
@Override
2923
public void onEnable() {
30-
plugin = this;
24+
instance = this;
3125
try {
3226
Class.forName("net.kyori.adventure.text.minimessage.MiniMessage");
3327
Class.forName("com.destroystokyo.paper.entity.Pathfinder");
3428
} catch (ClassNotFoundException exception) {
3529
this.getLogger().severe("NerfFarms relies on methods in classes not present on your server. Disabling plugin");
3630
this.getServer().getPluginManager().disablePlugin(this);
3731
}
38-
configDefaults();
39-
ConfigParser.validateConfig();
32+
Defaults.configDefaults();
33+
NFConfig.validateConfig();
4034
CommandHandler.registerCommands();
4135
Metrics metrics = new Metrics(this, 16509);
4236
this.saveDefaultConfig();
4337
this.getServer().getPluginManager().registerEvents(new MobDeathListener(), this);
44-
this.getServer().getPluginManager().registerEvents(new MobDamageListener(), this);
38+
this.getServer().getPluginManager().registerEvents(new DamageListener(), this);
4539
this.getServer().getPluginManager().registerEvents(new ItemPickupListener(), this);
4640
registerCommand(this.getCommand("nerffarms"), new CommandHandler());
4741
}
@@ -52,60 +46,11 @@ private static void registerCommand(PluginCommand command, CommandExecutor execu
5246
}
5347
}
5448

55-
private void configDefaults() {
56-
FileConfiguration config = getConfig();
57-
config.addDefault("debug", 0);
58-
config.addDefault("only-nerf-hostiles", true);
59-
config.addDefault("whitelisted-mobs", List.of(""));
60-
config.addDefault("blacklisted-mobs", List.of(""));
61-
config.addDefault("modification-type", "BOTH");
62-
config.addDefault("whitelisted-spawn-reasons", List.of("CUSTOM"));
63-
config.addDefault("blacklisted-spawn-reasons", List.of(""));
64-
config.addDefault("blacklisted-below", Arrays.asList("MAGMA_BLOCK", "HONEY_BLOCK", "LAVA"));
65-
config.addDefault("blacklisted-in", Arrays.asList("HONEY_BLOCK", "LAVA", "BUBBLE_COLUMN"));
66-
config.addDefault("allow-projectile-damage", true);
67-
config.addDefault("require-path", true);
68-
config.addDefault("require-open-surroundings", true);
69-
config.addDefault("require-line-of-sight", true);
70-
config.addDefault("skeletons-can-damage-creepers", true);
71-
config.addDefault("withers-can-damage-entities", true);
72-
config.addDefault("frogs-can-eat-slimes", true);
73-
config.addDefault("frogs-can-eat-magma-cubes", true);
74-
config.addDefault("iron-golems-can-damage-entities", false);
75-
config.addDefault("max-total-distance", 15);
76-
config.addDefault("blacklisted-damage-types", Arrays.asList("BLOCK_EXPLOSION", "CONTACT", "CRAMMING",
77-
"DRAGON_BREATH", "DROWNING", "DRYOUT", "FALL", "FALLING_BLOCK", "FIRE", "FIRE_TICK", "FREEZE", "HOT_FLOOR",
78-
"LAVA", "LIGHTNING", "SUFFOCATION", "SUICIDE"));
79-
config.addDefault("max-blacklisted-damage-percent", 75);
80-
}
81-
82-
/**
83-
* Used for the beginning of method calls
84-
* @param message Debug Message String
85-
*/
86-
public static void debugLvl1(String message) {
87-
if (ConfigParser.debugLevel() == 1 || ConfigParser.debugLevel() == 4) {
88-
plugin.getLogger().info(message);
89-
}
90-
}
91-
92-
/**
93-
* Used for return statements, and their explanations
94-
* @param message Debug Message String
95-
*/
96-
public static void debugLvl2(String message){
97-
if (ConfigParser.debugLevel() == 2 || ConfigParser.debugLevel() == 4) {
98-
plugin.getLogger().info(message);
99-
}
49+
public static NerfFarms getInstance() {
50+
return instance;
10051
}
10152

102-
/**
103-
* Used for methods that are called in assistance to other methods
104-
* @param message Debug Message String
105-
*/
106-
public static void debugLvl3(String message){
107-
if (ConfigParser.debugLevel() == 3 || ConfigParser.debugLevel() == 4) {
108-
plugin.getLogger().info(message);
109-
}
53+
public static MiniMessage getMiniMessage() {
54+
return miniMessage;
11055
}
11156
}

src/main/java/adhdmc/nerffarms/command/CommandHandler.java

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package adhdmc.nerffarms.command;
22

33
import adhdmc.nerffarms.NerfFarms;
4+
import adhdmc.nerffarms.util.NFMessage;
5+
import adhdmc.nerffarms.util.NFPerm;
6+
import net.kyori.adventure.text.minimessage.MiniMessage;
47
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
58
import org.bukkit.command.Command;
69
import org.bukkit.command.CommandExecutor;
@@ -16,13 +19,8 @@
1619

1720
public class CommandHandler implements CommandExecutor, TabExecutor {
1821

19-
public static final String helpCommand = "/nerffarms help";
20-
public static final String reloadCommand = "/nerffarms reload";
21-
public static final String commandsPermission = "nerffarms.commands";
22-
public static final String reloadPermission = "nerffarms.reload";
23-
public static final String noPermission = "<red>You do not have permission to run this command!";
24-
2522
private static final HashMap<String, SubCommand> subcommandList = new HashMap<>();
23+
MiniMessage miniMessage = NerfFarms.getMiniMessage();
2624

2725
public static void registerCommands() {
2826
CommandHandler.subcommandList.put("help", new HelpCommand());
@@ -32,30 +30,30 @@ public static void registerCommands() {
3230
@Override
3331
public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
3432
ArrayList<String> subCommands1 = new ArrayList<>(Arrays.asList("help", "reload"));
35-
if (args.length == 1 && sender.hasPermission(commandsPermission)) {
33+
if (args.length == 1 && sender.hasPermission(NFPerm.NF_COMMANDS.getPerm())) {
3634
return subCommands1;
3735
}
3836
return null;
3937
}
4038

4139
@Override
4240
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @NotNull String label, String[] args) {
43-
if (sender instanceof Player && !sender.hasPermission(commandsPermission)) {
44-
sender.sendMessage(NerfFarms.plugin.miniMessage.deserialize(noPermission));
41+
if (sender instanceof Player && !sender.hasPermission(NFPerm.NF_COMMANDS.getPerm())) {
42+
sender.sendRichMessage(NFMessage.NO_PERMISSION.getMessage());
4543
return false;
4644
}
4745
if (args.length == 0) {
48-
sender.sendMessage(NerfFarms.plugin.miniMessage.deserialize("<click:open_url:'https://github.com/ADHDMC/NerfFarms'><gray><hover:show_text:'<aqua>Click to visit the GitHub repository'><green>NerfFarms</green> <white>|</white> Version: <green><version></green>\n<desc>\nAuthors: <green><author></hover></click>",
49-
Placeholder.unparsed("author", NerfFarms.plugin.getDescription().getAuthors().toString()),
50-
Placeholder.unparsed("version", NerfFarms.plugin.getDescription().getVersion()),
51-
Placeholder.unparsed("desc", NerfFarms.plugin.getDescription().getDescription())));
46+
sender.sendMessage(miniMessage.deserialize(NFMessage.PLUGIN_INFO.getMessage(),
47+
Placeholder.unparsed("author", NerfFarms.getInstance().getDescription().getAuthors().toString()),
48+
Placeholder.unparsed("version", NerfFarms.getInstance().getDescription().getVersion()),
49+
Placeholder.unparsed("desc", NerfFarms.getInstance().getDescription().getDescription())));
5250
return true;
5351
}
5452
String command = args[0].toLowerCase();
5553
if (subcommandList.containsKey(command)) {
56-
subcommandList.get(command).doThing(sender, Arrays.copyOfRange(args, 1, args.length));
54+
subcommandList.get(command).execute(sender, Arrays.copyOfRange(args, 1, args.length));
5755
} else {
58-
sender.sendMessage(NerfFarms.plugin.miniMessage.deserialize("<red><hover:show_text:'<gray>/nerffarms help'><click:suggest_command:'/nerffarms help'>Sorry! You input the command incorrectly. Please use /nerffarms help to see all commands.</click></hover>"));
56+
sender.sendRichMessage(NFMessage.INCORRECT_INPUT.getMessage());
5957
}
6058
return true;
6159
}

src/main/java/adhdmc/nerffarms/command/HelpCommand.java

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package adhdmc.nerffarms.command;
22

3-
import adhdmc.nerffarms.NerfFarms;
4-
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
3+
import adhdmc.nerffarms.util.NFMessage;
4+
import adhdmc.nerffarms.util.NFPerm;
55
import org.bukkit.command.CommandSender;
66
import org.bukkit.entity.Player;
77

@@ -11,30 +11,20 @@ public class HelpCommand extends SubCommand {
1111

1212

1313
public HelpCommand() {
14-
super("help", "NerfMobs help", CommandHandler.helpCommand);
14+
super("help", "NerfMobs help", "/nerffarms help");
1515
}
1616

1717
@Override
18-
public void doThing(CommandSender sender, String[] args) {
19-
if (sender instanceof Player player && sender.hasPermission("nerffarms.commands")) {
20-
player.sendMessage(NerfFarms.plugin.miniMessage.deserialize(
21-
"<grey>• <aqua><click:suggest_command:'<help>'>" +
22-
"<hover:show_text:'<yellow><help>'>/nerffarms help" +
23-
"</hover></click></aqua> - <dark_aqua>shows this list",
24-
Placeholder.unparsed("help", CommandHandler.helpCommand)));
25-
player.sendMessage(NerfFarms.plugin.miniMessage.deserialize(
26-
"<grey>• <aqua><click:suggest_command:'<reload>'>" +
27-
"<hover:show_text:'<yellow><reload>'>/nerffarms reload" +
28-
"</hover></click></aqua> - <dark_aqua>reloads the NerfFarms config",
29-
Placeholder.unparsed("reload", CommandHandler.reloadCommand)));
18+
public void execute(CommandSender sender, String[] args) {
19+
if (sender instanceof Player player && sender.hasPermission(NFPerm.NF_COMMANDS.getPerm())) {
20+
player.sendMessage(NFMessage.HELP.getMessage());
3021
return;
3122
}
3223
if (sender instanceof Player player) {
33-
player.sendMessage(NerfFarms.plugin.miniMessage.deserialize(CommandHandler.noPermission));
24+
player.sendRichMessage(NFMessage.NO_PERMISSION.getMessage());
3425
return;
3526
}
36-
sender.sendMessage(CommandHandler.helpCommand);
37-
sender.sendMessage(CommandHandler.reloadCommand);
27+
sender.sendRichMessage(NFMessage.HELP.getMessage());
3828
}
3929

4030
@Override

src/main/java/adhdmc/nerffarms/command/ReloadCommand.java

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package adhdmc.nerffarms.command;
22

3-
import adhdmc.nerffarms.config.ConfigParser;
3+
import adhdmc.nerffarms.util.NFConfig;
44
import adhdmc.nerffarms.NerfFarms;
5-
import adhdmc.nerffarms.config.ModType;
5+
import adhdmc.nerffarms.util.ModType;
6+
import adhdmc.nerffarms.util.NFMessage;
7+
import adhdmc.nerffarms.util.NFPerm;
68
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
79
import org.bukkit.command.CommandSender;
810
import org.bukkit.entity.Player;
@@ -16,22 +18,21 @@ public ReloadCommand() {
1618
}
1719

1820
@Override
19-
public void doThing(CommandSender sender, String[] args) {
20-
if (sender instanceof Player && !sender.hasPermission(CommandHandler.reloadPermission)) {
21-
sender.sendMessage(NerfFarms.plugin.miniMessage.deserialize(CommandHandler.noPermission));
21+
public void execute(CommandSender sender, String[] args) {
22+
if (sender instanceof Player && !sender.hasPermission(NFPerm.NF_RELOAD.getPerm())) {
23+
sender.sendRichMessage(NFMessage.NO_PERMISSION.getMessage());
2224
return;
2325
}
24-
if (!(sender instanceof Player) || sender.hasPermission(CommandHandler.reloadPermission)) {
25-
NerfFarms.plugin.reloadConfig();
26-
NerfFarms.plugin.saveConfig();
27-
ConfigParser.validateConfig();
28-
sender.sendMessage(NerfFarms.plugin.miniMessage.deserialize("<gold>NerfFarms config has been reloaded!"));
29-
if (ConfigParser.getErrorCount() > 0) {
30-
sender.sendMessage(NerfFarms.plugin.miniMessage.deserialize("<red>Your config had <errors> error(s). Check your console for details.", Placeholder.unparsed("errors", String.valueOf(ConfigParser.getErrorCount()))));
26+
if (!(sender instanceof Player) || sender.hasPermission(NFPerm.NF_RELOAD.getPerm())) {
27+
NerfFarms.getInstance().reloadConfig();
28+
NerfFarms.getInstance().saveConfig();
29+
NFConfig.validateConfig();
30+
sender.sendRichMessage(NFMessage.PLUGIN_RELOADED.getMessage());
31+
if (NFConfig.getErrorCount() > 0) {
32+
sender.sendMessage(NerfFarms.getMiniMessage().deserialize(NFMessage.PLUGIN_RELOADED_WITH_ERRORS.getMessage(), Placeholder.unparsed("errors", String.valueOf(NFConfig.getErrorCount()))));
3133
}
3234
if (ModType.getModType() == ModType.NEITHER) {
33-
sender.sendMessage(NerfFarms.plugin.miniMessage.deserialize("<red>Your config does not modify mob drops or exp, this can be due to an error with the modification-type setting or it was set to neither!"));
34-
sender.sendMessage(NerfFarms.plugin.miniMessage.deserialize("<gold>This plugin will do nothing in this state."));
35+
sender.sendRichMessage(NFMessage.PLUGIN_USELESS.getMessage());
3536
}
3637
}
3738
}

src/main/java/adhdmc/nerffarms/command/SubCommand.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public String getSyntax() {
2828
return syntax;
2929
}
3030

31-
public abstract void doThing(CommandSender sender, String[] args);
31+
public abstract void execute(CommandSender sender, String[] args);
3232

3333
public abstract List<String> getSubcommandArguments(CommandSender sender, String[] args);
3434

src/main/java/adhdmc/nerffarms/config/ConfigToggle.java

Lines changed: 0 additions & 44 deletions
This file was deleted.
Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,29 @@
11
package adhdmc.nerffarms.listener;
22

3+
import adhdmc.nerffarms.util.NFConfig;
4+
import adhdmc.nerffarms.util.NFKey;
35
import adhdmc.nerffarms.util.Util;
46
import org.bukkit.NamespacedKey;
5-
import org.bukkit.entity.Mob;
7+
import org.bukkit.entity.EntityType;
68
import org.bukkit.event.EventHandler;
79
import org.bukkit.event.EventPriority;
810
import org.bukkit.event.Listener;
911
import org.bukkit.event.entity.EntityPickupItemEvent;
1012
import org.bukkit.inventory.ItemStack;
13+
import org.bukkit.inventory.meta.ItemMeta;
14+
import org.bukkit.persistence.PersistentDataContainer;
1115
import org.bukkit.persistence.PersistentDataType;
1216

17+
import java.util.HashSet;
18+
1319
public class ItemPickupListener implements Listener {
14-
private final NamespacedKey pickedUp = Util.pickedUpItem;
20+
private final NamespacedKey pickedUp = NFKey.PICKED_UP_ITEM.getKey();
21+
HashSet<EntityType> pickupBlacklist = NFConfig.getBlacklistedPickupMobs();
1522

1623
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
1724
public void onItemPickup(EntityPickupItemEvent pickupEvent) {
18-
if (!(pickupEvent.getEntity() instanceof Mob mob)) return;
19-
ItemStack item = pickupEvent.getItem().getItemStack();
20-
byte t = 1;
21-
item.getItemMeta().getPersistentDataContainer().set(pickedUp, PersistentDataType.BYTE, t);
25+
if (pickupBlacklist.contains(pickupEvent.getEntityType())) {
26+
pickupEvent.setCancelled(true);
27+
}
2228
}
2329
}

0 commit comments

Comments
 (0)