added portable crafting

This commit is contained in:
Elias Müller 2024-08-24 11:31:15 +02:00
parent 3dc25d63fd
commit a60b6265a8
5 changed files with 79 additions and 3 deletions

View File

@ -14,6 +14,7 @@ import eu.mhsl.craftattack.spawn.appliances.kick.Kick;
import eu.mhsl.craftattack.spawn.appliances.outlawed.Outlawed; import eu.mhsl.craftattack.spawn.appliances.outlawed.Outlawed;
import eu.mhsl.craftattack.spawn.appliances.panicBan.PanicBan; import eu.mhsl.craftattack.spawn.appliances.panicBan.PanicBan;
import eu.mhsl.craftattack.spawn.appliances.playerlimit.PlayerLimit; import eu.mhsl.craftattack.spawn.appliances.playerlimit.PlayerLimit;
import eu.mhsl.craftattack.spawn.appliances.portableCrafting.PortableCrafting;
import eu.mhsl.craftattack.spawn.appliances.projectStart.ProjectStart; import eu.mhsl.craftattack.spawn.appliances.projectStart.ProjectStart;
import eu.mhsl.craftattack.spawn.appliances.report.Report; import eu.mhsl.craftattack.spawn.appliances.report.Report;
import eu.mhsl.craftattack.spawn.appliances.restart.Restart; import eu.mhsl.craftattack.spawn.appliances.restart.Restart;
@ -62,7 +63,8 @@ public final class Main extends JavaPlugin {
new Debug(), new Debug(),
new Fleischerchest(), new Fleischerchest(),
new CustomAdvancements(), new CustomAdvancements(),
new Settings() new Settings(),
new PortableCrafting()
); );
Bukkit.getLogger().info("Loading appliances..."); Bukkit.getLogger().info("Loading appliances...");

View File

@ -0,0 +1,14 @@
package eu.mhsl.craftattack.spawn.appliances.portableCrafting;
import eu.mhsl.craftattack.spawn.appliance.ApplianceListener;
import org.bukkit.Material;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerInteractEvent;
public class OnCraftingTableUseListener extends ApplianceListener<PortableCrafting> {
@EventHandler
public void inInteract(PlayerInteractEvent event) {
if(!event.getMaterial().equals(Material.CRAFTING_TABLE)) return;
getAppliance().openFor(event.getPlayer());
}
}

View File

@ -0,0 +1,21 @@
package eu.mhsl.craftattack.spawn.appliances.portableCrafting;
import eu.mhsl.craftattack.spawn.appliance.Appliance;
import eu.mhsl.craftattack.spawn.appliances.settings.Settings;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.jetbrains.annotations.NotNull;
import java.util.List;
public class PortableCrafting extends Appliance {
public void openFor(Player player) {
if(!Settings.instance().getSetting(player, Settings.Key.EnablePortableCrafting, Boolean.class)) return;
player.openWorkbench(null, true);
}
@Override
protected @NotNull List<Listener> eventHandlers() {
return List.of(new OnCraftingTableUseListener());
}
}

View File

@ -4,6 +4,7 @@ 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.appliance.ApplianceCommand; 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.settings.EnablePortableCraftingSetting;
import eu.mhsl.craftattack.spawn.appliances.settings.settings.ShowJoinAndLeaveMessagesSetting; import eu.mhsl.craftattack.spawn.appliances.settings.settings.ShowJoinAndLeaveMessagesSetting;
import eu.mhsl.craftattack.spawn.appliances.settings.settings.TechnicalTablistSetting; import eu.mhsl.craftattack.spawn.appliances.settings.settings.TechnicalTablistSetting;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
@ -17,13 +18,19 @@ import java.util.List;
import java.util.WeakHashMap; import java.util.WeakHashMap;
public class Settings extends Appliance { public class Settings extends Appliance {
private static Settings settingsInstance;
public enum Key { public enum Key {
TechnicalTab, TechnicalTab,
ShowJoinAndLeaveMessages, ShowJoinAndLeaveMessages,
EnablePortableCrafting,
} }
public static Settings instance() { public static Settings instance() {
return Main.instance().getAppliance(Settings.class); if(settingsInstance != null) return settingsInstance;
Settings instance = Main.instance().getAppliance(Settings.class);
Settings.settingsInstance = instance;
return instance;
} }
public record OpenSettingsInventory(Inventory inventory, List<Setting<?>> settings) { public record OpenSettingsInventory(Inventory inventory, List<Setting<?>> settings) {
@ -37,7 +44,8 @@ public class Settings extends Appliance {
List<Setting<?>> settings = List.of( List<Setting<?>> settings = List.of(
new TechnicalTablistSetting(), new TechnicalTablistSetting(),
new ShowJoinAndLeaveMessagesSetting() new ShowJoinAndLeaveMessagesSetting(),
new EnablePortableCraftingSetting()
); );
settings.forEach(setting -> setting.initializeFromPlayer(player)); settings.forEach(setting -> setting.initializeFromPlayer(player));

View File

@ -0,0 +1,31 @@
package eu.mhsl.craftattack.spawn.appliances.settings.settings;
import eu.mhsl.craftattack.spawn.appliances.settings.Settings;
import eu.mhsl.craftattack.spawn.appliances.settings.datatypes.BoolSetting;
import org.bukkit.Material;
public class EnablePortableCraftingSetting extends BoolSetting {
public EnablePortableCraftingSetting() {
super(Settings.Key.EnablePortableCrafting);
}
@Override
protected String title() {
return "Portables Crafting";
}
@Override
protected String description() {
return "Erlaubt das öffnen einer Werkbank in der Hand, ohne sie plazieren zu müssen";
}
@Override
protected Material icon() {
return Material.CRAFTING_TABLE;
}
@Override
protected Boolean defaultValue() {
return true;
}
}