This commit is contained in:
gpatruno
2026-05-19 15:35:55 +02:00
commit 94404156d9
55 changed files with 4518 additions and 0 deletions
@@ -0,0 +1,96 @@
package com.spaceshipproject;
import org.bukkit.Material;
import org.bukkit.configuration.file.FileConfiguration;
/**
* Acces type-safe a la config (config.yml).
*/
public class ConfigManager {
private final SpaceShipProject plugin;
public ConfigManager(SpaceShipProject plugin) {
this.plugin = plugin;
}
public void reload() {
plugin.reloadConfig();
}
private FileConfiguration cfg() {
return plugin.getConfig();
}
public int maxShipsPerPlayer() { return cfg().getInt("max-ships-per-player", 5); }
public int defaultSizeX() { return cfg().getInt("default-size.x", 4); }
public int defaultSizeY() { return cfg().getInt("default-size.y", 4); }
public int defaultSizeZ() { return cfg().getInt("default-size.z", 6); }
public int maxSizeX() { return cfg().getInt("max-size.x", 16); }
public int maxSizeY() { return cfg().getInt("max-size.y", 8); }
public int maxSizeZ() { return cfg().getInt("max-size.z", 16); }
public double costSummon() { return cfg().getDouble("costs.summon", 100); }
public double costUnload() { return cfg().getDouble("costs.unload", 0); }
public double costUpgradeBase() { return cfg().getDouble("costs.upgrade-base", 1000); }
public double costSpaceJumpPerBlock(){ return cfg().getDouble("costs.space-jump-per-block", 1); }
public int spaceJumpBlocksPerLevel() { return cfg().getInt("space-jump.blocks-per-level", 100); }
public int spaceJumpMin() { return cfg().getInt("space-jump.min-blocks", 1); }
public int spaceJumpHardCap() { return cfg().getInt("space-jump.max-blocks-hard-cap", 5000); }
public int summonOffsetY() { return cfg().getInt("summon-offset-y", 30); }
public Material defaultPlatformMaterial() { return parseMat("default-platform-material", Material.SMOOTH_QUARTZ); }
public Material defaultEdgeMaterial() { return parseMat("default-edge-material", Material.QUARTZ_PILLAR); }
public Material defaultGlassMaterial() { return parseMat("default-glass-material", Material.WHITE_STAINED_GLASS); }
public String defaultShipName() { return cfg().getString("default-ship-name", "Spaceship #%n%"); }
public boolean checkCollision() { return cfg().getBoolean("safety.check-collision", true); }
public int minYAbovePlayer() { return cfg().getInt("safety.min-y-above-player", 10); }
private Material parseMat(String key, Material def) {
String s = cfg().getString(key);
if (s == null) return def;
Material m = Material.matchMaterial(s);
return m != null ? m : def;
}
/* ============ MESSAGES ============ */
public String prefix() { return color(cfg().getString("messages.prefix", "&8[&bSpaceShip&8] &7")); }
public String msgNoPerm() { return prefix() + color(cfg().getString("messages.no-permission", "&cNo perm")); }
public String msgNotOwner() { return prefix() + color(cfg().getString("messages.not-owner", "&cNot owner")); }
public String msgGiven(String n) { return prefix() + color(cfg().getString("messages.ship-given", "&aGiven")).replace("%name%", n); }
public String msgSummoned(String n) { return prefix() + color(cfg().getString("messages.ship-summoned", "&aSummoned")).replace("%name%", n); }
public String msgUnloaded(String n) { return prefix() + color(cfg().getString("messages.ship-unloaded", "&aUnloaded")).replace("%name%", n); }
public String msgTpUp(String n) { return prefix() + color(cfg().getString("messages.ship-teleport-up", "&aTP up")).replace("%name%", n); }
public String msgTpDown() { return prefix() + color(cfg().getString("messages.ship-teleport-down", "&aTP down")); }
public String msgAlreadyLoaded() { return prefix() + color(cfg().getString("messages.ship-already-loaded", "&eAlready loaded")); }
public String msgNotLoaded() { return prefix() + color(cfg().getString("messages.ship-not-loaded", "&eNot loaded")); }
public String msgCollision() { return prefix() + color(cfg().getString("messages.ship-collision", "&cCollision")); }
public String msgMaxShips(int max) { return prefix() + color(cfg().getString("messages.max-ships-reached", "&cMax")).replace("%max%", String.valueOf(max)); }
public String msgDeleted() { return prefix() + color(cfg().getString("messages.ship-deleted", "&cDeleted")); }
public String msgNotEnoughMoney(String need, String have) {
return prefix() + color(cfg().getString("messages.not-enough-money", "&cFonds insuffisants : %need%/%have%"))
.replace("%need%", need).replace("%have%", have);
}
public String msgVaultUnavailable() { return prefix() + color(cfg().getString("messages.vault-unavailable", "&cVault indisponible")); }
public String msgSpaceJumpSuccess(int dist, String dir, String cost) {
return prefix() + color(cfg().getString("messages.space-jump-success", "&aJump %dist% %dir% (-%cost%)"))
.replace("%dist%", String.valueOf(dist)).replace("%dir%", dir).replace("%cost%", cost);
}
public String msgSpaceJumpNotOnShip() { return prefix() + color(cfg().getString("messages.space-jump-not-on-ship", "&cPas sur le ship")); }
public String msgSpaceJumpTooFar(int max, int lvl) {
return prefix() + color(cfg().getString("messages.space-jump-too-far", "&cTrop loin (max %max% lvl %lvl%)"))
.replace("%max%", String.valueOf(max)).replace("%lvl%", String.valueOf(lvl));
}
public static String color(String s) {
if (s == null) return "";
return s.replace('&', '\u00a7');
}
}