From 6b4e3604cc70bf5d0bb7e33922a5cdca5938ddf9 Mon Sep 17 00:00:00 2001 From: nice6599 Date: Sun, 31 May 2020 23:04:47 -0400 Subject: [PATCH 1/2] add all the things from dev --- .../hackcraft/parkour/ParkourPlugin.java | 18 +++++-- .../hackcraft/parkour/objects/PlayerData.java | 44 ++++++++++++++++ .../hackcraft/parkour/utils/DataManager.java | 52 +++++++++++++++++++ .../hackcraft/parkour/utils/PlayerUtil.java | 30 +++++++++++ 4 files changed, 140 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/hackclub/hackcraft/parkour/objects/PlayerData.java create mode 100644 src/main/java/com/hackclub/hackcraft/parkour/utils/DataManager.java create mode 100644 src/main/java/com/hackclub/hackcraft/parkour/utils/PlayerUtil.java diff --git a/src/main/java/com/hackclub/hackcraft/parkour/ParkourPlugin.java b/src/main/java/com/hackclub/hackcraft/parkour/ParkourPlugin.java index 27cf2be..b851603 100644 --- a/src/main/java/com/hackclub/hackcraft/parkour/ParkourPlugin.java +++ b/src/main/java/com/hackclub/hackcraft/parkour/ParkourPlugin.java @@ -5,15 +5,16 @@ import com.hackclub.hackcraft.parkour.listeners.ComputerMapListener; import com.hackclub.hackcraft.parkour.listeners.PlayerMoveListener; import com.hackclub.hackcraft.parkour.objects.ParkourMap; +import com.hackclub.hackcraft.parkour.utils.DataManager; import com.hackclub.hackcraft.parkour.utils.ParkourUtil; import org.bukkit.Bukkit; import org.bukkit.configuration.serialization.ConfigurationSerialization; import org.bukkit.plugin.java.JavaPlugin; -import org.bukkit.scheduler.BukkitRunnable; public class ParkourPlugin extends JavaPlugin { public ParkourUtil parkourUtil; + private DataManager dataManager; @Override public void onEnable() { @@ -23,8 +24,10 @@ public void onEnable() { ConfigurationSerialization.registerClass(ParkourMap.class); // initialize custom objects - parkourUtil = new ParkourUtil(this); + this.parkourUtil = new ParkourUtil(this); parkourUtil.loadParkourMaps(); + this.dataManager = new DataManager(this); + // register commands this.getCommand("pkadmin").setExecutor(new ParkourAdminCommand(this)); @@ -33,18 +36,25 @@ public void onEnable() { getServer().getPluginManager().registerEvents(new PlayerMoveListener(this), this); getServer().getPluginManager().registerEvents(new CheckpointListener(this), this); - - Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable() { @Override public void run() { parkourUtil.spawnCheckpointParticles(); } }, 1L, 20L); + + this.getDataManager().registerAll(); + } @Override public void onDisable() { getLogger().info("Parkour deactivated!"); + this.getDataManager().unregisterAll(); + } + + public DataManager getDataManager() { + return dataManager; + } } diff --git a/src/main/java/com/hackclub/hackcraft/parkour/objects/PlayerData.java b/src/main/java/com/hackclub/hackcraft/parkour/objects/PlayerData.java new file mode 100644 index 0000000..28efec8 --- /dev/null +++ b/src/main/java/com/hackclub/hackcraft/parkour/objects/PlayerData.java @@ -0,0 +1,44 @@ +package com.hackclub.hackcraft.parkour.objects; + +import com.hackclub.hackcraft.parkour.ParkourPlugin; +import org.bukkit.entity.Player; + +public class PlayerData { + private final ParkourPlugin plugin; + private final Player player; + + + // Session data (will be cleared when player quits) + private ParkourRun currentRun = null; + private ParkourMap currentMap = null; + + public PlayerData(ParkourPlugin plugin, Player player) { + this.plugin = plugin; + this.player = player; + + } + + public Player getPlayer() { + return player; + } + + public ParkourRun getCurrentRun() { + return currentRun; + } + + public void setCurrentRun(ParkourRun currentRun) { + this.currentRun = currentRun; + } + + public ParkourMap getCurrentMap() { + return currentMap; + } + + public void setCurrentMap(ParkourMap currentMap) { + this.currentMap = currentMap; + } + + + +} + diff --git a/src/main/java/com/hackclub/hackcraft/parkour/utils/DataManager.java b/src/main/java/com/hackclub/hackcraft/parkour/utils/DataManager.java new file mode 100644 index 0000000..31f3f3e --- /dev/null +++ b/src/main/java/com/hackclub/hackcraft/parkour/utils/DataManager.java @@ -0,0 +1,52 @@ +package com.hackclub.hackcraft.parkour.utils; + +import java.io.File; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; +import com.hackclub.hackcraft.parkour.ParkourPlugin; +import com.hackclub.hackcraft.parkour.objects.PlayerData; +import org.bukkit.entity.Player; + +public class DataManager { + private final ParkourPlugin plugin; + private final String dataFolder; + private final Map players = new HashMap<>(); + + public DataManager(ParkourPlugin plugin) { + this.plugin = plugin; + this.dataFolder = plugin.getDataFolder() + File.separator + "players"; + + File folder = new File(this.dataFolder); + folder.mkdirs(); + } + + public String getDataFolder() { + return this.dataFolder; + } + + public PlayerData getData(Player player) { + return this.players.get(player.getUniqueId()); + } + + public void registerPlayer(Player player) { + this.players.put(player.getUniqueId(), new PlayerData(this.plugin, player)); + } + + public void registerAll() { + for (Player player : this.plugin.getServer().getOnlinePlayers()) { + this.registerPlayer(player); + } + } + + public void unregisterPlayer(Player player) { + + this.players.remove(player.getUniqueId()); + } + + public void unregisterAll() { + for (Player player : this.plugin.getServer().getOnlinePlayers()) { + this.unregisterPlayer(player); + } + } +} diff --git a/src/main/java/com/hackclub/hackcraft/parkour/utils/PlayerUtil.java b/src/main/java/com/hackclub/hackcraft/parkour/utils/PlayerUtil.java new file mode 100644 index 0000000..5e38b4b --- /dev/null +++ b/src/main/java/com/hackclub/hackcraft/parkour/utils/PlayerUtil.java @@ -0,0 +1,30 @@ +package com.hackclub.hackcraft.parkour.utils; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; +import com.hackclub.hackcraft.parkour.ParkourPlugin; +import com.hackclub.hackcraft.parkour.objects.ParkourMap; +import com.hackclub.hackcraft.parkour.objects.PlayerData; +import org.bukkit.entity.Player; + +public class PlayerUtil { + + private ParkourPlugin plugin; + private final Map players = new HashMap<>(); + + + // teleports player to the start of a parkour map + public void teleportParkour(Player player, ParkourMap map) { + player.teleport(map.getSpawn()); + plugin.getDataManager().getData(player).setCurrentMap(map); + } + + // probably should be teleport lobby or something idk + public void teleportSpawn(Player player) { + player.teleport(plugin.getServer().getWorld("world").getSpawnLocation()); + plugin.getDataManager().getData(player).setCurrentMap(null); + // TODO: create a parkour world class or some way to store this data flexibly + } + +} From 681ba9c868a813b02e5e3323000d47355ae9ccf3 Mon Sep 17 00:00:00 2001 From: nice6599 Date: Sun, 31 May 2020 23:09:32 -0400 Subject: [PATCH 2/2] add data elements to checkpoint listener --- .../hackcraft/parkour/listeners/CheckpointListener.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/hackclub/hackcraft/parkour/listeners/CheckpointListener.java b/src/main/java/com/hackclub/hackcraft/parkour/listeners/CheckpointListener.java index f5cf01f..7d8a87d 100644 --- a/src/main/java/com/hackclub/hackcraft/parkour/listeners/CheckpointListener.java +++ b/src/main/java/com/hackclub/hackcraft/parkour/listeners/CheckpointListener.java @@ -16,6 +16,9 @@ public CheckpointListener(ParkourPlugin pl) { @EventHandler public void onCheckpoint(CheckpointEvent e) { - e.getPlayer().playSound(e.getPlayer().getLocation(), Sound.BLOCK_NOTE_BLOCK_CHIME, 1.0F, 8.0F); + e.getPlayer().playSound(e.getPlayer().getLocation(), Sound.BLOCK_NOTE_BLOCK_CHIME, 1.0F, + 8.0F); + pl.getDataManager().getData(e.getPlayer()).getCurrentRun() + .setLastCheckpoint(e.getCheckpointIndex()); } }