Untitled
unknown
java
2 years ago
6.0 kB
10
Indexable
public class PlayerData {
private static HashMap<UUID, PlayerData> cachedPlayerData = new HashMap<>();
private boolean hasPickedUp;
private boolean hasArmorStand;
private Material currentPickedUp;
private ArmorStand followingArmorStand;
private Player player;
/**
* @param player The Player to base the Profile on
* @param currentPickedUp The Material, that the player currently picked up
* @return The Player Data Object
*/
public PlayerData(Player player, Material currentPickedUp) {
hasPickedUp = false;
hasArmorStand = false;
this.player = player;
this.currentPickedUp = currentPickedUp;
cachedPlayerData.put(player.getUniqueId(), this);
}
/**
* @param uuid The Player UUID to base the Profile on
* @param currentPickedUp The Material, that the player currently picked up
* @return The Player Data Object
*/
public PlayerData(UUID uuid, Material currentPickedUp) {
hasPickedUp = false;
hasArmorStand = false;
this.player = Bukkit.getPlayer(uuid);
this.currentPickedUp = currentPickedUp;
cachedPlayerData.put(player.getUniqueId(), this);
}
/**
* @param uuid The UUID to the Profile to check for
* @return Returns if the Profile Exists
*/
public static boolean exists(UUID uuid) {
return cachedPlayerData.containsKey(uuid);
}
/**
* @param player The player to the Profile to check for
* @return Returns if the Profile Exists
*/
public static boolean exist(Player player) {
return cachedPlayerData.containsKey(player.getUniqueId());
}
/**
* @param uuid The UUID to the Profile to get
* @return If the Profile exists, will return it
*/
public static PlayerData getPlayerData(UUID uuid) {
return cachedPlayerData.get(uuid);
}
/**
* @param player The UUID to the Profile to get
* @return If the Profile exists, will return it
*/
public static PlayerData getPlayerData(Player player) {
return cachedPlayerData.get(player.getUniqueId());
}
/**
* @return Returns the raw list of cached PlayerData
*/
public static HashMap<UUID, PlayerData> getSavedPlayerData() {
return cachedPlayerData;
}
/**
* @param hasPickedUp The new Value of hasPickedUP
*/
public void setHasPickedUp(boolean hasPickedUp) {
this.hasPickedUp = hasPickedUp;
}
/**
* @param hasArmorStand The new Value of hasArmorStand
*/
public void setHasFollowingArmorStand(boolean hasArmorStand) {
this.hasArmorStand = hasArmorStand;
}
/**
* @return If the player has a following Armorstand
*/
public boolean hasFollowingArmorStand() {
return hasArmorStand;
}
/**
* @return Returns the armorstand that is following the player of this Profile
*/
public ArmorStand getFollowingArmorStand() {
return followingArmorStand;
}
/**
* @param armorStand Sets the given armorstand to follow the Player
*/
public void setFollowingArmorStand(ArmorStand armorStand) {
hasArmorStand = true;
followingArmorStand = armorStand;
}
/**
* @return Returns the material that the Player has picked up
*/
public Material getPickedUp() {
return currentPickedUp;
}
/**
* @return Returns the Player from the Profile
*/
public Player getPlayer() {
return player;
}
/**
* Removes the Armorstand and removes the Slowness from the player
* @return the PlayerData that was modified
*/
public PlayerData removeArmorStand() {
followingArmorStand.remove();
player.removePotionEffect(PotionEffectType.SLOW);
hasArmorStand = false;
currentPickedUp = Material.AIR;
return this;
}
/**
* Creates an Armorstand to follow the Player, binds it to Player Profile
* @return the PlayerData that was modified
*/
public PlayerData createFollowingArmorStand() {
followingArmorStand = CarryUtils.summonArmorStand(player.getLocation(), currentPickedUp);
hasArmorStand = true;
return this;
}
/**
* Handles the placement of a block that was picked up;
* @return the PlayerData that was modified
*/
public PlayerData handlePlacement(Block block){
Block block1 = block.getLocation().add(0, 1, 0).getBlock();
if (block1.getType() == Material.AIR) {
block1.setType(getPickedUp());
getPlayer().sendMessage(ChatColor.RED + "Set block one above");
return this;
}
Block block2 = block.getLocation().add(1, 0, 0).getBlock();
if (block2.getType() == Material.AIR) {
block2.setType(getPickedUp());
getPlayer().sendMessage(ChatColor.RED + "Set block x 1");
return this;
}
Block block3 = block.getLocation().add(0, 0, 1).getBlock();
if (block3.getType() == Material.AIR) {
block3.setType(getPickedUp());
getPlayer().sendMessage(ChatColor.RED + "Set block z 1");
return this;
}
getPlayer().sendMessage(ChatColor.RED + "Couldn't Place the " + getPickedUp().name() + " you were holding!");
return this;
}
/**
* Handles the pickup of a block, binds it to player profile
* @return the PlayerData that was modified
*/
public PlayerData handlePickup(Block block){
if (hasFollowingArmorStand()) {
removeBlock(block);
return this;
}
createFollowingArmorStand();
removeBlock(block);
return this;
}
}Editor is loading...