moved setting declaration to each owning appliance

This commit is contained in:
Elias Müller 2024-09-24 19:20:59 +02:00
parent 7a97b1595e
commit da8e421532
25 changed files with 96 additions and 50 deletions

View File

@ -3,7 +3,6 @@ package eu.mhsl.craftattack.spawn.appliances.antiSignEdit;
import eu.mhsl.craftattack.spawn.appliance.Appliance; import eu.mhsl.craftattack.spawn.appliance.Appliance;
import eu.mhsl.craftattack.spawn.appliances.settings.Settings; import eu.mhsl.craftattack.spawn.appliances.settings.Settings;
import eu.mhsl.craftattack.spawn.appliances.settings.datatypes.SelectSetting; import eu.mhsl.craftattack.spawn.appliances.settings.datatypes.SelectSetting;
import eu.mhsl.craftattack.spawn.appliances.settings.settings.SignEditSetting;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
@ -15,6 +14,11 @@ import org.jetbrains.annotations.NotNull;
import java.util.List; import java.util.List;
public class AntiSignEdit extends Appliance { public class AntiSignEdit extends Appliance {
@Override
public void onEnable() {
Settings.instance().declareSetting(SignEditSetting.class);
}
public boolean preventSignEdit(Player p, SignSide sign) { public boolean preventSignEdit(Player p, SignSide sign) {
SelectSetting.Options.Option setting = Settings.instance().getSetting(p, Settings.Key.SignEdit, SelectSetting.Options.Option.class); SelectSetting.Options.Option setting = Settings.instance().getSetting(p, Settings.Key.SignEdit, SelectSetting.Options.Option.class);
if(setting.is(SignEditSetting.editable)) return false; if(setting.is(SignEditSetting.editable)) return false;

View File

@ -1,4 +1,4 @@
package eu.mhsl.craftattack.spawn.appliances.settings.settings; package eu.mhsl.craftattack.spawn.appliances.antiSignEdit;
import eu.mhsl.craftattack.spawn.appliances.settings.CategorizedSetting; import eu.mhsl.craftattack.spawn.appliances.settings.CategorizedSetting;
import eu.mhsl.craftattack.spawn.appliances.settings.SettingCategory; import eu.mhsl.craftattack.spawn.appliances.settings.SettingCategory;

View File

@ -1,6 +1,7 @@
package eu.mhsl.craftattack.spawn.appliances.autoShulker; package eu.mhsl.craftattack.spawn.appliances.autoShulker;
import eu.mhsl.craftattack.spawn.appliance.Appliance; import eu.mhsl.craftattack.spawn.appliance.Appliance;
import eu.mhsl.craftattack.spawn.appliances.settings.Settings;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.Material; import org.bukkit.Material;
@ -16,6 +17,11 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
public class AutoShulker extends Appliance { public class AutoShulker extends Appliance {
@Override
public void onEnable() {
Settings.instance().declareSetting(AutoShulkerSetting.class);
}
public boolean tryAutoShulker(Player p, Item item) { public boolean tryAutoShulker(Player p, Item item) {
ItemStack itemStack = item.getItemStack(); ItemStack itemStack = item.getItemStack();
ItemStack offhandStack = p.getInventory().getItemInOffHand(); ItemStack offhandStack = p.getInventory().getItemInOffHand();

View File

@ -1,4 +1,4 @@
package eu.mhsl.craftattack.spawn.appliances.settings.settings; package eu.mhsl.craftattack.spawn.appliances.autoShulker;
import eu.mhsl.craftattack.spawn.appliances.settings.CategorizedSetting; import eu.mhsl.craftattack.spawn.appliances.settings.CategorizedSetting;
import eu.mhsl.craftattack.spawn.appliances.settings.SettingCategory; import eu.mhsl.craftattack.spawn.appliances.settings.SettingCategory;

View File

@ -3,7 +3,6 @@ package eu.mhsl.craftattack.spawn.appliances.autoShulker;
import eu.mhsl.craftattack.spawn.appliance.ApplianceListener; import eu.mhsl.craftattack.spawn.appliance.ApplianceListener;
import eu.mhsl.craftattack.spawn.appliances.settings.Settings; import eu.mhsl.craftattack.spawn.appliances.settings.Settings;
import eu.mhsl.craftattack.spawn.appliances.settings.datatypes.SelectSetting; import eu.mhsl.craftattack.spawn.appliances.settings.datatypes.SelectSetting;
import eu.mhsl.craftattack.spawn.appliances.settings.settings.AutoShulkerSetting;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityPickupItemEvent; import org.bukkit.event.entity.EntityPickupItemEvent;

View File

@ -3,7 +3,6 @@ package eu.mhsl.craftattack.spawn.appliances.chatMention;
import eu.mhsl.craftattack.spawn.Main; import eu.mhsl.craftattack.spawn.Main;
import eu.mhsl.craftattack.spawn.appliance.Appliance; import eu.mhsl.craftattack.spawn.appliance.Appliance;
import eu.mhsl.craftattack.spawn.appliances.settings.Settings; import eu.mhsl.craftattack.spawn.appliances.settings.Settings;
import eu.mhsl.craftattack.spawn.appliances.settings.settings.ChatMentionSetting;
import net.kyori.adventure.sound.Sound; import net.kyori.adventure.sound.Sound;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
@ -56,6 +55,7 @@ public class ChatMention extends Appliance {
@Override @Override
public void onEnable() { public void onEnable() {
Settings.instance().declareSetting(ChatMentionSetting.class);
refreshPlayers(); refreshPlayers();
} }

View File

@ -2,7 +2,6 @@ package eu.mhsl.craftattack.spawn.appliances.chatMention;
import eu.mhsl.craftattack.spawn.appliance.ApplianceListener; import eu.mhsl.craftattack.spawn.appliance.ApplianceListener;
import eu.mhsl.craftattack.spawn.appliances.settings.Settings; import eu.mhsl.craftattack.spawn.appliances.settings.Settings;
import eu.mhsl.craftattack.spawn.appliances.settings.settings.ChatMentionSetting;
import io.papermc.paper.event.player.AsyncChatDecorateEvent; import io.papermc.paper.event.player.AsyncChatDecorateEvent;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.format.NamedTextColor;

View File

@ -1,4 +1,4 @@
package eu.mhsl.craftattack.spawn.appliances.settings.settings; package eu.mhsl.craftattack.spawn.appliances.chatMention;
import eu.mhsl.craftattack.spawn.appliances.settings.CategorizedSetting; import eu.mhsl.craftattack.spawn.appliances.settings.CategorizedSetting;
import eu.mhsl.craftattack.spawn.appliances.settings.SettingCategory; import eu.mhsl.craftattack.spawn.appliances.settings.SettingCategory;

View File

@ -1,6 +1,7 @@
package eu.mhsl.craftattack.spawn.appliances.chatMessages; package eu.mhsl.craftattack.spawn.appliances.chatMessages;
import eu.mhsl.craftattack.spawn.appliance.Appliance; import eu.mhsl.craftattack.spawn.appliance.Appliance;
import eu.mhsl.craftattack.spawn.appliances.settings.Settings;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.event.ClickEvent; import net.kyori.adventure.text.event.ClickEvent;
import net.kyori.adventure.text.event.HoverEvent; import net.kyori.adventure.text.event.HoverEvent;
@ -12,6 +13,11 @@ import org.jetbrains.annotations.NotNull;
import java.util.List; import java.util.List;
public class ChatMessages extends Appliance { public class ChatMessages extends Appliance {
@Override
public void onEnable() {
Settings.instance().declareSetting(ShowJoinAndLeaveMessagesSetting.class);
}
public Component getReportablePlayerName(Player player) { public Component getReportablePlayerName(Player player) {
return Component return Component
.text("") .text("")

View File

@ -1,4 +1,4 @@
package eu.mhsl.craftattack.spawn.appliances.settings.settings; package eu.mhsl.craftattack.spawn.appliances.chatMessages;
import eu.mhsl.craftattack.spawn.appliances.settings.CategorizedSetting; import eu.mhsl.craftattack.spawn.appliances.settings.CategorizedSetting;
import eu.mhsl.craftattack.spawn.appliances.settings.SettingCategory; import eu.mhsl.craftattack.spawn.appliances.settings.SettingCategory;

View File

@ -1,6 +1,7 @@
package eu.mhsl.craftattack.spawn.appliances.doubeDoor; package eu.mhsl.craftattack.spawn.appliances.doubeDoor;
import eu.mhsl.craftattack.spawn.appliance.Appliance; import eu.mhsl.craftattack.spawn.appliance.Appliance;
import eu.mhsl.craftattack.spawn.appliances.settings.Settings;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.BlockFace; import org.bukkit.block.BlockFace;
import org.bukkit.block.data.BlockData; import org.bukkit.block.data.BlockData;
@ -11,6 +12,11 @@ import org.jetbrains.annotations.NotNull;
import java.util.List; import java.util.List;
public class DoubleDoor extends Appliance { public class DoubleDoor extends Appliance {
@Override
public void onEnable() {
Settings.instance().declareSetting(DoubleDoorSetting.class);
}
public void openNextDoor(Block block) { public void openNextDoor(Block block) {
BlockData clickedData = block.getBlockData(); BlockData clickedData = block.getBlockData();
if (!(clickedData instanceof Door clickedDoor)) return; if (!(clickedData instanceof Door clickedDoor)) return;

View File

@ -1,4 +1,4 @@
package eu.mhsl.craftattack.spawn.appliances.settings.settings; package eu.mhsl.craftattack.spawn.appliances.doubeDoor;
import eu.mhsl.craftattack.spawn.appliances.settings.CategorizedSetting; import eu.mhsl.craftattack.spawn.appliances.settings.CategorizedSetting;
import eu.mhsl.craftattack.spawn.appliances.settings.SettingCategory; import eu.mhsl.craftattack.spawn.appliances.settings.SettingCategory;

View File

@ -2,6 +2,7 @@ package eu.mhsl.craftattack.spawn.appliances.hotbarRefill;
import eu.mhsl.craftattack.spawn.Main; import eu.mhsl.craftattack.spawn.Main;
import eu.mhsl.craftattack.spawn.appliance.Appliance; import eu.mhsl.craftattack.spawn.appliance.Appliance;
import eu.mhsl.craftattack.spawn.appliances.settings.Settings;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
@ -16,6 +17,11 @@ import java.util.List;
import java.util.NoSuchElementException; import java.util.NoSuchElementException;
public class HotbarRefill extends Appliance { public class HotbarRefill extends Appliance {
@Override
public void onEnable() {
Settings.instance().declareSetting(HotbarRefillSetting.class);
}
public void handleHotbarChange(Player player, ItemStack item) { public void handleHotbarChange(Player player, ItemStack item) {
if(player.getGameMode().equals(GameMode.CREATIVE)) return; if(player.getGameMode().equals(GameMode.CREATIVE)) return;
if(item.getAmount() != 1) return; if(item.getAmount() != 1) return;
@ -47,6 +53,6 @@ public class HotbarRefill extends Appliance {
@Override @Override
protected @NotNull List<Listener> listeners() { protected @NotNull List<Listener> listeners() {
return List.of(new ItemRefillListener()); return List.of(new HotbarRefillListener());
} }
} }

View File

@ -2,7 +2,6 @@ package eu.mhsl.craftattack.spawn.appliances.hotbarRefill;
import eu.mhsl.craftattack.spawn.appliance.ApplianceListener; import eu.mhsl.craftattack.spawn.appliance.ApplianceListener;
import eu.mhsl.craftattack.spawn.appliances.settings.Settings; import eu.mhsl.craftattack.spawn.appliances.settings.Settings;
import eu.mhsl.craftattack.spawn.appliances.settings.settings.HotbarReplaceSetting;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.block.BlockPlaceEvent;
@ -10,12 +9,12 @@ import org.bukkit.event.player.PlayerItemBreakEvent;
import org.bukkit.event.player.PlayerItemConsumeEvent; import org.bukkit.event.player.PlayerItemConsumeEvent;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
public class ItemRefillListener extends ApplianceListener<HotbarRefill> { public class HotbarRefillListener extends ApplianceListener<HotbarRefill> {
private HotbarReplaceSetting.HotbarReplaceConfig getPlayerSetting(Player player) { private HotbarRefillSetting.HotbarReplaceConfig getPlayerSetting(Player player) {
return Settings.instance().getSetting( return Settings.instance().getSetting(
player, player,
Settings.Key.HotbarReplacer, Settings.Key.HotbarReplacer,
HotbarReplaceSetting.HotbarReplaceConfig.class HotbarRefillSetting.HotbarReplaceConfig.class
); );
} }

View File

@ -1,4 +1,4 @@
package eu.mhsl.craftattack.spawn.appliances.settings.settings; package eu.mhsl.craftattack.spawn.appliances.hotbarRefill;
import eu.mhsl.craftattack.spawn.appliances.settings.CategorizedSetting; import eu.mhsl.craftattack.spawn.appliances.settings.CategorizedSetting;
import eu.mhsl.craftattack.spawn.appliances.settings.SettingCategory; import eu.mhsl.craftattack.spawn.appliances.settings.SettingCategory;
@ -6,7 +6,7 @@ import eu.mhsl.craftattack.spawn.appliances.settings.Settings;
import eu.mhsl.craftattack.spawn.appliances.settings.datatypes.MultiBoolSetting; import eu.mhsl.craftattack.spawn.appliances.settings.datatypes.MultiBoolSetting;
import org.bukkit.Material; import org.bukkit.Material;
public class HotbarReplaceSetting extends MultiBoolSetting<HotbarReplaceSetting.HotbarReplaceConfig> implements CategorizedSetting { public class HotbarRefillSetting extends MultiBoolSetting<HotbarRefillSetting.HotbarReplaceConfig> implements CategorizedSetting {
@Override @Override
public SettingCategory category() { public SettingCategory category() {
return SettingCategory.Gameplay; return SettingCategory.Gameplay;
@ -18,7 +18,7 @@ public class HotbarReplaceSetting extends MultiBoolSetting<HotbarReplaceSetting.
@DisplayName("Essen") boolean onConsumable @DisplayName("Essen") boolean onConsumable
) {} ) {}
public HotbarReplaceSetting() { public HotbarRefillSetting() {
super(Settings.Key.HotbarReplacer); super(Settings.Key.HotbarReplacer);
} }

View File

@ -4,7 +4,6 @@ import eu.mhsl.craftattack.spawn.Main;
import eu.mhsl.craftattack.spawn.appliance.Appliance; import eu.mhsl.craftattack.spawn.appliance.Appliance;
import eu.mhsl.craftattack.spawn.appliances.settings.Settings; import eu.mhsl.craftattack.spawn.appliances.settings.Settings;
import eu.mhsl.craftattack.spawn.appliances.settings.datatypes.SelectSetting; import eu.mhsl.craftattack.spawn.appliances.settings.datatypes.SelectSetting;
import eu.mhsl.craftattack.spawn.appliances.settings.settings.KnockDoorSetting;
import org.bukkit.*; import org.bukkit.*;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -16,6 +15,11 @@ import org.jetbrains.annotations.NotNull;
import java.util.List; import java.util.List;
public class KnockDoor extends Appliance { public class KnockDoor extends Appliance {
@Override
public void onEnable() {
Settings.instance().declareSetting(KnockDoorSetting.class);
}
public void knockAtDoor(Player knockingPlayer, Block knockedBlock) { public void knockAtDoor(Player knockingPlayer, Block knockedBlock) {
SelectSetting.Options.Option setting = Settings.instance().getSetting(knockingPlayer, Settings.Key.KnockDoors, SelectSetting.Options.Option.class); SelectSetting.Options.Option setting = Settings.instance().getSetting(knockingPlayer, Settings.Key.KnockDoors, SelectSetting.Options.Option.class);
if(setting.is(KnockDoorSetting.disabled)) return; if(setting.is(KnockDoorSetting.disabled)) return;

View File

@ -1,4 +1,4 @@
package eu.mhsl.craftattack.spawn.appliances.settings.settings; package eu.mhsl.craftattack.spawn.appliances.knockDoor;
import eu.mhsl.craftattack.spawn.appliances.settings.CategorizedSetting; import eu.mhsl.craftattack.spawn.appliances.settings.CategorizedSetting;
import eu.mhsl.craftattack.spawn.appliances.settings.SettingCategory; import eu.mhsl.craftattack.spawn.appliances.settings.SettingCategory;

View File

@ -6,6 +6,7 @@ import eu.mhsl.craftattack.spawn.appliance.ApplianceCommand;
import eu.mhsl.craftattack.spawn.appliances.packSelect.listeners.ClosePackInventoryListener; import eu.mhsl.craftattack.spawn.appliances.packSelect.listeners.ClosePackInventoryListener;
import eu.mhsl.craftattack.spawn.appliances.packSelect.listeners.ClickPackInventoryListener; import eu.mhsl.craftattack.spawn.appliances.packSelect.listeners.ClickPackInventoryListener;
import eu.mhsl.craftattack.spawn.appliances.packSelect.listeners.SetPacksOnJoinListener; import eu.mhsl.craftattack.spawn.appliances.packSelect.listeners.SetPacksOnJoinListener;
import eu.mhsl.craftattack.spawn.appliances.settings.Settings;
import net.kyori.adventure.resource.ResourcePackInfo; import net.kyori.adventure.resource.ResourcePackInfo;
import net.kyori.adventure.resource.ResourcePackRequest; import net.kyori.adventure.resource.ResourcePackRequest;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
@ -34,6 +35,8 @@ public class PackSelect extends Appliance {
@Override @Override
public void onEnable() { public void onEnable() {
Settings.instance().declareSetting(PackSelectSetting.class);
List<Map<?, ?>> packs = localConfig().getMapList("packs"); List<Map<?, ?>> packs = localConfig().getMapList("packs");
Bukkit.getScheduler().runTaskAsynchronously( Bukkit.getScheduler().runTaskAsynchronously(
Main.instance(), Main.instance(),

View File

@ -1,7 +1,6 @@
package eu.mhsl.craftattack.spawn.appliances.settings.settings; package eu.mhsl.craftattack.spawn.appliances.packSelect;
import eu.mhsl.craftattack.spawn.Main; import eu.mhsl.craftattack.spawn.Main;
import eu.mhsl.craftattack.spawn.appliances.packSelect.PackSelect;
import eu.mhsl.craftattack.spawn.appliances.settings.CategorizedSetting; import eu.mhsl.craftattack.spawn.appliances.settings.CategorizedSetting;
import eu.mhsl.craftattack.spawn.appliances.settings.SettingCategory; import eu.mhsl.craftattack.spawn.appliances.settings.SettingCategory;
import eu.mhsl.craftattack.spawn.appliances.settings.datatypes.ActionSetting; import eu.mhsl.craftattack.spawn.appliances.settings.datatypes.ActionSetting;

View File

@ -9,6 +9,11 @@ import org.jetbrains.annotations.NotNull;
import java.util.List; import java.util.List;
public class PortableCrafting extends Appliance { public class PortableCrafting extends Appliance {
@Override
public void onEnable() {
Settings.instance().declareSetting(PortableCraftingSetting.class);
}
public void openFor(Player player) { public void openFor(Player player) {
if(!Settings.instance().getSetting(player, Settings.Key.EnablePortableCrafting, Boolean.class)) return; if(!Settings.instance().getSetting(player, Settings.Key.EnablePortableCrafting, Boolean.class)) return;
player.openWorkbench(null, true); player.openWorkbench(null, true);

View File

@ -1,4 +1,4 @@
package eu.mhsl.craftattack.spawn.appliances.settings.settings; package eu.mhsl.craftattack.spawn.appliances.portableCrafting;
import eu.mhsl.craftattack.spawn.appliances.settings.CategorizedSetting; import eu.mhsl.craftattack.spawn.appliances.settings.CategorizedSetting;
import eu.mhsl.craftattack.spawn.appliances.settings.SettingCategory; import eu.mhsl.craftattack.spawn.appliances.settings.SettingCategory;

View File

@ -5,7 +5,6 @@ import eu.mhsl.craftattack.spawn.appliance.ApplianceCommand;
import eu.mhsl.craftattack.spawn.appliances.settings.datatypes.Setting; import eu.mhsl.craftattack.spawn.appliances.settings.datatypes.Setting;
import eu.mhsl.craftattack.spawn.appliances.settings.listeners.OpenSettingsShortcutListener; import eu.mhsl.craftattack.spawn.appliances.settings.listeners.OpenSettingsShortcutListener;
import eu.mhsl.craftattack.spawn.appliances.settings.listeners.SettingsInventoryListener; import eu.mhsl.craftattack.spawn.appliances.settings.listeners.SettingsInventoryListener;
import eu.mhsl.craftattack.spawn.appliances.settings.settings.*;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -13,13 +12,14 @@ import org.bukkit.event.Listener;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.util.Arrays; import java.lang.reflect.InvocationTargetException;
import java.util.List; import java.util.*;
import java.util.WeakHashMap;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
public class Settings extends Appliance { public class Settings extends Appliance {
private static Settings settingsInstance; private static Settings settingsInstance;
private final Set<Class<? extends Setting<?>>> declaredSettings = new HashSet<>();
public enum Key { public enum Key {
TechnicalTab, TechnicalTab,
@ -36,10 +36,18 @@ public class Settings extends Appliance {
public static Settings instance() { public static Settings instance() {
if(settingsInstance != null) return settingsInstance; if(settingsInstance != null) return settingsInstance;
queryAppliance(Settings.class); Settings.settingsInstance = queryAppliance(Settings.class);
Settings instance = queryAppliance(Settings.class); return settingsInstance;
Settings.settingsInstance = instance; }
return instance;
public void declareSetting(Class<? extends Setting<?>> setting) {
this.declaredSettings.add(setting);
this.settingsCache.clear();
}
@Override
public void onEnable() {
Settings.instance().declareSetting(SettingsShortcutSetting.class);
} }
public record OpenSettingsInventory(Inventory inventory, List<Setting<?>> settings) { public record OpenSettingsInventory(Inventory inventory, List<Setting<?>> settings) {
@ -51,28 +59,31 @@ public class Settings extends Appliance {
private List<Setting<?>> getSettings(Player player) { private List<Setting<?>> getSettings(Player player) {
if(settingsCache.containsKey(player)) return settingsCache.get(player); if(settingsCache.containsKey(player)) return settingsCache.get(player);
List<Setting<?>> settings = List.of( List<Setting<?>> settings = this.declaredSettings.stream()
new PortableCraftingSetting(), .map(clazz -> {
new AutoShulkerSetting(), try {
new SignEditSetting(), return clazz.getDeclaredConstructor();
new HotbarReplaceSetting(), } catch (NoSuchMethodException e) {
new ChatMentionSetting(), throw new RuntimeException(String.format("Setting '%s' does not have an accessible constructor", clazz.getName()), e);
new ShowJoinAndLeaveMessagesSetting(), }
new TechnicalTablistSetting(), })
new SettingsShortcutSetting(), .map(constructor -> {
new DoubleDoorSetting(), try {
new KnockDoorSetting(), return constructor.newInstance();
new PackSelectSetting() } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) {
); throw new RuntimeException(String.format("Failed to create instance of setting '%s'", constructor.getDeclaringClass().getName()), e);
}
})
.peek(setting -> setting.initializeFromPlayer(player))
.collect(Collectors.toList());
settings.forEach(setting -> setting.initializeFromPlayer(player));
this.settingsCache.put(player, settings); this.settingsCache.put(player, settings);
return settings; return settings;
} }
public <T> T getSetting(Player player, Key key, Class<T> clazz) { public <T> T getSetting(Player player, Key key, Class<T> clazz) {
Setting<?> setting = getSettings(player).stream() Setting<?> setting = getSettings(player).stream()
.filter(s -> s.getKey().equals(key)) .filter(s -> Objects.equals(s.getKey(), key))
.findFirst() .findFirst()
.orElseThrow(); .orElseThrow();

View File

@ -1,8 +1,5 @@
package eu.mhsl.craftattack.spawn.appliances.settings.settings; package eu.mhsl.craftattack.spawn.appliances.settings;
import eu.mhsl.craftattack.spawn.appliances.settings.CategorizedSetting;
import eu.mhsl.craftattack.spawn.appliances.settings.SettingCategory;
import eu.mhsl.craftattack.spawn.appliances.settings.Settings;
import eu.mhsl.craftattack.spawn.appliances.settings.datatypes.BoolSetting; import eu.mhsl.craftattack.spawn.appliances.settings.datatypes.BoolSetting;
import org.bukkit.Material; import org.bukkit.Material;

View File

@ -33,6 +33,8 @@ public class Tablist extends Appliance {
@Override @Override
public void onEnable() { public void onEnable() {
Settings.instance().declareSetting(TechnicalTablistSetting.class);
int tabRefreshRate = 3; int tabRefreshRate = 3;
this.networkMonitor = new NetworkMonitor(localConfig().getString("interface"), Duration.ofSeconds(1)); this.networkMonitor = new NetworkMonitor(localConfig().getString("interface"), Duration.ofSeconds(1));
this.systemMonitor = ManagementFactory.getOperatingSystemMXBean(); this.systemMonitor = ManagementFactory.getOperatingSystemMXBean();

View File

@ -1,4 +1,4 @@
package eu.mhsl.craftattack.spawn.appliances.settings.settings; package eu.mhsl.craftattack.spawn.appliances.tablist;
import eu.mhsl.craftattack.spawn.appliances.settings.CategorizedSetting; import eu.mhsl.craftattack.spawn.appliances.settings.CategorizedSetting;
import eu.mhsl.craftattack.spawn.appliances.settings.SettingCategory; import eu.mhsl.craftattack.spawn.appliances.settings.SettingCategory;