VillagerSummoning/Placing & automatic config updating

This commit is contained in:
2023-05-21 15:59:33 +02:00
parent 4bc7bac6ba
commit fdc98d0c76
8 changed files with 174 additions and 5 deletions

View 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;
}
}

View File

@@ -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;
}
}