added portable crafting
This commit is contained in:
		| @@ -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..."); | ||||||
|   | |||||||
| @@ -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()); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -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()); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -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)); | ||||||
|   | |||||||
| @@ -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; | ||||||
|  |     } | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user