136 lines
3.7 KiB
Java
136 lines
3.7 KiB
Java
/*
|
|
* Copyright (C) 2014-2023 Daniel Saukel
|
|
*
|
|
* This library is free software: you can redistribute it and/or modify it under the
|
|
* terms of the GNU Lesser General Public License as published by the Free Software
|
|
* Foundation, either version 3 of the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
* PARTICULAR PURPOSE. See the GNULesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public License along with
|
|
* this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
package de.erethon.dungeonsxl.api.player;
|
|
|
|
import de.erethon.caliburn.CaliburnAPI;
|
|
import java.io.File;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import org.bukkit.configuration.file.FileConfiguration;
|
|
import org.bukkit.configuration.file.YamlConfiguration;
|
|
import org.bukkit.inventory.ItemStack;
|
|
|
|
/**
|
|
* Represents a class and a class script.
|
|
*
|
|
* @author Daniel Saukel
|
|
*/
|
|
public class PlayerClass {
|
|
|
|
private String name;
|
|
|
|
private List<ItemStack> items = new ArrayList<>();
|
|
private boolean dog;
|
|
|
|
/**
|
|
* Creates a PlayerClass from a class YAML file. The name is taken from the file name.
|
|
*
|
|
* @param caliburn the CaliburnAPI instance
|
|
* @param file the class config file
|
|
*/
|
|
public PlayerClass(CaliburnAPI caliburn, File file) {
|
|
this(caliburn, file.getName().substring(0, file.getName().length() - 4), YamlConfiguration.loadConfiguration(file));
|
|
}
|
|
|
|
/**
|
|
* Creates a PlayerClass from the given class config.
|
|
*
|
|
* @param caliburn the CaliburnAPI instance
|
|
* @param name the class name
|
|
* @param config the config
|
|
*/
|
|
public PlayerClass(CaliburnAPI caliburn, String name, FileConfiguration config) {
|
|
this.name = name;
|
|
|
|
if (config.contains("items")) {
|
|
items = caliburn.deserializeStackList(config, "items");
|
|
}
|
|
|
|
if (config.contains("dog")) {
|
|
dog = config.getBoolean("dog");
|
|
}
|
|
}
|
|
|
|
public PlayerClass(String name, List<ItemStack> items, boolean dog) {
|
|
this.items = items;
|
|
this.name = name;
|
|
this.dog = dog;
|
|
}
|
|
|
|
/**
|
|
* Returns the name of the class.
|
|
*
|
|
* @return the name of the class
|
|
*/
|
|
public String getName() {
|
|
return name;
|
|
}
|
|
|
|
/**
|
|
* Returns the list of the items this class gives to a player.
|
|
*
|
|
* @return the list of the the items this class gives to a player
|
|
*/
|
|
public List<ItemStack> getItems() {
|
|
return items;
|
|
}
|
|
|
|
/**
|
|
* Adds the given item to this class.
|
|
*
|
|
* @param itemStack the ItemStack to add
|
|
*/
|
|
public void addItem(ItemStack itemStack) {
|
|
items.add(itemStack);
|
|
}
|
|
|
|
/**
|
|
* Removes the given item from this class.
|
|
*
|
|
* @param itemStack the ItemStack to remove
|
|
*/
|
|
public void removeItem(ItemStack itemStack) {
|
|
items.remove(itemStack);
|
|
}
|
|
|
|
/**
|
|
* Returns if the class gives the player a dog.
|
|
*
|
|
* @return if the class has a dog
|
|
* @deprecated More dynamic pet features might make this obsolete in the future.
|
|
*/
|
|
@Deprecated
|
|
public boolean hasDog() {
|
|
return dog;
|
|
}
|
|
|
|
/**
|
|
* Sets if the class gives the player a dog.
|
|
*
|
|
* @param dog if the class shall give the player a dog
|
|
* @deprecated More dynamic pet features might make this obsolete in the future.
|
|
*/
|
|
@Deprecated
|
|
public void setDog(boolean dog) {
|
|
this.dog = dog;
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return getClass().getSimpleName() + "{name=" + name + "}";
|
|
}
|
|
|
|
}
|