From 4b1f15afc55fc3754c6c010b905107cc84840922 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Sat, 17 Apr 2021 15:31:16 +0200 Subject: [PATCH] Add TimeCommand Add BauSystem.PREFIX Add Permission.hasPermission --- .../src/de/steamwar/bausystem/BauSystem.java | 2 +- .../src/de/steamwar/bausystem/Permission.java | 32 +++++- .../bausystem/features/other/TimeCommand.java | 103 ++++++++++++++++++ 3 files changed, 133 insertions(+), 4 deletions(-) create mode 100644 BauSystem_Main/src/de/steamwar/bausystem/features/other/TimeCommand.java diff --git a/BauSystem_Main/src/de/steamwar/bausystem/BauSystem.java b/BauSystem_Main/src/de/steamwar/bausystem/BauSystem.java index aca76667..210d5d08 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/BauSystem.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/BauSystem.java @@ -30,7 +30,7 @@ public class BauSystem extends JavaPlugin implements Listener { @Getter private static BauSystem instance; - // public static final String PREFIX = "§eBauSystem§8» §7"; + public static final String PREFIX = "§eBauSystem§8» §7"; @Override public void onEnable() { diff --git a/BauSystem_Main/src/de/steamwar/bausystem/Permission.java b/BauSystem_Main/src/de/steamwar/bausystem/Permission.java index 200af31a..48c026cd 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/Permission.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/Permission.java @@ -19,8 +19,34 @@ package de.steamwar.bausystem; +import de.steamwar.bausystem.config.BauServer; +import de.steamwar.sql.BauweltMember; +import lombok.AllArgsConstructor; +import org.bukkit.entity.Player; + +import java.util.function.Predicate; + +@AllArgsConstructor public enum Permission { - WORLD, - WORLDEDIT, - MEMBER + WORLD(BauweltMember::isWorld), + WORLDEDIT(BauweltMember::isWorldEdit), + MEMBER(bauweltMember -> true); + + private Predicate permissionPredicate; + + public boolean hasPermission(Player member) { + if (member.getUniqueId().equals(BauServer.getInstance().getOwner())) + return true; + + BauweltMember bauMember = BauweltMember.getBauMember(BauServer.getInstance().getOwner(), member.getUniqueId()); + if (bauMember == null) { + return false; + } + + return permissionPredicate.test(bauMember); + } + + public static boolean hasPermission(Player member, Permission permission) { + return permission.hasPermission(member); + } } diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/other/TimeCommand.java b/BauSystem_Main/src/de/steamwar/bausystem/features/other/TimeCommand.java new file mode 100644 index 00000000..b9253d8d --- /dev/null +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/other/TimeCommand.java @@ -0,0 +1,103 @@ +/* + * This file is a part of the SteamWar software. + * + * Copyright (C) 2021 SteamWar.de-Serverteam + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package de.steamwar.bausystem.features.other; + +import de.steamwar.bausystem.BauSystem; +import de.steamwar.bausystem.Permission; +import de.steamwar.bausystem.linkage.LinkageType; +import de.steamwar.bausystem.linkage.Linked; +import de.steamwar.command.SWCommand; +import de.steamwar.command.SWCommandUtils; +import de.steamwar.command.TypeMapper; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; + +import java.util.Arrays; +import java.util.List; + +@Linked(LinkageType.COMMAND) +public class TimeCommand extends SWCommand { + + private static List tabCompletions = Arrays.asList("0", "6000", "12000", "18000"); + + public TimeCommand() { + super("time"); + } + + @Register(help = true) + public void genericHelp(Player p, String... args) { + p.sendMessage("§8/§etime §8<§7Zeit 0=Morgen§8, §76000=Mittag§8, §718000=Mitternacht§8> §8- §7Setzt die Zeit auf dem Bau"); + } + + @Register + public void genericCommand(Player p, int time) { + if (!Permission.hasPermission(p, Permission.WORLD)) { + p.sendMessage(BauSystem.PREFIX + "§cDu darfst hier nicht die Zeit ändern"); + return; + } + if (time < 0 || time > 24000) { + p.sendMessage(BauSystem.PREFIX + "§cBitte gib eine Zahl zwischen 0 und 24000 an"); + return; + } + Bukkit.getWorlds().get(0).setTime(time); + } + + @Register + public void genericCommand(Player p, Time time) { + if (!Permission.hasPermission(p, Permission.WORLD)) { + p.sendMessage(BauSystem.PREFIX + "§cDu darfst hier nicht die Zeit ändern"); + return; + } + Bukkit.getWorlds().get(0).setTime(time.getValue()); + } + + @ClassMapper(value = int.class, local = true) + public TypeMapper doubleTypeMapper() { + return SWCommandUtils.createMapper(s -> { + try { + return Integer.parseInt(s); + } catch (NumberFormatException e) { + return 0; + } + }, s -> tabCompletions); + } + + public enum Time { + NIGHT(18000), + DAY(6000), + DAWN(0), + SUNSET(12000), + NACHT(18000), + TAG(6000), + MORGEN(0), + ABEND(12000); + + private int value; + + private Time(int value) { + this.value = value; + } + + public int getValue() { + return value; + } + } + +}