SteamWar/BauSystem
Archiviert
13
0

Changing TNT/Fire startup behavior + refactoring

Dieser Commit ist enthalten in:
Lixfel 2019-10-24 18:47:23 +02:00
Ursprung 308ecd90e6
Commit 8e91113f3d
12 geänderte Dateien mit 170 neuen und 254 gelöschten Zeilen

Datei anzeigen

@ -1,7 +1,6 @@
package de.steamwar.bausystem;
import de.steamwar.bausystem.commands.*;
import de.steamwar.bausystem.sql.Bauwelt;
import de.steamwar.bausystem.world.ArenaSection;
import de.steamwar.bausystem.world.RegionListener;
import de.steamwar.bausystem.world.TNTListener;
@ -26,7 +25,6 @@ import java.util.logging.Level;
public class BauSystem extends JavaPlugin implements Listener {
private static BauSystem plugin;
private static UUID owner;
private static Bauwelt welt;
private static List<ArenaSection> sections;
public static final String PREFIX = "§eBauSystem§8» §7";
public static final String SECTION_PATH = "/home/minecraft/backbone/server/UserBau/";
@ -42,14 +40,11 @@ public class BauSystem extends JavaPlugin implements Listener {
Bukkit.shutdown();
return;
}
welt = Bauwelt.getBauwelt(owner);
try {
CommandRemover.removeCommand("tp");
CommandRemover.removeAll("tp", "gamemode", "time");
CommandRemover.injectCommand(new CommandTeleport());
CommandRemover.removeCommand("gamemode");
CommandRemover.injectCommand(new CommandGamemode());
CommandRemover.removeCommand("time");
CommandRemover.injectCommand(new CommandTime());
} catch (Exception e) {
getLogger().log(Level.SEVERE, "Failed to replace commands", e);
@ -71,12 +66,12 @@ public class BauSystem extends JavaPlugin implements Listener {
getCommand("speed").setExecutor(new CommandSpeed());
getCommand("tnt").setExecutor(new CommandTNT());
getCommand("fire").setExecutor(new CommandFire());
getCommand("freeze").setExecutor(new CommandFreeze());
getCommand("testblock").setExecutor(new CommandTestblock());
getCommand("bau").setExecutor(new CommandBau());
getCommand("bauinfo").setExecutor(new CommandInfo());
getCommand("protect").setExecutor(new CommandProtect());
getCommand("skull").setExecutor(new CommandSkull());
getCommand("freeze").setExecutor(new CommandFreeze());
getCommand("loader").setExecutor(new CommandLoader());
Bukkit.getPluginManager().registerEvents(this, this);
@ -90,9 +85,6 @@ public class BauSystem extends JavaPlugin implements Listener {
public static UUID getOwner(){
return owner;
}
public static Bauwelt getWelt(){
return welt;
}
public static List<ArenaSection> getSections(){
return sections;
}

Datei anzeigen

@ -40,7 +40,7 @@ public class CommandBau implements CommandExecutor {
}
BauweltMember target = BauweltMember.getBauMember(id);
Welt.toggleTestblock(p, target);
Welt.toggleWorld(p, target);
}
private boolean negativeToggleCheck(Player p, UUID id){

Datei anzeigen

@ -1,20 +1,40 @@
package de.steamwar.bausystem.commands;
import de.steamwar.bausystem.world.Welt;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.block.BlockBurnEvent;
import org.bukkit.event.block.BlockSpreadEvent;
public class CommandFire implements CommandExecutor {
public class CommandFire extends ToggleCommand {
public CommandFire(){
super(true);
}
public static ToggleCommand getInstance(){
return getInstance(CommandFire.class);
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if(!(sender instanceof Player))
return false;
Player player = (Player) sender;
Welt.switchFire(player);
return false;
String getNoPermMessage() {
return "§cDu darfst hier nicht Feuerschaden (de-)aktivieren";
}
@Override
String getEnableMessage(){
return "§cFeuerschaden deaktiviert";
}
@Override
String getDisableMessage(){
return "§aFeuerschaden aktiviert";
}
@EventHandler
public void onFireDamage(BlockBurnEvent e) {
e.setCancelled(true);
}
@EventHandler
public void onFireSpread(BlockSpreadEvent e){
e.setCancelled(true);
}
}

Datei anzeigen

@ -1,42 +1,29 @@
package de.steamwar.bausystem.commands;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.Permission;
import de.steamwar.bausystem.world.Welt;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockPhysicsEvent;
public class CommandFreeze implements CommandExecutor, Listener {
public class CommandFreeze extends ToggleCommand {
private boolean frozen = false;
public CommandFreeze(){
super(false);
}
public static ToggleCommand getInstance(){
return getInstance(CommandFreeze.class);
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if(!(sender instanceof Player))
return false;
Player player = (Player) sender;
if (Welt.noPermission(player, Permission.world)){
player.sendMessage(BauSystem.PREFIX + "§cDu darfst diese Welt nicht einfrieren");
return false;
}
if(frozen){
HandlerList.unregisterAll(this);
Bukkit.broadcastMessage(BauSystem.PREFIX + "§aDie Welt wurde aufgetaut");
}else{
Bukkit.getPluginManager().registerEvents(this, BauSystem.getPlugin());
Bukkit.broadcastMessage(BauSystem.PREFIX + "§cDie Welt wurde eingefroren");
}
frozen = !frozen;
return false;
String getNoPermMessage() {
return "§cDu darfst diese Welt nicht einfrieren";
}
@Override
String getEnableMessage(){
return "§cWelt eingefroren";
}
@Override
String getDisableMessage(){
return "§aWelt aufgetaut";
}
@EventHandler

Datei anzeigen

@ -1,7 +1,6 @@
package de.steamwar.bausystem.commands;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.sql.Bauwelt;
import de.steamwar.bausystem.sql.BauweltMember;
import de.warking.hunjy.MySQL.WarkingUser;
import net.minecraft.server.v1_12_R1.MinecraftServer;
@ -15,12 +14,12 @@ public class CommandInfo implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
Bauwelt welt = BauSystem.getWelt();
sender.sendMessage(BauSystem.PREFIX + "Besitzer: §e" + WarkingUser.get(welt.getUserID()).getUserName());
sender.sendMessage(BauSystem.PREFIX + "TNT-Schaden: " + (welt.isTNTDmg() ? "§aAN" : "§cAUS"));
sender.sendMessage(BauSystem.PREFIX + "Feuerschaden: " + (welt.isFireDmg() ? "§aAN" : "§cAUS"));
sender.sendMessage(BauSystem.PREFIX + "Besitzer: §e" + WarkingUser.get(BauSystem.getOwnerID()).getUserName());
sender.sendMessage(BauSystem.PREFIX + "TNT-Schaden: " + (CommandTNT.getInstance().isOn() ? "§aAUS" : "§cAN"));
sender.sendMessage(BauSystem.PREFIX + "Feuerschaden: " + (CommandFire.getInstance().isOn() ? "§aAUS" : "§cAN"));
sender.sendMessage(BauSystem.PREFIX + "Eingefroren: " + (CommandFreeze.getInstance().isOn() ? "§aJA" : "§cNEIN"));
List<BauweltMember> members = BauweltMember.getMembers(welt.getUserID());
List<BauweltMember> members = BauweltMember.getMembers(BauSystem.getOwnerID());
StringBuilder membermessage = new StringBuilder().append(BauSystem.PREFIX).append("Mitglieder: ");
for (BauweltMember member : members) {

Datei anzeigen

@ -18,14 +18,7 @@ public class CommandRemover {
for (String cmd : cmds) removeCommand(cmd);
}
/**
* Removes command from bukkit CommandMap
*
* @param command Command to remove
* @return
* @throws Exception
*/
public static void removeCommand(String command) throws Exception {
private static void removeCommand(String command) throws Exception {
Class<?> serverClass = Class.forName("org.bukkit.craftbukkit." + VERSION + ".CraftServer");
Field f1 = serverClass.getDeclaredField("commandMap");

Datei anzeigen

@ -1,20 +1,33 @@
package de.steamwar.bausystem.commands;
import de.steamwar.bausystem.world.Welt;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityExplodeEvent;
public class CommandTNT implements CommandExecutor {
public class CommandTNT extends ToggleCommand {
public CommandTNT(){
super(true);
}
public static ToggleCommand getInstance(){
return getInstance(CommandTNT.class);
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if(!(sender instanceof Player))
return false;
Player player = (Player) sender;
String getNoPermMessage() {
return "§cDu darfst hier nicht TNT-Schaden (de-)aktivieren";
}
@Override
String getEnableMessage(){
return "§cTNT-Schaden deaktiviert";
}
@Override
String getDisableMessage(){
return "§aTNT-Schaden aktiviert";
}
Welt.switchTNT(player);
return false;
@EventHandler
public void onExplode(EntityExplodeEvent e) {
e.setCancelled(true);
}
}

Datei anzeigen

@ -0,0 +1,68 @@
package de.steamwar.bausystem.commands;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.Permission;
import de.steamwar.bausystem.world.Welt;
import net.md_5.bungee.api.ChatMessageType;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;
import java.util.HashMap;
import java.util.Map;
public abstract class ToggleCommand implements CommandExecutor, Listener {
private static Map<Class<? extends ToggleCommand>, Boolean> enabled = new HashMap<>();
private static Map<Class<? extends ToggleCommand>, ToggleCommand> instance = new HashMap<>();
ToggleCommand(boolean on){
enabled.put(getClass(), false);
if(on)
toggle();
instance.put(getClass(), this);
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if(!(sender instanceof Player))
return false;
Player player = (Player) sender;
if (Welt.noPermission(player, Permission.world)){
player.sendMessage(BauSystem.PREFIX + getNoPermMessage());
return false;
}
toggle();
return false;
}
static ToggleCommand getInstance(Class<? extends ToggleCommand> clazz){
return instance.get(clazz);
}
abstract String getNoPermMessage();
abstract String getEnableMessage();
abstract String getDisableMessage();
public boolean isOn(){
return enabled.get(getClass());
}
public void toggle(){
enabled.compute(getClass(), (clazz, value) -> !value);
if(enabled.get(getClass())){
Bukkit.getPluginManager().registerEvents(this, BauSystem.getPlugin());
Bukkit.getOnlinePlayers().forEach(player -> player.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(getEnableMessage())));
}else{
HandlerList.unregisterAll(this);
Bukkit.getOnlinePlayers().forEach(player -> player.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(getDisableMessage())));
}
}
}

Datei anzeigen

@ -1,87 +0,0 @@
package de.steamwar.bausystem.sql;
import de.warking.hunjy.MySQL.MySQL;
import de.warking.hunjy.MySQL.WarkingUser;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.UUID;
import static de.warking.hunjy.Core.sql;
public class Bauwelt {
private final int UserID;
private boolean TNTDmg;
private boolean FireDmg;
private Bauwelt(int userID, boolean tntDmg, boolean fireDmg, boolean updateDB){
UserID = userID;
TNTDmg = tntDmg;
FireDmg = fireDmg;
if(updateDB)
updateDB();
}
public Bauwelt(int userID, boolean tntDmg, boolean fireDmg){
this(userID, tntDmg, fireDmg, true);
}
public Bauwelt(UUID userID, boolean tntDmg, boolean fireDmg){
this(WarkingUser.get(userID).getId(), tntDmg, fireDmg, true);
}
private void updateDB(){
sql.update("INSERT INTO Bauwelt" +
" (UserID, TNTDmg, FireDmg)" +
" VALUES" +
" ('" + UserID + "', '" + MySQL.booleanToInt(TNTDmg) + "', '" + MySQL.booleanToInt(FireDmg) + "')" +
" ON DUPLICATE KEY UPDATE" +
" TNTDmg = VALUES(TNTDmg), FireDmg = VALUES(FireDmg)");
}
public static Bauwelt getBauwelt(UUID user){
return getBauwelt(WarkingUser.get(user).getId());
}
public static Bauwelt getBauwelt(int userId){
ResultSet bauwelt = sql.select("SELECT * FROM Bauwelt WHERE UserID = '" + userId + "'");
try {
if(bauwelt == null || !bauwelt.next()){
return null;
}
boolean tntDmg = bauwelt.getBoolean("TNTDmg");
boolean fireDmg = bauwelt.getBoolean("FireDmg");
return new Bauwelt(userId, tntDmg, fireDmg, false);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
public int getUserID() {
return UserID;
}
public UUID getUUID(){
return WarkingUser.get(UserID).getUUID();
}
public boolean isTNTDmg() {
return TNTDmg;
}
public void setTNTDmg(boolean TNTDmg) {
this.TNTDmg = TNTDmg;
updateDB();
}
public boolean isFireDmg() {
return FireDmg;
}
public void setFireDmg(boolean fireDmg) {
FireDmg = fireDmg;
updateDB();
}
}

Datei anzeigen

@ -162,7 +162,6 @@ public class AutoLoader implements Listener {
}
}else if(event.getAction() == Action.PHYSICAL){
Block block = event.getClickedBlock();
System.out.println(block);
Material material = block.getType();
if(material == Material.STONE_PLATE || material == Material.WOOD_PLATE){
new TemporaryActivation(block.getLocation(), 20);
@ -207,6 +206,7 @@ public class AutoLoader implements Listener {
player.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(message));
}
@SuppressWarnings("deprecation")
private boolean setRedstone(Location location, boolean active){
Block block = location.getBlock();
Material material = block.getType();

Datei anzeigen

@ -11,7 +11,6 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.*;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
public class RegionListener implements Listener {
@ -58,24 +57,6 @@ public class RegionListener implements Listener {
.getCommandManager().getDispatcher().get(command) != null;
}
@EventHandler
public void onExplode(EntityExplodeEvent e) {
if(!BauSystem.getWelt().isTNTDmg())
e.setCancelled(true);
}
@EventHandler
public void onFireDamage(BlockBurnEvent e) {
if(!BauSystem.getWelt().isFireDmg())
e.setCancelled(true);
}
@EventHandler
public void onFireSpread(BlockSpreadEvent e){
if(!BauSystem.getWelt().isFireDmg())
e.setCancelled(true);
}
@EventHandler
public void onSignChange(SignChangeEvent event) {
for(int i = 0; i <= 3; ++i) {

Datei anzeigen

@ -2,7 +2,6 @@ package de.steamwar.bausystem.world;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.Permission;
import de.steamwar.bausystem.sql.Bauwelt;
import de.steamwar.bausystem.sql.BauweltMember;
import de.warking.hunjy.MySQL.WarkingUser;
import org.bukkit.Bukkit;
@ -34,83 +33,34 @@ public class Welt {
}
}
public static void switchTNT(Player p){
if (noPermission(p, Permission.world)){
p.sendMessage(BauSystem.PREFIX + "§cDu darfst hier nicht TNT-Schaden (de)aktivieren");
return;
private static void sendMessages(Player p, boolean ableTo, BauweltMember target, String what){
Player z = Bukkit.getPlayer(WarkingUser.get(target.getMemberID()).getUUID());
if (z != null) {
if (ableTo) {
z.sendMessage(BauSystem.PREFIX + "§aDu kannst nun auf der Welt von §6" + p.getName() + "§a " + what);
}else {
z.sendMessage(BauSystem.PREFIX + "§cDu kannst nun nicht mehr auf der Welt von §6" + p.getName() + "§c " + what);
}
}
Bauwelt welt = BauSystem.getWelt();
welt.setTNTDmg(!welt.isTNTDmg());
if (welt.isTNTDmg())
Bukkit.broadcastMessage(BauSystem.PREFIX + "§aTNT-Schaden erlaubt");
else
Bukkit.broadcastMessage(BauSystem.PREFIX + "§cTNT-Schaden verboten");
}
public static void switchFire(Player p){
if (noPermission(p, Permission.world)){
p.sendMessage(BauSystem.PREFIX + "§cDu darfst hier nicht Feuerschaden (de)aktivieren");
return;
if (ableTo) {
p.sendMessage(BauSystem.PREFIX + "§aDer Spieler darf nun " + what);
} else {
p.sendMessage(BauSystem.PREFIX + "§cDer Spieler darf nun nicht mehr " + what);
}
Bauwelt welt = BauSystem.getWelt();
welt.setFireDmg(!welt.isFireDmg());
if (welt.isFireDmg())
Bukkit.broadcastMessage(BauSystem.PREFIX + "§aFeuer-Schaden erlaubt");
else
Bukkit.broadcastMessage(BauSystem.PREFIX + "§cFeuer-Schaden verboten");
}
public static void toggleBuild(Player p, BauweltMember target){
target.setBuild(!target.isBuild());
Player z = Bukkit.getPlayer(WarkingUser.get(target.getMemberID()).getUUID());
if (z != null) {
if (target.isBuild()) {
z.sendMessage(BauSystem.PREFIX + "§aDu kannst nun auf der Welt von §6" + p.getName() + "§a bauen");
}else {
z.sendMessage(BauSystem.PREFIX + "§cDu kannst nun nicht mehr auf der Welt von §6" + p.getName() + "§c bauen");
}
}
if (target.isBuild()) {
p.sendMessage(BauSystem.PREFIX + "§aDer Spieler darf nun bauen");
} else {
p.sendMessage(BauSystem.PREFIX + "§cDer Spieler darf nun nicht mehr bauen");
}
sendMessages(p, target.isBuild(), target, "bauen");
}
public static void toggleWE(Player p, BauweltMember target){
target.setWorldEdit(!target.isWorldEdit());
Player z = Bukkit.getPlayer(WarkingUser.get(target.getMemberID()).getUUID());
if (z != null) {
if (target.isWorldEdit()) {
z.sendMessage(BauSystem.PREFIX + "§aDu kannst nun auf der Welt von §6" + p.getName() + "§a WorldEdit verwenden");
}else {
z.sendMessage(BauSystem.PREFIX + "§cDu kannst nun nicht mehr auf der Welt von §6" + p.getName() + "§c WorldEdit verwenden");
}
}
if (target.isWorldEdit()) {
p.sendMessage(BauSystem.PREFIX + "§aDer Spieler darf nun WorldEdit verwenden");
} else {
p.sendMessage(BauSystem.PREFIX + "§cDer Spieler darf nun kein WorldEdit mehr verwenden");
}
sendMessages(p, target.isWorldEdit(), target, "WorldEdit verwenden");
}
public static void toggleTestblock(Player p, BauweltMember target){
public static void toggleWorld(Player p, BauweltMember target){
target.setWorld(!target.isWorld());
Player z = Bukkit.getPlayer(WarkingUser.get(target.getMemberID()).getUUID());
if (z != null) {
if (target.isWorld()) {
z.sendMessage(BauSystem.PREFIX + "§aDu kannst nun auf der Welt von §6" + p.getName() + "§a Einstellungen vornehmen");
}else {
z.sendMessage(BauSystem.PREFIX + "§cDu kannst nun nicht mehr auf der Welt von §6" + p.getName() + "§c Einstellungen vornehmen");
}
}
if (target.isWorld()) {
p.sendMessage(BauSystem.PREFIX + "§aDer Spieler darf nun Einstellungen vornehmen");
} else {
p.sendMessage(BauSystem.PREFIX + "§cDer Spieler darf nun nicht mehr Einstellungen vornehmen");
}
sendMessages(p, target.isWorld(), target, "Einstellungen vornehmen");
}
}