mirror of
				https://github.com/SunNetservers/MiniGames.git
				synced 2025-10-31 09:43:46 +01:00 
			
		
		
		
	Fixes a bug where newly created dropper arenas had a null reference to the handler
This commit is contained in:
		| @@ -1,6 +1,5 @@ | ||||
| package net.knarcraft.dropper.arena; | ||||
|  | ||||
| import net.knarcraft.dropper.Dropper; | ||||
| import net.knarcraft.dropper.property.ArenaGameMode; | ||||
| import net.knarcraft.dropper.util.StringSanitizer; | ||||
| import org.bukkit.Location; | ||||
| @@ -61,7 +60,7 @@ public class DropperArena { | ||||
|      */ | ||||
|     private final DropperArenaData dropperArenaData; | ||||
|  | ||||
|     private static DropperArenaHandler dropperArenaHandler = null; | ||||
|     private final DropperArenaHandler dropperArenaHandler; | ||||
|  | ||||
|     /** | ||||
|      * Instantiates a new dropper arena | ||||
| @@ -74,10 +73,12 @@ public class DropperArena { | ||||
|      * @param playerHorizontalVelocity <p>The velocity to use for players' horizontal velocity (-1 to 1)</p> | ||||
|      * @param winBlockType             <p>The material of the block players have to hit to win this dropper arena</p> | ||||
|      * @param dropperArenaData         <p>The arena data keeping track of which players have done what in this arena</p> | ||||
|      * @param arenaHandler             <p>The arena handler used for saving any changes</p> | ||||
|      */ | ||||
|     public DropperArena(@NotNull UUID arenaId, @NotNull String arenaName, @NotNull Location spawnLocation, | ||||
|                         @Nullable Location exitLocation, double playerVerticalVelocity, float playerHorizontalVelocity, | ||||
|                         @NotNull Material winBlockType, @NotNull DropperArenaData dropperArenaData) { | ||||
|                         @NotNull Material winBlockType, @NotNull DropperArenaData dropperArenaData, | ||||
|                         @NotNull DropperArenaHandler arenaHandler) { | ||||
|         this.arenaId = arenaId; | ||||
|         this.arenaName = arenaName; | ||||
|         this.spawnLocation = spawnLocation; | ||||
| @@ -86,10 +87,7 @@ public class DropperArena { | ||||
|         this.playerHorizontalVelocity = playerHorizontalVelocity; | ||||
|         this.winBlockType = winBlockType; | ||||
|         this.dropperArenaData = dropperArenaData; | ||||
|  | ||||
|         if (dropperArenaHandler == null) { | ||||
|             dropperArenaHandler = Dropper.getInstance().getArenaHandler(); | ||||
|         } | ||||
|         this.dropperArenaHandler = arenaHandler; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -100,8 +98,10 @@ public class DropperArena { | ||||
|      * | ||||
|      * @param arenaName     <p>The name of the arena</p> | ||||
|      * @param spawnLocation <p>The location players spawn in when entering the arena</p> | ||||
|      * @param arenaHandler  <p>The arena handler used for saving any changes</p> | ||||
|      */ | ||||
|     public DropperArena(@NotNull String arenaName, @NotNull Location spawnLocation) { | ||||
|     public DropperArena(@NotNull String arenaName, @NotNull Location spawnLocation, | ||||
|                         @NotNull DropperArenaHandler arenaHandler) { | ||||
|         this.arenaId = UUID.randomUUID(); | ||||
|         this.arenaName = arenaName; | ||||
|         this.spawnLocation = spawnLocation; | ||||
| @@ -116,6 +116,7 @@ public class DropperArena { | ||||
|  | ||||
|         this.dropperArenaData = new DropperArenaData(this.arenaId, recordRegistries, new HashMap<>()); | ||||
|         this.winBlockType = Material.WATER; | ||||
|         this.dropperArenaHandler = arenaHandler; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|   | ||||
| @@ -2,6 +2,7 @@ package net.knarcraft.dropper.command; | ||||
|  | ||||
| import net.knarcraft.dropper.Dropper; | ||||
| import net.knarcraft.dropper.arena.DropperArena; | ||||
| import net.knarcraft.dropper.arena.DropperArenaHandler; | ||||
| import net.knarcraft.dropper.util.StringSanitizer; | ||||
| import org.bukkit.command.Command; | ||||
| import org.bukkit.command.CommandExecutor; | ||||
| @@ -35,14 +36,16 @@ public class CreateArenaCommand implements CommandExecutor { | ||||
|             return false; | ||||
|         } | ||||
|  | ||||
|         DropperArena existingArena = Dropper.getInstance().getArenaHandler().getArena(arenaName); | ||||
|         DropperArenaHandler arenaHandler = Dropper.getInstance().getArenaHandler(); | ||||
|  | ||||
|         DropperArena existingArena = arenaHandler.getArena(arenaName); | ||||
|         if (existingArena != null) { | ||||
|             commandSender.sendMessage("There already exists a dropper arena with that name!"); | ||||
|             return false; | ||||
|         } | ||||
|  | ||||
|         DropperArena arena = new DropperArena(arenaName, player.getLocation()); | ||||
|         Dropper.getInstance().getArenaHandler().addArena(arena); | ||||
|         DropperArena arena = new DropperArena(arenaName, player.getLocation(), arenaHandler); | ||||
|         arenaHandler.addArena(arena); | ||||
|         commandSender.sendMessage("The arena was successfully created!"); | ||||
|         return true; | ||||
|     } | ||||
|   | ||||
| @@ -24,6 +24,7 @@ import java.util.Map; | ||||
| import java.util.Set; | ||||
| import java.util.UUID; | ||||
| import java.util.logging.Level; | ||||
| import java.util.logging.Logger; | ||||
|  | ||||
| /** | ||||
|  * A helper class for saving and loading arenas | ||||
| @@ -152,9 +153,10 @@ public final class ArenaStorageHelper { | ||||
|                 ArenaStorageKey.PLAYER_HORIZONTAL_VELOCITY.getKey())); | ||||
|         SerializableMaterial winBlockType = (SerializableMaterial) configurationSection.get( | ||||
|                 ArenaStorageKey.WIN_BLOCK_TYPE.getKey()); | ||||
|         Logger logger = Dropper.getInstance().getLogger(); | ||||
|  | ||||
|         if (arenaName == null || spawnLocation == null) { | ||||
|             Dropper.getInstance().getLogger().log(Level.SEVERE, "Could not load the arena at configuration " + | ||||
|             logger.log(Level.SEVERE, "Could not load the arena at configuration " + | ||||
|                     "section " + configurationSection.getName() + ". Please check the arenas storage file for issues."); | ||||
|             return null; | ||||
|         } | ||||
| @@ -164,7 +166,7 @@ public final class ArenaStorageHelper { | ||||
|  | ||||
|         DropperArenaData arenaData = loadArenaData(arenaId); | ||||
|         if (arenaData == null) { | ||||
|             Dropper.getInstance().getLogger().log(Level.SEVERE, "Unable to load arena data for " + arenaId); | ||||
|             logger.log(Level.SEVERE, "Unable to load arena data for " + arenaId); | ||||
|  | ||||
|             Map<ArenaGameMode, DropperArenaRecordsRegistry> recordRegistries = new HashMap<>(); | ||||
|             for (ArenaGameMode arenaGameMode : ArenaGameMode.values()) { | ||||
| @@ -174,7 +176,7 @@ public final class ArenaStorageHelper { | ||||
|         } | ||||
|  | ||||
|         return new DropperArena(arenaId, arenaName, spawnLocation, exitLocation, verticalVelocity, horizontalVelocity, | ||||
|                 winBlockType.material(), arenaData); | ||||
|                 winBlockType.material(), arenaData, Dropper.getInstance().getArenaHandler()); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	