@@ -108,58 +108,53 @@ public void onSeaBounce(PlayerMoveEvent e) {
108108 @ EventHandler (priority = EventPriority .LOWEST , ignoreCancelled = true )
109109 public void onPlayerMove (PlayerMoveEvent e ) {
110110 Player player = e .getPlayer ();
111- // Fast checks
112- if ((addon .getSettings ().getAcidRainDamage () == 0 && addon .getSettings ().getAcidDamage () == 0 )
113- || player .isDead () || player .getGameMode ().equals (GameMode .CREATIVE )
111+ if (isExemptFromAcid (player )) {
112+ return ;
113+ }
114+ handleRainExposure (player );
115+ if (!burningPlayers .containsKey (player ) && !isSafeFromAcid (player )) {
116+ startAcidBurn (player );
117+ }
118+ }
119+
120+ private boolean isExemptFromAcid (Player player ) {
121+ return (addon .getSettings ().getAcidRainDamage () == 0 && addon .getSettings ().getAcidDamage () == 0 )
122+ || player .isDead ()
123+ || player .getGameMode ().equals (GameMode .CREATIVE )
114124 || player .getGameMode ().equals (GameMode .SPECTATOR )
115125 || addon .getPlayers ().isInTeleport (player .getUniqueId ())
116126 || !Util .sameWorld (addon .getOverWorld (), player .getWorld ())
117127 || (!player .isOp () && player .hasPermission ("acidisland.mod.noburn" ))
118- || (player .isOp () && !addon .getSettings ().isAcidDamageOp ())) {
128+ || (player .isOp () && !addon .getSettings ().isAcidDamageOp ());
129+ }
130+
131+ private void handleRainExposure (Player player ) {
132+ if (addon .getSettings ().getAcidRainDamage () <= 0D || !addon .getOverWorld ().hasStorm ()) {
119133 return ;
120134 }
121- // Slow checks
122- // Check for acid rain
123- if (addon .getSettings ().getAcidRainDamage () > 0D && addon .getOverWorld ().hasStorm ()) {
124- if (isSafeFromRain (player )) {
125- wetPlayers .remove (player );
126- } else if (!wetPlayers .containsKey (player )) {
127- // Start hurting them
128- // Add to the list
129- wetPlayers .put (player , System .currentTimeMillis () + addon .getSettings ().getAcidDamageDelay () * 1000 );
130- // This runnable continuously hurts the player even if
131- // they are not
132- // moving but are in acid rain.
133-
134- new BukkitRunnable () {
135- @ Override
136- public void run () {
137- // Check if it is still raining or player is safe or dead or there is no damage
138- if (checkForRain (player )) {
139- this .cancel ();
140- }
141-
135+ if (isSafeFromRain (player )) {
136+ wetPlayers .remove (player );
137+ } else if (!wetPlayers .containsKey (player )) {
138+ wetPlayers .put (player , System .currentTimeMillis () + addon .getSettings ().getAcidDamageDelay () * 1000 );
139+ new BukkitRunnable () {
140+ @ Override
141+ public void run () {
142+ if (checkForRain (player )) {
143+ this .cancel ();
142144 }
143- }.runTaskTimer (addon .getPlugin (), 0L , 20L );
144- }
145-
146- }
147- // If they are already burning in acid then return
148- if (burningPlayers .containsKey (player ) || isSafeFromAcid (player )) {
149- return ;
145+ }
146+ }.runTaskTimer (addon .getPlugin (), 0L , 20L );
150147 }
151- // ACID!
152- // Put the player into the acid list
148+ }
149+
150+ private void startAcidBurn (Player player ) {
153151 burningPlayers .put (player , System .currentTimeMillis () + addon .getSettings ().getAcidDamageDelay () * 1000 );
154- // This runnable continuously hurts the player even if they are not
155- // moving but are in acid.
156152 new BukkitRunnable () {
157153 @ Override
158154 public void run () {
159155 if (continuouslyHurtPlayer (player )) {
160156 this .cancel ();
161157 }
162-
163158 }
164159 }.runTaskTimer (addon .getPlugin (), 0L , 20L );
165160 }
0 commit comments