1616import org .bukkit .persistence .PersistentDataType ;
1717import org .bukkit .projectiles .ProjectileSource ;
1818
19+ import java .util .Map ;
1920import java .util .Objects ;
2021import java .util .logging .Logger ;
2122
2223public class MobDamageListener implements Listener {
2324 public static final NamespacedKey nerfMob = new NamespacedKey (NerfFarms .plugin , "nerf-mob" );
2425 public static final NamespacedKey disallowedDamage = new NamespacedKey (NerfFarms .plugin , "disallowed-damage" );
25- private static boolean debugSetting ;
26+ private static final Map <ConfigParser .ConfigToggles , Boolean > configToggles = ConfigParser .getConfigToggles ();
27+ boolean debugSetting = false ;
2628 private static Logger logger ;
27- private static final byte f = 0 ;
2829 private static final byte t = 1 ;
2930
3031 @ EventHandler
3132 public void onMobDamage (EntityDamageEvent damageEvent ) {
32- debugSetting = ConfigParser . isDebug ( );
33+ debugSetting = configToggles . get ( ConfigParser . ConfigToggles . DEBUG );
3334 logger = NerfFarms .plugin .getLogger ();
3435 Entity damagedEntity = damageEvent .getEntity ();
35- PersistentDataContainer entityPDC = damagedEntity .getPersistentDataContainer ();
36-
3736 // Ignore Event Checks
3837 if (!isMob (damagedEntity )) {
3938 return ;
@@ -50,6 +49,7 @@ public void onMobDamage(EntityDamageEvent damageEvent) {
5049 if (isExemptedMob (damagedEntity )) {
5150 return ;
5251 }
52+ // Nerfable Damage Checks
5353 if (isNerfableNonPlayerDamage (damageEvent )) {
5454 return ;
5555 }
@@ -86,7 +86,7 @@ private boolean isProjectileDamage(EntityDamageEvent event){
8686 Entity entity = event .getEntity ();
8787 PersistentDataContainer mobPDC = entity .getPersistentDataContainer ();
8888 double hitDamage = event .getFinalDamage ();
89- if (!ConfigParser . isAllowProjectileDamage ( )){
89+ if (!configToggles . get ( ConfigParser . ConfigToggles . ALLOW_PROJECTILE_DAMAGE )){
9090 if (debugSetting ) {
9191 logger .info ("Arrow damage is not allowed" );
9292 }
@@ -127,76 +127,76 @@ private void addPDCDamage(PersistentDataContainer mobPDC, double damage) {
127127 mobPDC .set (disallowedDamage , PersistentDataType .DOUBLE , damageTotal );
128128 }
129129
130- private boolean isMob (Entity e ) {
130+ private boolean isMob (Entity entity ) {
131131
132132 if (debugSetting ) {
133- logger .info ("Performing isMob on " + e .getName ());
133+ logger .info ("Performing isMob on " + entity .getName ());
134134 }
135135
136- if (!(e instanceof Mob )) {
136+ if (!(entity instanceof Mob )) {
137137 if (debugSetting ) {
138- logger .info ("Ignoring onMobDamage because " + e .getName () + " is not a mob." );
138+ logger .info ("Ignoring onMobDamage because " + entity .getName () + " is not a mob." );
139139 }
140140 return false ;
141141 }
142142 return true ;
143143 }
144144
145- private boolean isNerfed (Entity e ) {
146- PersistentDataContainer mobPDC = e .getPersistentDataContainer ();
145+ private boolean isNerfed (Entity entity ) {
146+ PersistentDataContainer mobPDC = entity .getPersistentDataContainer ();
147147
148148 if (debugSetting ) {
149- logger .info ("Performing isNerfed on " + e .getName ());
149+ logger .info ("Performing isNerfed on " + entity .getName ());
150150 }
151151
152152 if (mobPDC .has (nerfMob )) {
153153 if (debugSetting ) {
154- logger .info (e .getName () + " is already nerfed, ignoring..." );
154+ logger .info (entity .getName () + " is already nerfed, ignoring..." );
155155 }
156156 return true ;
157157 }
158158 return false ;
159159 }
160160
161- private boolean isHostileNerf (Entity e ) {
161+ private boolean isHostileNerf (Entity entity ) {
162162
163163 if (debugSetting ) {
164- logger .info ("Performing isHostileNerf on " + e .getName ());
164+ logger .info ("Performing isHostileNerf on " + entity .getName ());
165165 }
166166
167- if (ConfigParser . isNerfHostilesOnly ( ) && !(e instanceof Monster )) {
167+ if (configToggles . get ( ConfigParser . ConfigToggles . ONLY_NERF_HOSTILES ) && !(entity instanceof Monster )) {
168168 if (debugSetting ) {
169- logger .info ("Ignoring onMobDamage because " + e .getName () + " is not a Monster and Nerf Hostiles Only is True." );
169+ logger .info ("Ignoring onMobDamage because " + entity .getName () + " is not a Monster and Nerf Hostiles Only is True." );
170170 }
171171 return true ;
172172 }
173173 return false ;
174174 }
175175
176- private boolean isExemptedSpawnReason (Entity e ) {
176+ private boolean isExemptedSpawnReason (Entity entity ) {
177177
178178 if (debugSetting ) {
179- logger .info ("Performing isExemptedSpawnReason on " + e .getName ());
179+ logger .info ("Performing isExemptedSpawnReason on " + entity .getName ());
180180 }
181181
182- if (ConfigParser .getSpawnReasonList ().contains (e .getEntitySpawnReason ())) {
182+ if (ConfigParser .getSpawnReasonList ().contains (entity .getEntitySpawnReason ())) {
183183 if (debugSetting ) {
184- logger .info ("Ignoring onMobDamage because " + e .getName () + " spawned from " + e .getEntitySpawnReason () + " which isn't nerfed." );
184+ logger .info ("Ignoring onMobDamage because " + entity .getName () + " spawned from " + entity .getEntitySpawnReason () + " which isn't nerfed." );
185185 }
186186 return true ;
187187 }
188188 return false ;
189189 }
190190
191- private boolean isExemptedMob (Entity e ) {
191+ private boolean isExemptedMob (Entity entity ) {
192192
193193 if (debugSetting ) {
194- logger .info ("Performing isExemptedMob on " + e .getName ());
194+ logger .info ("Performing isExemptedMob on " + entity .getName ());
195195 }
196196
197- if (ConfigParser .getBypassList ().contains (e .getType ())) {
197+ if (ConfigParser .getBypassList ().contains (entity .getType ())) {
198198 if (debugSetting ) {
199- logger .info ("Ignoring onMobDamage because " + e .getName () + " is on the bypass list as " + e .getType ());
199+ logger .info ("Ignoring onMobDamage because " + entity .getName () + " is on the bypass list as " + entity .getType ());
200200 }
201201 return true ;
202202 }
@@ -223,15 +223,15 @@ private boolean isNerfableEnvironmentally(EntityDamageEvent event) {
223223 return false ;
224224 }
225225
226- private void disallowedDamagePercent (PersistentDataContainer mobPDC , Entity e ) {
226+ private void disallowedDamagePercent (PersistentDataContainer mobPDC , Entity entity ) {
227227 int maxDisallowedDamage = ConfigParser .getMaxDisallowedDamage ();
228228 double nerfedDamage = mobPDC .getOrDefault (disallowedDamage , PersistentDataType .DOUBLE , 0.0 );
229- double maxHealth = Objects .requireNonNull (((Mob ) e ).getAttribute (Attribute .GENERIC_MAX_HEALTH )).getValue ();
229+ double maxHealth = Objects .requireNonNull (((Mob ) entity ).getAttribute (Attribute .GENERIC_MAX_HEALTH )).getValue ();
230230 int percentDamage = (int ) ((nerfedDamage / maxHealth ) * 100 );
231231
232232 if (percentDamage >= maxDisallowedDamage ) {
233233 if (debugSetting ) {
234- logger .info ("Nerfing " + e .getName () + " because they took " + percentDamage + "% total damage from nerfable causes" );
234+ logger .info ("Nerfing " + entity .getName () + " because they took " + percentDamage + "% total damage from nerfable causes" );
235235 }
236236 mobPDC .set (nerfMob , PersistentDataType .BYTE , t );
237237 }
@@ -252,20 +252,20 @@ private boolean isNerfableNonPlayerDamage(EntityDamageEvent event) {
252252 }
253253 if (damager instanceof AbstractSkeleton &&
254254 entity instanceof Creeper &&
255- ConfigParser . isSkeletonsDamageCreepers ( )) {
255+ configToggles . get ( ConfigParser . ConfigToggles . ALLOW_SKELETON_CREEPER_DAMAGE )) {
256256 if (debugSetting ) {
257257 logger .info ("Skipping nerf on " + entity .getName () + "because 'Skeletons can damage creepers' is 'true'" );
258258 }
259259 return true ;
260260 }
261261 if (damager instanceof Wither &&
262- ConfigParser . isWithersDamageEntities ( )) {
262+ configToggles . get ( ConfigParser . ConfigToggles . ALLOW_WITHER_DAMAGE )) {
263263 if (debugSetting ) {
264264 logger .info ("Skipping nerf on " + entity .getName () + "because 'Withers can damage entities' is 'true'" );
265265 }
266266 return true ;
267267 }
268- if (damager instanceof Projectile && ConfigParser . isAllowProjectileDamage ( )){
268+ if (damager instanceof Projectile && configToggles . get ( ConfigParser . ConfigToggles . ALLOW_PROJECTILE_DAMAGE )){
269269 return false ;
270270 }
271271
@@ -329,7 +329,7 @@ private boolean isNerfableInBlock(EntityDamageEvent event) {
329329 private boolean hasBlockedLineofSight (EntityDamageEvent event ) {
330330 if (!(event instanceof EntityDamageByEntityEvent )) return false ;
331331 if (!(event .getEntity () instanceof LivingEntity entity )) return false ;
332- if (!ConfigParser . isRequireLineOfSight ( )) return true ;
332+ if (!configToggles . get ( ConfigParser . ConfigToggles . REQUIRE_LINE_OF_SIGHT )) return true ;
333333
334334 Entity damager = ((EntityDamageByEntityEvent ) event ).getDamager ();
335335 PersistentDataContainer mobPDC = entity .getPersistentDataContainer ();
@@ -348,7 +348,7 @@ private boolean hasBlockedLineofSight(EntityDamageEvent event) {
348348 }
349349
350350 private boolean canMobMoveToward (EntityDamageEvent event ) {
351- if (!ConfigParser . isRequirePath ( )) return false ;
351+ if (!configToggles . get ( ConfigParser . ConfigToggles . REQUIRE_PATH )) return false ;
352352 if (!(event instanceof EntityDamageByEntityEvent )) return false ;
353353 if (!(event .getEntity () instanceof LivingEntity entity )) return false ;
354354 Entity damager = ((EntityDamageByEntityEvent ) event ).getDamager ();
0 commit comments