VillagerSummoning/Placing & automatic config updating
This commit is contained in:
51
src/main/java/eu/mhsl/craftattack/spawn/util/ConfigUtil.java
Normal file
51
src/main/java/eu/mhsl/craftattack/spawn/util/ConfigUtil.java
Normal file
@@ -0,0 +1,51 @@
|
||||
package eu.mhsl.craftattack.spawn.util;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
public class ConfigUtil {
|
||||
private static ConfigUtil instance;
|
||||
private final File file;
|
||||
private final FileConfiguration config;
|
||||
public static ConfigUtil getConfigUtil() {
|
||||
if (instance != null) return instance;
|
||||
instance = new ConfigUtil("config.yml");
|
||||
return instance;
|
||||
}
|
||||
private ConfigUtil(String path) {
|
||||
this.file = new File(Objects.requireNonNull(Bukkit.getPluginManager().getPlugin("spawn")).getDataFolder().getAbsolutePath() + "/" + path);
|
||||
this.config = YamlConfiguration.loadConfiguration(this.file);
|
||||
}
|
||||
public boolean save() {
|
||||
try {
|
||||
this.config.save(this.file);
|
||||
return true;
|
||||
}catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
public FileConfiguration getConfig() {
|
||||
return this.config;
|
||||
}
|
||||
public Location getVillagerLocation() {
|
||||
List<Double> cordsList = this.config.getDoubleList("villagerLocation");
|
||||
World world = Bukkit.getWorld("world");
|
||||
double x = cordsList.get(0);
|
||||
double y = cordsList.get(1);
|
||||
double z = cordsList.get(2);
|
||||
double yaw = cordsList.get(3);
|
||||
double pitch = cordsList.get(4);
|
||||
Location location = new Location(world, x, y, z);
|
||||
location.setYaw((float) yaw);
|
||||
location.setPitch((float) pitch);
|
||||
|
||||
return location;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package eu.mhsl.craftattack.spawn.util;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Villager;
|
||||
|
||||
public class VillagerSpawner {
|
||||
private static Villager staticVillager;
|
||||
public static void spawnVillager() {
|
||||
ConfigUtil config = ConfigUtil.getConfigUtil();
|
||||
Location location = config.getVillagerLocation();
|
||||
|
||||
assert EntityType.VILLAGER.getEntityClass() != null;
|
||||
Entity entity = location.getWorld().spawn(location, EntityType.VILLAGER.getEntityClass());
|
||||
|
||||
Villager villager = (Villager) entity;
|
||||
villager.setAI(false);
|
||||
villager.setInvulnerable(true);
|
||||
villager.setSilent(true);
|
||||
villager.setCollidable(false);
|
||||
villager.setRemoveWhenFarAway(false);
|
||||
villager.setProfession(Villager.Profession.LIBRARIAN);
|
||||
|
||||
staticVillager = villager;
|
||||
}
|
||||
public static void killVillager() {
|
||||
staticVillager.remove();
|
||||
}
|
||||
|
||||
public static Villager getStaticVillager() {
|
||||
return staticVillager;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user