added maintenance mode
This commit is contained in:
parent
f4da7e7674
commit
b2021d5815
@ -18,6 +18,7 @@ import eu.mhsl.craftattack.spawn.appliances.help.Help;
|
||||
import eu.mhsl.craftattack.spawn.appliances.hotbarRefill.HotbarRefill;
|
||||
import eu.mhsl.craftattack.spawn.appliances.kick.Kick;
|
||||
import eu.mhsl.craftattack.spawn.appliances.knockDoor.KnockDoor;
|
||||
import eu.mhsl.craftattack.spawn.appliances.maintenance.Maintenance;
|
||||
import eu.mhsl.craftattack.spawn.appliances.outlawed.Outlawed;
|
||||
import eu.mhsl.craftattack.spawn.appliances.packSelect.PackSelect;
|
||||
import eu.mhsl.craftattack.spawn.appliances.panicBan.PanicBan;
|
||||
@ -85,7 +86,8 @@ public final class Main extends JavaPlugin {
|
||||
new DoubleDoor(),
|
||||
new KnockDoor(),
|
||||
new PackSelect(),
|
||||
new GlowingBerries()
|
||||
new GlowingBerries(),
|
||||
new Maintenance()
|
||||
)
|
||||
.filter(appliance -> disabledAppliances.stream()
|
||||
.noneMatch(s -> s.equalsIgnoreCase(appliance.getClass().getSimpleName())))
|
||||
|
@ -72,7 +72,8 @@ public abstract class Appliance {
|
||||
*/
|
||||
@NotNull
|
||||
public ConfigurationSection localConfig() {
|
||||
return Optional.ofNullable(Configuration.cfg.getConfigurationSection(localConfigPath)).orElse(Configuration.cfg);
|
||||
return Optional.ofNullable(Configuration.cfg.getConfigurationSection(localConfigPath))
|
||||
.orElseGet(() -> Configuration.cfg.createSection(localConfigPath));
|
||||
}
|
||||
|
||||
public void onEnable() {
|
||||
|
@ -0,0 +1,43 @@
|
||||
package eu.mhsl.craftattack.spawn.appliances.maintenance;
|
||||
|
||||
import eu.mhsl.craftattack.spawn.appliance.Appliance;
|
||||
import eu.mhsl.craftattack.spawn.appliance.ApplianceCommand;
|
||||
import eu.mhsl.craftattack.spawn.config.Configuration;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class Maintenance extends Appliance {
|
||||
private boolean isInMaintenance;
|
||||
private final String configKey = "enabled";
|
||||
|
||||
public Maintenance() {
|
||||
super("maintenance");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
this.isInMaintenance = localConfig().getBoolean(configKey, false);
|
||||
}
|
||||
|
||||
public void setState(boolean enabled) {
|
||||
this.isInMaintenance = enabled;
|
||||
localConfig().set(configKey, enabled);
|
||||
Configuration.saveChanges();
|
||||
}
|
||||
|
||||
public boolean isInMaintenance() {
|
||||
return isInMaintenance;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @NotNull List<ApplianceCommand<?>> commands() {
|
||||
return List.of(new MaintenanceCommand());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @NotNull List<Listener> listeners() {
|
||||
return List.of(new PreventMaintenanceJoinListener());
|
||||
}
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
package eu.mhsl.craftattack.spawn.appliances.maintenance;
|
||||
|
||||
import eu.mhsl.craftattack.spawn.appliance.ApplianceCommand;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class MaintenanceCommand extends ApplianceCommand<Maintenance> {
|
||||
public MaintenanceCommand() {
|
||||
super("maintanance");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void execute(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) throws Exception {
|
||||
Map<String, Boolean> options = Map.of("enable", true, "disable", false);
|
||||
if(args.length != 1 || !options.containsKey(args[0])) throw new Error("Argument 'enable' oder 'disable' gefordert!");
|
||||
getAppliance().setState(options.get(args[0]));
|
||||
sender.sendMessage(String.format("Maintanance: %b", getAppliance().isInMaintenance()));
|
||||
}
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
package eu.mhsl.craftattack.spawn.appliances.maintenance;
|
||||
|
||||
import eu.mhsl.craftattack.spawn.appliance.ApplianceListener;
|
||||
import eu.mhsl.craftattack.spawn.util.text.DisconnectInfo;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.player.PlayerLoginEvent;
|
||||
|
||||
public class PreventMaintenanceJoinListener extends ApplianceListener<Maintenance> {
|
||||
@EventHandler
|
||||
public void onJoin(PlayerLoginEvent event) {
|
||||
if(!getAppliance().isInMaintenance()) return;
|
||||
if(event.getPlayer().hasPermission("bypassMaintainance")) return;
|
||||
|
||||
DisconnectInfo disconnectInfo = new DisconnectInfo(
|
||||
"Wartunsarbeiten",
|
||||
"Zurzeit können nur Admins dem Server beitreten!",
|
||||
"Bitte warte bis die Warungsarbeiten wieder deaktiviert werden.",
|
||||
event.getPlayer().getUniqueId()
|
||||
);
|
||||
|
||||
event.disallow(PlayerLoginEvent.Result.KICK_OTHER, disconnectInfo.getComponent());
|
||||
}
|
||||
}
|
@ -38,3 +38,4 @@ commands:
|
||||
vogelfrei:
|
||||
settings:
|
||||
texturepack:
|
||||
maintanance:
|
Loading…
x
Reference in New Issue
Block a user