mirror of
https://github.com/Maxlego08/zKoth.git
synced 2024-11-22 11:55:12 +01:00
🚧 add scoreboard configuration
This commit is contained in:
parent
f260e51552
commit
b081162d42
38
pom.xml
38
pom.xml
@ -91,6 +91,14 @@
|
||||
<id>papermc</id>
|
||||
<url>https://repo.papermc.io/repository/maven-public/</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>krypton</id>
|
||||
<url>https://repo.kryptonmc.org/releases</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>william278.net</id>
|
||||
<url>https://repo.william278.net/releases</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
@ -127,5 +135,35 @@
|
||||
<artifactId>fastboard</artifactId>
|
||||
<version>2.0.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.booksaw</groupId>
|
||||
<artifactId>BetterTeams</artifactId>
|
||||
<version>4.8.0</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.MrUniverse44</groupId>
|
||||
<artifactId>ScaredClansAPI</artifactId>
|
||||
<version>0.3</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>me.neznamy</groupId>
|
||||
<artifactId>tab-api</artifactId>
|
||||
<version>4.0.2</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.william278</groupId>
|
||||
<artifactId>husktowns</artifactId>
|
||||
<version>2.6.1</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.angeschossen</groupId>
|
||||
<artifactId>LandsAPI</artifactId>
|
||||
<version>6.44.6</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
@ -109,7 +109,7 @@ public class KothManager extends ZUtils implements Savable {
|
||||
}
|
||||
|
||||
String fileName = name.replace(" ", "_");
|
||||
Koth koth = new ZKoth(fileName, kothType, name, capture, minLocation, maxLocation, new ArrayList<>(), new ArrayList<>());
|
||||
Koth koth = new ZKoth(fileName, kothType, name, capture, minLocation, maxLocation);
|
||||
|
||||
KothCreateEvent event = new KothCreateEvent(koth);
|
||||
event.call();
|
||||
|
@ -2,6 +2,7 @@ package fr.maxlego08.koth;
|
||||
|
||||
import fr.maxlego08.koth.api.Koth;
|
||||
import fr.maxlego08.koth.api.KothType;
|
||||
import fr.maxlego08.koth.api.utils.ScoreboardConfiguration;
|
||||
import fr.maxlego08.koth.zcore.utils.Cuboid;
|
||||
import org.bukkit.Location;
|
||||
|
||||
@ -12,6 +13,8 @@ public class ZKoth implements Koth {
|
||||
|
||||
private final String fileName;
|
||||
private final KothType kothType;
|
||||
private final ScoreboardConfiguration cooldownScoreboard;
|
||||
private final ScoreboardConfiguration startScoreboard;
|
||||
private String name;
|
||||
private int captureSeconds;
|
||||
private Location minLocation;
|
||||
@ -19,7 +22,7 @@ public class ZKoth implements Koth {
|
||||
private List<String> startCommands = new ArrayList<>();
|
||||
private List<String> endCommands = new ArrayList<>();
|
||||
|
||||
public ZKoth(String fileName, KothType kothType, String name, int captureSeconds, Location minLocation, Location maxLocation, List<String> startCommands, List<String> endCommands) {
|
||||
public ZKoth(String fileName, KothType kothType, String name, int captureSeconds, Location minLocation, Location maxLocation, List<String> startCommands, List<String> endCommands, ScoreboardConfiguration cooldownScoreboard, ScoreboardConfiguration startScoreboard) {
|
||||
this.fileName = fileName;
|
||||
this.kothType = kothType;
|
||||
this.name = name;
|
||||
@ -28,6 +31,19 @@ public class ZKoth implements Koth {
|
||||
this.maxLocation = maxLocation;
|
||||
this.startCommands = startCommands;
|
||||
this.endCommands = endCommands;
|
||||
this.startScoreboard = startScoreboard;
|
||||
this.cooldownScoreboard = cooldownScoreboard;
|
||||
}
|
||||
|
||||
public ZKoth(String fileName, KothType kothType, String name, int captureSeconds, Location minLocation, Location maxLocation) {
|
||||
this.fileName = fileName;
|
||||
this.kothType = kothType;
|
||||
this.name = name;
|
||||
this.captureSeconds = captureSeconds;
|
||||
this.minLocation = minLocation;
|
||||
this.maxLocation = maxLocation;
|
||||
this.startScoreboard = new ScoreboardConfiguration();
|
||||
this.cooldownScoreboard = new ScoreboardConfiguration();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -96,4 +112,14 @@ public class ZKoth implements Koth {
|
||||
public void setCaptureSeconds(int captureSeconds) {
|
||||
this.captureSeconds = captureSeconds;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ScoreboardConfiguration getCooldownScoreboard() {
|
||||
return this.cooldownScoreboard;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ScoreboardConfiguration getStartScoreboard() {
|
||||
return this.startScoreboard;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package fr.maxlego08.koth.api;
|
||||
|
||||
import fr.maxlego08.koth.api.utils.ScoreboardConfiguration;
|
||||
import fr.maxlego08.koth.zcore.utils.Cuboid;
|
||||
import org.bukkit.Location;
|
||||
|
||||
@ -32,4 +33,8 @@ public interface Koth {
|
||||
int getCaptureSeconds();
|
||||
|
||||
void setCaptureSeconds(int captureSeconds);
|
||||
|
||||
ScoreboardConfiguration getCooldownScoreboard();
|
||||
|
||||
ScoreboardConfiguration getStartScoreboard();
|
||||
}
|
||||
|
33
src/fr/maxlego08/koth/api/utils/ScoreboardConfiguration.java
Normal file
33
src/fr/maxlego08/koth/api/utils/ScoreboardConfiguration.java
Normal file
@ -0,0 +1,33 @@
|
||||
package fr.maxlego08.koth.api.utils;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class ScoreboardConfiguration {
|
||||
|
||||
private final boolean isEnable;
|
||||
private final String title;
|
||||
private final List<String> lines;
|
||||
|
||||
public ScoreboardConfiguration(boolean isEnable, String title, List<String> lines) {
|
||||
this.isEnable = isEnable;
|
||||
this.title = title;
|
||||
this.lines = lines;
|
||||
}
|
||||
|
||||
public ScoreboardConfiguration() {
|
||||
this(false, "zKoth", Collections.singletonList("Default Configuration"));
|
||||
}
|
||||
|
||||
public boolean isEnable() {
|
||||
return isEnable;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public List<String> getLines() {
|
||||
return lines;
|
||||
}
|
||||
}
|
36
src/fr/maxlego08/koth/hook/scoreboard/TabHook.java
Normal file
36
src/fr/maxlego08/koth/hook/scoreboard/TabHook.java
Normal file
@ -0,0 +1,36 @@
|
||||
package fr.maxlego08.koth.hook.scoreboard;
|
||||
|
||||
import fr.maxlego08.koth.api.KothScoreboard;
|
||||
import me.neznamy.tab.api.TabAPI;
|
||||
import me.neznamy.tab.api.TabPlayer;
|
||||
import me.neznamy.tab.api.scoreboard.ScoreboardManager;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class TabHook implements KothScoreboard {
|
||||
private final Plugin plugin;
|
||||
|
||||
public TabHook(Plugin plugin) {
|
||||
super();
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void toggle(Player player, Consumer<Player> after) {
|
||||
TabAPI api = TabAPI.getInstance();
|
||||
TabPlayer tabPlayer = api.getPlayer(player.getUniqueId());
|
||||
ScoreboardManager manager = TabAPI.getInstance().getScoreboardManager();
|
||||
if (tabPlayer != null && manager != null) {
|
||||
manager.toggleScoreboard(tabPlayer, false);
|
||||
Bukkit.getScheduler().runTaskLater(this.plugin, () -> after.accept(player), 10);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void hide(Player player, Consumer<Player> after) {
|
||||
this.toggle(player, after);
|
||||
}
|
||||
}
|
@ -3,6 +3,7 @@ package fr.maxlego08.koth.loader;
|
||||
import fr.maxlego08.koth.ZKoth;
|
||||
import fr.maxlego08.koth.api.Koth;
|
||||
import fr.maxlego08.koth.api.KothType;
|
||||
import fr.maxlego08.koth.api.utils.ScoreboardConfiguration;
|
||||
import fr.maxlego08.koth.zcore.utils.ZUtils;
|
||||
import fr.maxlego08.koth.zcore.utils.loader.Loader;
|
||||
import org.bukkit.Location;
|
||||
@ -14,6 +15,7 @@ import java.util.List;
|
||||
public class KothLoader extends ZUtils implements Loader<Koth> {
|
||||
|
||||
private final Loader<Location> locationLoader = new LocationLoader();
|
||||
private final Loader<ScoreboardConfiguration> scoreboardLoaderLoader = new ScoreboardLoader();
|
||||
|
||||
@Override
|
||||
public Koth load(YamlConfiguration configuration, String path, File file) {
|
||||
@ -26,20 +28,24 @@ public class KothLoader extends ZUtils implements Loader<Koth> {
|
||||
List<String> endCommands = configuration.getStringList("endCommands");
|
||||
Location minLocation = locationLoader.load(configuration, "minLocation.", file);
|
||||
Location manLocation = locationLoader.load(configuration, "maxLocation.", file);
|
||||
ScoreboardConfiguration cooldownScoreboard = scoreboardLoaderLoader.load(configuration, "scoreboard.cooldown.", file);
|
||||
ScoreboardConfiguration startScoreboard = scoreboardLoaderLoader.load(configuration, "scoreboard.start.", file);
|
||||
|
||||
return new ZKoth(fileName, kothType, name, captureSeconds, minLocation, manLocation, startCommands, endCommands);
|
||||
return new ZKoth(fileName, kothType, name, captureSeconds, minLocation, manLocation, startCommands, endCommands, cooldownScoreboard, startScoreboard);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(Koth object, YamlConfiguration configuration, String path) {
|
||||
public void save(Koth koth, YamlConfiguration configuration, String path) {
|
||||
|
||||
configuration.set("type", object.getKothType().name());
|
||||
configuration.set("name", object.getName());
|
||||
configuration.set("capture", object.getCaptureSeconds());
|
||||
configuration.set("startCommands", object.getStartCommands());
|
||||
configuration.set("endCommands", object.getEndCommands());
|
||||
locationLoader.save(object.getMinLocation(), configuration, "minLocation.");
|
||||
locationLoader.save(object.getMaxLocation(), configuration, "manLocation.");
|
||||
configuration.set("type", koth.getKothType().name());
|
||||
configuration.set("name", koth.getName());
|
||||
configuration.set("capture", koth.getCaptureSeconds());
|
||||
configuration.set("startCommands", koth.getStartCommands());
|
||||
configuration.set("endCommands", koth.getEndCommands());
|
||||
locationLoader.save(koth.getMinLocation(), configuration, "minLocation.");
|
||||
locationLoader.save(koth.getMaxLocation(), configuration, "manLocation.");
|
||||
scoreboardLoaderLoader.save(koth.getCooldownScoreboard(), configuration, "scoreboard.cooldown.");
|
||||
scoreboardLoaderLoader.save(koth.getStartScoreboard(), configuration, "scoreboard.start.");
|
||||
|
||||
}
|
||||
}
|
||||
|
30
src/fr/maxlego08/koth/loader/ScoreboardLoader.java
Normal file
30
src/fr/maxlego08/koth/loader/ScoreboardLoader.java
Normal file
@ -0,0 +1,30 @@
|
||||
package fr.maxlego08.koth.loader;
|
||||
|
||||
import fr.maxlego08.koth.api.utils.ScoreboardConfiguration;
|
||||
import fr.maxlego08.koth.zcore.utils.loader.Loader;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
|
||||
public class ScoreboardLoader implements Loader<ScoreboardConfiguration> {
|
||||
|
||||
@Override
|
||||
public ScoreboardConfiguration load(YamlConfiguration configuration, String path, File file) {
|
||||
|
||||
boolean isEnable = configuration.getBoolean(path + "enable", false);
|
||||
String title = configuration.getString(path + "title", "zKoth");
|
||||
List<String> lines = configuration.getStringList(path + "lines");
|
||||
|
||||
return new ScoreboardConfiguration(isEnable, title, lines);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ScoreboardConfiguration scoreboardConfiguration, YamlConfiguration configuration, String path) {
|
||||
|
||||
configuration.set(path + "enable", scoreboardConfiguration.isEnable());
|
||||
configuration.set(path + "title", scoreboardConfiguration.getTitle());
|
||||
configuration.set(path + "lines", scoreboardConfiguration.getLines());
|
||||
|
||||
}
|
||||
}
|
51
src/main/resources/koth-example.yml
Normal file
51
src/main/resources/koth-example.yml
Normal file
@ -0,0 +1,51 @@
|
||||
|
||||
name: test
|
||||
|
||||
type: CAPTURE
|
||||
capture: 30
|
||||
|
||||
startCommands: []
|
||||
|
||||
endCommands: []
|
||||
|
||||
minLocation:
|
||||
world: world
|
||||
x: 81
|
||||
y: 121
|
||||
z: 12
|
||||
|
||||
manLocation:
|
||||
world: world
|
||||
x: 77
|
||||
y: 123
|
||||
z: 8
|
||||
|
||||
scoreboard:
|
||||
cooldown:
|
||||
enable: false
|
||||
title: "&f&l⌈ &7&ozKoth &f&l⌋"
|
||||
lines:
|
||||
- "&r"
|
||||
- "&6&l⟣ &fKoth: &b%name%"
|
||||
- "&6&l⟣ &fCoordinate: &b%x% %y% %z%"
|
||||
- "&6&l⟣ &fStarts in: &d%capture%"
|
||||
- "&1"
|
||||
- "&6&l⟣ &fhttps://groupez.dev"
|
||||
start:
|
||||
enable: false
|
||||
title: "&f&l⌈ &7&ozKoth &f&l⌋"
|
||||
lines:
|
||||
- "&r"
|
||||
- "&6&l⟣ &fKoth: &b%name%"
|
||||
- "&6&l⟣ &b%x% %y% %z%"
|
||||
- "&6&l⟣ &fFaction: &b%faction%"
|
||||
- "&0"
|
||||
- "&6&l⟣ &fTime: &d%capture%"
|
||||
- "&b"
|
||||
- "&6&l⟣ &fPoints: &b%points%&f/&a%maxPoints%"
|
||||
- "&6&l⟣ &fPercent: &b%pointsPercent%&7%"
|
||||
- "&6&l⟣ &fTimer: &b%timer%"
|
||||
- "&6&l⟣ &fTimer: &b%timerSeconds%&f/&a%maxTimerSeconds%"
|
||||
- "&6&l⟣ &fPercent: &b%timerPercent%&7%"
|
||||
- "&1"
|
||||
- "&6&l⟣ &fhttps://groupez.dev"
|
Loading…
Reference in New Issue
Block a user