Last active
December 23, 2015 23:09
-
-
Save PaulBGD/6708279 to your computer and use it in GitHub Desktop.
PlayerManager Resource 1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package me.ultimate.Arena; | |
import java.util.ArrayList; | |
import java.util.List; | |
import org.bukkit.Bukkit; | |
import org.bukkit.Material; | |
import org.bukkit.entity.Player; | |
import org.bukkit.inventory.ItemStack; | |
public class PlayerManager { | |
private Arena arena; // This is used to get data from the arena object | |
private List<PlayerData> players = new ArrayList<PlayerData>(); | |
public PlayerManager(Arena arena) { | |
this.arena = arena; | |
} | |
// We can use this to add players to the arena | |
public void addPlayer(Player p) { | |
// Setup the player with his data, and add it to the list | |
players.add(new PlayerData(p)); | |
// Now, teleport him to where he needs to go (I remove fall distance so | |
// he doesn't die on teleport | |
p.setFallDistance(0); | |
p.teleport(arena.getSpawn()); | |
// Let's say I want to give him a diamond sword when he spawns. This is | |
// where that would go. | |
p.getInventory().addItem(new ItemStack(Material.DIAMOND_SWORD, 1)); | |
} | |
// The player has to leave the arena eventually, so we have to have this | |
// method. | |
public void removePlayer(Player p) { | |
// We'll loop through the data to find the player | |
for (PlayerData data : players) { | |
if (data.name.equalsIgnoreCase(p.getName())) { | |
// Match! We got his data. | |
data.reset(); | |
// Again, we'll remove his fall distance and teleport him | |
p.setFallDistance(0); | |
p.teleport(arena.getStop()); | |
} | |
} | |
// Well, we didn't find him. We just won't do anything | |
} | |
// Let's say you have a command, and you want to check if the player is in | |
// two arenas. All you have to do is check it here | |
public boolean playerPlaying(Player p) { | |
for (PlayerData data : players) { | |
if (data.name.equalsIgnoreCase(p.getName())) { | |
// Match! We found him in this arena | |
return true; | |
} | |
} | |
//Nope, no match. Return false | |
return false; | |
} | |
private class PlayerData { | |
// Holds the player's items | |
private ItemStack[] inventory; | |
private ItemStack[] armor; | |
// This is used to get the player object later | |
String name; | |
// This gets all of the items from the player's inventory, then clears | |
// it | |
public PlayerData(Player p) { | |
name = p.getName(); | |
inventory = p.getInventory().getContents(); | |
armor = p.getInventory().getArmorContents(); | |
p.getInventory().clear(); | |
p.getInventory().setArmorContents(null); | |
} | |
// This resets all of the player's things | |
public void reset() { | |
Player p = Bukkit.getPlayerExact(name); | |
p.getInventory().clear(); | |
p.getInventory().setContents(inventory); | |
p.getInventory().setArmorContents(armor); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment