Skip to content

Commit 770909e

Browse files
committed
Added blacklists, changed from checking 'air' to checking passable
1 parent 54517ad commit 770909e

9 files changed

Lines changed: 163 additions & 108 deletions

File tree

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

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

1212
<name>NerfFarms</name>

src/main/java/adhdmc/nerffarms/NerfFarms.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,12 @@
1515
import java.util.List;
1616

1717
public final class NerfFarms extends JavaPlugin {
18+
//TODO: Add config for a message that is sent to the player when the mob they kill is nerfed
19+
//TODO: Add a toggle command for that message
20+
//TODO: Add a config option for allowing non-player kills (checkDamager method in MobDamageListener)
21+
//TODO: Add configuration for max height diff between mob and attacker
22+
//TODO: Move permissions to an Enum
23+
//TODO: Move messages to an Enum
1824
public static NerfFarms plugin;
1925
public final MiniMessage miniMessage = MiniMessage.miniMessage();
2026

@@ -48,9 +54,11 @@ private void configDefaults() {
4854
FileConfiguration config = getConfig();
4955
config.addDefault("debug", 0);
5056
config.addDefault("only-nerf-hostiles", true);
51-
config.addDefault("bypass", List.of(""));
57+
config.addDefault("whitelisted-mobs", List.of(""));
58+
config.addDefault("blacklisted-mobs", List.of(""));
5259
config.addDefault("modification-type", "BOTH");
53-
config.addDefault("whitelisted-spawn-types", List.of("CUSTOM"));
60+
config.addDefault("whitelisted-spawn-reasons", List.of("CUSTOM"));
61+
config.addDefault("blacklisted-spawn-reasons", List.of(""));
5462
config.addDefault("blacklisted-below", Arrays.asList("MAGMA_BLOCK", "HONEY_BLOCK", "LAVA"));
5563
config.addDefault("blacklisted-in", Arrays.asList("HONEY_BLOCK", "LAVA", "BUBBLE_COLUMN"));
5664
config.addDefault("allow-projectile-damage", true);
@@ -59,7 +67,7 @@ private void configDefaults() {
5967
config.addDefault("require-line-of-sight", true);
6068
config.addDefault("skeletons-can-damage-creepers", true);
6169
config.addDefault("withers-can-damage-entities", true);
62-
config.addDefault("max-distance", 15);
70+
config.addDefault("max-total-distance", 15);
6371
config.addDefault("blacklisted-damage-types", Arrays.asList("BLOCK_EXPLOSION", "CONTACT", "CRAMMING",
6472
"DRAGON_BREATH", "DROWNING", "DRYOUT", "FALL", "FALLING_BLOCK", "FIRE", "FIRE_TICK", "FREEZE", "HOT_FLOOR",
6573
"LAVA", "LIGHTNING", "SUFFOCATION", "SUICIDE"));

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public class CommandHandler implements CommandExecutor, TabExecutor {
1919
public static final String helpCommand = "/nerffarms help";
2020
public static final String reloadCommand = "/nerffarms reload";
2121
public static final String commandsPermission = "nerffarms.commands";
22+
public static final String reloadPermission = "nerffarms.reload";
2223
public static final String noPermission = "<red>You do not have permission to run this command!";
2324

2425
private static final HashMap<String, SubCommand> subcommandList = new HashMap<>();
@@ -44,7 +45,10 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @N
4445
return false;
4546
}
4647
if (args.length == 0) {
47-
sender.sendMessage(NerfFarms.plugin.miniMessage.deserialize("<click:open_url:'https://github.com/illogicalsong/NerfFarms'><green><hover:show_text:'<aqua>Click to visit the GitHub repository'>NerfFarms | Version: <version>\nAuthor: _Rhythmic</hover></click>", Placeholder.unparsed("version", NerfFarms.plugin.getDescription().getVersion())));
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())));
4852
return true;
4953
}
5054
String command = args[0].toLowerCase();

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ public ReloadCommand() {
1717

1818
@Override
1919
public void doThing(CommandSender sender, String[] args) {
20-
if (sender instanceof Player && !sender.hasPermission(CommandHandler.commandsPermission)) {
20+
if (sender instanceof Player && !sender.hasPermission(CommandHandler.reloadPermission)) {
2121
sender.sendMessage(NerfFarms.plugin.miniMessage.deserialize(CommandHandler.noPermission));
2222
return;
2323
}
24-
if (!(sender instanceof Player) || sender.hasPermission(CommandHandler.commandsPermission)) {
24+
if (!(sender instanceof Player) || sender.hasPermission(CommandHandler.reloadPermission)) {
2525
NerfFarms.plugin.reloadConfig();
2626
NerfFarms.plugin.saveConfig();
2727
ConfigParser.validateConfig();

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

Lines changed: 63 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,19 @@
22

33
import adhdmc.nerffarms.NerfFarms;
44
import org.bukkit.Material;
5-
import org.bukkit.configuration.file.FileConfiguration;
65
import org.bukkit.entity.EntityType;
76
import org.bukkit.event.entity.CreatureSpawnEvent;
87
import org.bukkit.event.entity.EntityDamageEvent;
9-
import org.jetbrains.annotations.NotNull;
108

119
import java.util.*;
1210

1311
public class ConfigParser {
1412
private static final HashSet<Material> standOnBlacklist = new HashSet<>();
1513
private static final HashSet<Material> insideBlacklist = new HashSet<>();
16-
private static final HashSet<EntityType> bypassList = new HashSet<>();
17-
private static final HashSet<CreatureSpawnEvent.SpawnReason> spawnReasonList = new HashSet<>();
14+
private static final HashSet<EntityType> whitelistedMobList = new HashSet<>();
15+
private static final HashSet<EntityType> blacklistedMobList = new HashSet<>();
16+
private static final HashSet<CreatureSpawnEvent.SpawnReason> whitelistedSpawnReasonList = new HashSet<>();
17+
private static final HashSet<CreatureSpawnEvent.SpawnReason> blacklistedSpawnReasonList = new HashSet<>();
1818
private static final HashSet<EntityDamageEvent.DamageCause> blacklistedDamageTypes = new HashSet<>();
1919
private static int maxDistance = 0;
2020
private static int errorCount = 0;
@@ -27,17 +27,21 @@ public static void validateConfig() {
2727
//clear any set stuff.
2828
standOnBlacklist.clear();
2929
insideBlacklist.clear();
30-
bypassList.clear();
31-
spawnReasonList.clear();
30+
whitelistedMobList.clear();
31+
blacklistedMobList.clear();
32+
whitelistedSpawnReasonList.clear();
33+
blacklistedSpawnReasonList.clear();
3234
blacklistedDamageTypes.clear();
3335
maxDistance = 0;
3436
errorCount = 0;
3537
debug = 0;
3638
maxBlacklistedDamage = 100;
3739
List<String> standStringList = NerfFarms.plugin.getConfig().getStringList("blacklisted-below");
3840
List<String> inStringList = NerfFarms.plugin.getConfig().getStringList("blacklisted-in");
39-
List<String> bypassStringList = NerfFarms.plugin.getConfig().getStringList("bypass");
40-
List<String> spawnReasonStringList = NerfFarms.plugin.getConfig().getStringList("whitelisted-spawn-types");
41+
List<String> whitelistedMobStringList = NerfFarms.plugin.getConfig().getStringList("whitelisted-mobs");
42+
List<String> blacklistedMobStringList = NerfFarms.plugin.getConfig().getStringList("blacklisted-mobs");
43+
List<String> whitelistedSpawnReasonStringList = NerfFarms.plugin.getConfig().getStringList("whitelisted-spawn-reasons");
44+
List<String> blacklistedSpawnReasonStringList = NerfFarms.plugin.getConfig().getStringList("blacklisted-spawn-reasons");
4145
List<String> blacklistedDamageTypesList = NerfFarms.plugin.getConfig().getStringList("blacklisted-damage-types");
4246
int maxDistanceInt = NerfFarms.plugin.getConfig().getInt("max-distance");
4347
int maxBlacklistedDamageConfig = NerfFarms.plugin.getConfig().getInt("max-blacklisted-damage-percent");
@@ -65,8 +69,27 @@ public static void validateConfig() {
6569
}
6670
}
6771

68-
// Mob Bypass
69-
for (String type : bypassStringList) {
72+
// Mob Whitelist
73+
for (String type : whitelistedMobStringList) {
74+
if (type == null || type.equalsIgnoreCase("")) break;
75+
try {
76+
EntityType.valueOf(type.toUpperCase(Locale.ENGLISH));
77+
} catch (IllegalArgumentException e) {
78+
NerfFarms.plugin.getLogger().warning(type + " is not a valid entity to whitelist. Please choose another.");
79+
errorCount = errorCount + 1;
80+
continue;
81+
}
82+
EntityType entityType = EntityType.valueOf(type.toUpperCase(Locale.ENGLISH));
83+
if (entityType.isAlive()) {
84+
whitelistedMobList.add(entityType);
85+
} else {
86+
NerfFarms.plugin.getLogger().warning(type + " is not a valid entity to whitelist. Please choose another.");
87+
errorCount = errorCount + 1;
88+
}
89+
}
90+
91+
// Mob Blacklist
92+
for (String type : blacklistedMobStringList) {
7093
if (type == null || type.equalsIgnoreCase("")) break;
7194
try {
7295
EntityType.valueOf(type.toUpperCase(Locale.ENGLISH));
@@ -77,23 +100,37 @@ public static void validateConfig() {
77100
}
78101
EntityType entityType = EntityType.valueOf(type.toUpperCase(Locale.ENGLISH));
79102
if (entityType.isAlive()) {
80-
bypassList.add(entityType);
103+
blacklistedMobList.add(entityType);
81104
} else {
82-
NerfFarms.plugin.getLogger().warning(type + " is not a valid entity for bypass. Please choose another.");
105+
NerfFarms.plugin.getLogger().warning(type + " is not a valid entity to blacklist. Please choose another.");
106+
errorCount = errorCount + 1;
107+
}
108+
}
109+
110+
// Generate Spawn Reasons
111+
for (String type : whitelistedSpawnReasonStringList) {
112+
if (type == null || type.equalsIgnoreCase("")) break;
113+
try {
114+
CreatureSpawnEvent.SpawnReason.valueOf(type.toUpperCase(Locale.ENGLISH));
115+
} catch (IllegalArgumentException e) {
116+
NerfFarms.plugin.getLogger().warning(type + " is not a valid spawn reason (whitelisted-spawn-reasons). Please check that you have entered this correctly.");
83117
errorCount = errorCount + 1;
118+
continue;
84119
}
120+
whitelistedSpawnReasonList.add(CreatureSpawnEvent.SpawnReason.valueOf(type.toUpperCase(Locale.ENGLISH)));
85121
}
86122

87123
// Generate Spawn Reasons
88-
for (String type : spawnReasonStringList) {
124+
for (String type : blacklistedSpawnReasonStringList) {
125+
if (type == null || type.equalsIgnoreCase("")) break;
89126
try {
90127
CreatureSpawnEvent.SpawnReason.valueOf(type.toUpperCase(Locale.ENGLISH));
91128
} catch (IllegalArgumentException e) {
92-
NerfFarms.plugin.getLogger().warning(type + " is not a valid spawn reason. Please check that you have entered this correctly.");
129+
NerfFarms.plugin.getLogger().warning(type + " is not a valid spawn reason (blacklisted-spawn-reasons). Please check that you have entered this correctly.");
93130
errorCount = errorCount + 1;
94131
continue;
95132
}
96-
spawnReasonList.add(CreatureSpawnEvent.SpawnReason.valueOf(type.toUpperCase(Locale.ENGLISH)));
133+
blacklistedSpawnReasonList.add(CreatureSpawnEvent.SpawnReason.valueOf(type.toUpperCase(Locale.ENGLISH)));
97134
}
98135
// Generate Environmental Causes
99136
for (String type : blacklistedDamageTypesList) {
@@ -137,15 +174,21 @@ public static Set<Material> getInsideBlackList() {
137174
return Collections.unmodifiableSet(insideBlacklist);
138175
}
139176

140-
public static Set<EntityType> getBypassList() {
141-
return Collections.unmodifiableSet(bypassList);
177+
public static Set<EntityType> getWhitelistedMobList() {
178+
return Collections.unmodifiableSet(whitelistedMobList);
179+
}
180+
public static Set<EntityType> getBlacklistedMobList() {
181+
return Collections.unmodifiableSet(blacklistedMobList);
142182
}
143183

144-
public static Set<CreatureSpawnEvent.SpawnReason> getSpawnReasonList() {
145-
return Collections.unmodifiableSet(spawnReasonList);
184+
public static Set<CreatureSpawnEvent.SpawnReason> getWhitelistedSpawnReasonList() {
185+
return Collections.unmodifiableSet(whitelistedSpawnReasonList);
186+
}
187+
public static Set<CreatureSpawnEvent.SpawnReason> getBlacklistedSpawnReasonList() {
188+
return Collections.unmodifiableSet(blacklistedSpawnReasonList);
146189
}
147190

148-
public static Set<EntityDamageEvent.DamageCause> getblacklistedDamageTypesSet() {
191+
public static Set<EntityDamageEvent.DamageCause> getBlacklistedDamageTypesSet() {
149192
return Collections.unmodifiableSet(blacklistedDamageTypes);
150193
}
151194

0 commit comments

Comments
 (0)