SteamWar/FightSystem
Archiviert
13
1

Refitting vor new Core

Dieser Commit ist enthalten in:
Lixfel 2019-11-10 17:29:59 +01:00
Ursprung 3247ea737c
Commit a108a810ea
14 geänderte Dateien mit 109 neuen und 299 gelöschten Zeilen

Datei anzeigen

@ -54,7 +54,7 @@
<dependency>
<groupId>steamwar</groupId>
<artifactId>SpigotCore</artifactId>
<version>1.0</version>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<dependency>

Datei anzeigen

@ -12,8 +12,8 @@ import de.steamwar.fightsystem.utils.Config;
import de.steamwar.fightsystem.utils.FightScoreboard;
import de.steamwar.fightsystem.utils.TechHider;
import de.steamwar.fightsystem.utils.WaterRemover;
import de.steamwar.fightsystem.utils.sql.EventFight;
import de.steamwar.fightsystem.winconditions.*;
import de.steamwar.sql.EventFight;
import javafx.util.Pair;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
@ -153,8 +153,14 @@ public class FightSystem extends JavaPlugin {
Bukkit.broadcastMessage(PREFIX + "§aKein Team hat gewonnen!");
}
if(Config.event())
eventFight.setErgebnis(winFightTeam);
if(Config.event()){
if(winFightTeam == null)
eventFight.setErgebnis(0);
else if(winFightTeam.isBlue())
eventFight.setErgebnis(1);
else
eventFight.setErgebnis(2);
}
if(!Config.test())
new SpectateOverCountdown();

Datei anzeigen

@ -6,10 +6,10 @@ import de.steamwar.fightsystem.fight.FightState;
import de.steamwar.fightsystem.fight.FightTeam;
import de.steamwar.fightsystem.kit.KitManager;
import de.steamwar.fightsystem.utils.Config;
import de.warking.hunjy.MySQL.Schematic;
import de.warking.hunjy.MySQL.SchematicType;
import de.warking.hunjy.MySQL.UserGroup;
import de.warking.hunjy.MySQL.WarkingUser;
import de.steamwar.sql.Schematic;
import de.steamwar.sql.SchematicType;
import de.steamwar.sql.SteamwarUser;
import de.steamwar.sql.UserGroup;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.chat.ComponentBuilder;
@ -61,7 +61,7 @@ public class AkCommand implements CommandExecutor {
break;
case 2:
if(args[0].equalsIgnoreCase("addkit")){
if(WarkingUser.get(player.getUniqueId()).getUserGroup() != UserGroup.Developer){
if(SteamwarUser.get(player.getUniqueId()).getUserGroup() != UserGroup.Developer){
Commands.sendHelp(player);
return false;
}
@ -99,7 +99,7 @@ public class AkCommand implements CommandExecutor {
Schematic schem;
if(args[2].equalsIgnoreCase("public")) {
schem = Schematic.getSchemFromDB(args[1], WarkingUser.get(0).getUUID());
schem = Schematic.getSchemFromDB(args[1], SteamwarUser.get(0).getUUID());
} else if(args[2].equalsIgnoreCase("private")) {
schem = Schematic.getSchemFromDB(args[1], player.getUniqueId());
} else

Datei anzeigen

@ -10,8 +10,8 @@ import de.steamwar.fightsystem.utils.Config;
import de.steamwar.inventory.SWInventory;
import de.steamwar.inventory.SWItem;
import de.steamwar.inventory.SWListInv;
import de.warking.hunjy.MySQL.Schematic;
import de.warking.hunjy.MySQL.WarkingUser;
import de.steamwar.sql.Schematic;
import de.steamwar.sql.SteamwarUser;
import javafx.util.Pair;
import org.bukkit.Bukkit;
import org.bukkit.Material;
@ -50,7 +50,7 @@ public class GUI {
List<Pair<SWItem, UUID>> players = SWListInv.createPlayerList(p);
players.removeIf(swItemUUIDPair -> Fight.getFightPlayer(Bukkit.getPlayer(swItemUUIDPair.getValue())) != null);
SWListInv<UUID> inv = new SWListInv<>(p, "Spieler einladen", (ClickType click, UUID player) -> {
Commands.invite(p, WarkingUser.get(player).getUserName());
Commands.invite(p, SteamwarUser.get(player).getUserName());
p.closeInventory();
}, players);
inv.setCallback(-999, (ClickType click) -> p.closeInventory());
@ -64,7 +64,7 @@ public class GUI {
return;
players.removeIf(swItemUUIDPair -> !team.equals(Fight.getPlayerTeam(Bukkit.getPlayer(swItemUUIDPair.getValue()))));
SWListInv<UUID> inv = new SWListInv<>(p, "Spieler rauswerfen", (ClickType click, UUID player) -> {
Commands.kick(p, WarkingUser.get(player).getUserName());
Commands.kick(p, SteamwarUser.get(player).getUserName());
p.closeInventory();
}, players);
inv.setCallback(-999, (ClickType click) -> p.closeInventory());
@ -109,9 +109,9 @@ public class GUI {
if(publicSchems)
schems = SWListInv.getSchemList(0, Config.SchematicType);
else if(Config.test())
schems = SWListInv.getSchemList(WarkingUser.get(p.getUniqueId()).getId(), null);
schems = SWListInv.getSchemList(SteamwarUser.get(p.getUniqueId()).getId(), null);
else
schems = SWListInv.getSchemList(WarkingUser.get(p.getUniqueId()).getId(), Config.SchematicType);
schems = SWListInv.getSchemList(SteamwarUser.get(p.getUniqueId()).getId(), Config.SchematicType);
SWListInv<Schematic> inv = new SWListInv<>(p, Config.GameName + "-Auswahl", (ClickType click, Schematic s) -> {
FightTeam fightTeam = Fight.getPlayerTeam(p);
if(fightTeam == null)

Datei anzeigen

@ -17,6 +17,6 @@ public class PreRunningCountdown extends Countdown {
@Override
public void countdownFinished() {
FightSystem.getPlugin().setRunningState();
FightSystem.setRunningState();
}
}

Datei anzeigen

@ -12,8 +12,8 @@ import com.sk89q.worldedit.world.World;
import de.steamwar.fightsystem.FightSystem;
import de.steamwar.fightsystem.kit.KitManager;
import de.steamwar.fightsystem.utils.*;
import de.warking.hunjy.MySQL.Schematic;
import de.warking.hunjy.MySQL.WarkingUser;
import de.steamwar.sql.Schematic;
import de.steamwar.sql.SteamwarUser;
import javafx.util.Pair;
import org.bukkit.*;
import org.bukkit.enchantments.Enchantment;
@ -218,7 +218,7 @@ public class FightTeam {
}
private void pasteSchematic(){
File file = new File(Config.SchematicDirectory + WarkingUser.get(schematic.getSchemOwner()).getUUID().toString(), schematic.getSchemName() + ".schematic");
File file = new File(Config.SchematicDirectory + SteamwarUser.get(schematic.getSchemOwner()).getUUID().toString(), schematic.getSchemName() + ".schematic");
com.boydti.fawe.object.schematic.Schematic schem;
try {
schem = FaweAPI.load(file);

Datei anzeigen

@ -6,7 +6,7 @@ import de.steamwar.fightsystem.fight.FightPlayer;
import de.steamwar.fightsystem.fight.FightState;
import de.steamwar.fightsystem.fight.FightTeam;
import de.steamwar.fightsystem.utils.Config;
import de.warking.hunjy.MySQL.WarkingUser;
import de.steamwar.sql.SteamwarUser;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerJoinEvent;
@ -17,7 +17,7 @@ public class EventJoinListener extends BasicListener {
@EventHandler
public void handlePlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
WarkingUser user = WarkingUser.get(player.getUniqueId());
SteamwarUser user = SteamwarUser.get(player.getUniqueId());
FightTeam team = null;
if(user.getTeam() == Config.EventTeamBlueID)

Datei anzeigen

@ -22,6 +22,7 @@ public class PlayerDeathListener extends BasicListener {
return;
Bukkit.broadcastMessage(FightSystem.PREFIX + "§cDer Spieler " + fightTeam.getPrefix() + player.getName() + " §cist gestorben!");
event.setDeathMessage(null);
fightTeam.getFightPlayer(player).setOut();
player.setGameMode(GameMode.SPECTATOR);
player.teleport(fightTeam.getSpawn());

Datei anzeigen

@ -2,10 +2,9 @@ package de.steamwar.fightsystem.utils;
import com.sk89q.worldedit.Vector;
import de.steamwar.fightsystem.FightSystem;
import de.steamwar.fightsystem.utils.sql.Event;
import de.steamwar.fightsystem.utils.sql.EventFight;
import de.steamwar.fightsystem.utils.sql.Team;
import de.warking.hunjy.MySQL.SchematicType;
import de.steamwar.sql.Event;
import de.steamwar.sql.EventFight;
import de.steamwar.sql.Team;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World;
@ -45,7 +44,7 @@ public class Config {
public static boolean OnlyPublicSchematics;
public static String SchematicDirectory;
public static SchematicType SchematicType;
public static de.steamwar.sql.SchematicType SchematicType;
public static boolean TeamRedRotate;
public static boolean TeamBlueRotate;
@ -142,7 +141,7 @@ public class Config {
OnlyPublicSchematics = config.getBoolean("Schematic.OnlyPublicSchematics");
SchematicDirectory = config.getString("Schematic.Directory");
SchematicType = de.warking.hunjy.MySQL.SchematicType.fromDB(config.getString("Schematic.SchematicType"));
SchematicType = de.steamwar.sql.SchematicType.fromDB(config.getString("Schematic.SchematicType"));
boolean Rotate = config.getBoolean("Schematic.Rotate");
TeamRedName = config.getString("Output.TeamRedName");

Datei anzeigen

@ -30,7 +30,6 @@ import org.bukkit.entity.Player;
import java.util.*;
public class TechHider {
private TechHider(){}
private static Map<PacketContainer, PacketContainer> packetCache = new HashMap<>();
@ -48,7 +47,7 @@ public class TechHider {
private static int redMinZ;
private static int redMaxZ;
private static short obfuscateShift4;
private static final short BITMASK = 0x1FF;
//private static final short BITMASK = 0x1FF;
private static Material obfuscateMaterial;
private static boolean running = false;
private static int threadMultiplier = 1;
@ -72,6 +71,7 @@ public class TechHider {
redMaxZ = posToChunk(Config.TeamRedCornerZ + Config.SchemsizeZ) + 1;
obfuscateShift4 = (short)(Config.ObfuscateWith << 4);
//noinspection deprecation
obfuscateMaterial = Material.getMaterial(Config.ObfuscateWith);
if(Config.event())
@ -109,7 +109,40 @@ public class TechHider {
Bukkit.getScheduler().runTaskTimer(FightSystem.getPlugin(), packetCache::clear, 1, 1);
ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(FightSystem.getPlugin(), PacketType.Play.Server.MAP_CHUNK) {
chunkHider();
multiBlockHider();
blockHider();
blockActionHider();
}
private static boolean bypass(Player p, int chunkX, int chunkZ){
if(p == FightSystem.getEventLeiter())
return true;
FightTeam ft = Fight.getPlayerTeam(p);
if(ft == null){
//Außerhalb der Arena
return arenaMinX > chunkX ||
chunkX > arenaMaxX ||
arenaMinZ > chunkZ ||
chunkZ > arenaMaxZ;
}else if(ft.isBlue()){
return FightSystem.isEntern() ||
redMinX > chunkX ||
chunkX > redMaxX ||
redMinZ > chunkZ ||
chunkZ > redMaxZ;
}else{
return FightSystem.isEntern() ||
blueMinX > chunkX ||
chunkX > blueMaxX ||
blueMinZ > chunkZ ||
chunkZ > blueMaxZ;
}
}
private static void chunkHider(){
ProtocolLibrary.getProtocolManager().getAsynchronousManager().registerAsyncHandler(new PacketAdapter(FightSystem.getPlugin(), PacketType.Play.Server.MAP_CHUNK) {
@Override
public void onPacketSending(PacketEvent e) {
PacketContainer packet = e.getPacket();
@ -220,34 +253,10 @@ public class TechHider {
byteArray.write(0, data);
}
}
});
ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(FightSystem.getPlugin(), PacketType.Play.Server.BLOCK_CHANGE) {
@Override
public void onPacketSending(PacketEvent e) {
PacketContainer packet = e.getPacket();
BlockPosition pos = packet.getBlockPositionModifier().read(0);
Player p = e.getPlayer();
if(bypass(p, posToChunk(pos.getX()), posToChunk(pos.getZ())))
return;
PacketContainer cached = packetCache.get(packet);
if(cached != null){
e.setPacket(cached);
return;
}).start(threadMultiplier * 4);
}
cached = packet.deepClone();
packetCache.put(packet, cached);
e.setPacket(cached);
StructureModifier<WrappedBlockData> blockStructure = cached.getBlockData();
WrappedBlockData block = blockStructure.read(0);
if(Config.HiddenBlocks.contains(block.getType().getId())){
block.setType(obfuscateMaterial);
blockStructure.write(0, block);
}
}
});
private static void multiBlockHider(){
ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(FightSystem.getPlugin(), PacketType.Play.Server.MULTI_BLOCK_CHANGE) {
@Override
public void onPacketSending(PacketEvent e) {
@ -272,6 +281,7 @@ public class TechHider {
boolean changed = false;
for(MultiBlockChangeInfo mbci : changes){
WrappedBlockData block = mbci.getData();
//noinspection deprecation
if(Config.HiddenBlocks.contains(block.getType().getId())){
changed = true;
block.setType(obfuscateMaterial);
@ -284,6 +294,40 @@ public class TechHider {
}
}
});
}
private static void blockHider(){
ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(FightSystem.getPlugin(), PacketType.Play.Server.BLOCK_CHANGE) {
@Override
public void onPacketSending(PacketEvent e) {
PacketContainer packet = e.getPacket();
BlockPosition pos = packet.getBlockPositionModifier().read(0);
Player p = e.getPlayer();
if(bypass(p, posToChunk(pos.getX()), posToChunk(pos.getZ())))
return;
PacketContainer cached = packetCache.get(packet);
if(cached != null){
e.setPacket(cached);
return;
}
cached = packet.deepClone();
packetCache.put(packet, cached);
e.setPacket(cached);
StructureModifier<WrappedBlockData> blockStructure = cached.getBlockData();
WrappedBlockData block = blockStructure.read(0);
//noinspection deprecation
if(Config.HiddenBlocks.contains(block.getType().getId())){
block.setType(obfuscateMaterial);
blockStructure.write(0, block);
}
}
});
}
private static void blockActionHider(){
ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(FightSystem.getPlugin(), PacketType.Play.Server.BLOCK_ACTION) {
@Override
public void onPacketSending(PacketEvent e) {
@ -299,32 +343,6 @@ public class TechHider {
});
}
private static boolean bypass(Player p, int chunkX, int chunkZ){
if(p == FightSystem.getEventLeiter())
return true;
FightTeam ft = Fight.getPlayerTeam(p);
if(ft == null){
//Außerhalb der Arena
return arenaMinX > chunkX ||
chunkX > arenaMaxX ||
arenaMinZ > chunkZ ||
chunkZ > arenaMaxZ;
}else if(ft.isBlue()){
return FightSystem.isEntern() ||
redMinX > chunkX ||
chunkX > redMaxX ||
redMinZ > chunkZ ||
chunkZ > redMaxZ;
}else{
return FightSystem.isEntern() ||
blueMinX > chunkX ||
chunkX > blueMaxX ||
blueMinZ > chunkZ ||
chunkZ > blueMaxZ;
}
}
public static List<Pair<Integer, Integer>> prepareChunkReload(Player p){
if(disabled())
return Collections.emptyList();

Datei anzeigen

@ -1,61 +0,0 @@
package de.steamwar.fightsystem.utils.sql;
import org.bukkit.Bukkit;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.logging.Level;
import static de.warking.hunjy.Core.sql;
public class Event {
private final int eventID;
private final String eventName;
private final Timestamp start;
private final Timestamp end;
private final int maximumTeamMembers;
private final boolean publicSchemsOnly;
private Event(int eventID, String eventName, Timestamp start, Timestamp end, int maximumTeamMembers, boolean publicSchemsOnly){
this.eventID = eventID;
this.eventName = eventName;
this.start = start;
this.end = end;
this.maximumTeamMembers = maximumTeamMembers;
this.publicSchemsOnly = publicSchemsOnly;
}
public static Event get(int eventID){
ResultSet rs = sql.select("SELECT * FROM Event WHERE EventID = " + eventID);
try{
if(!rs.next())
throw new IllegalArgumentException();
return new Event(eventID, rs.getString("EventName"), rs.getTimestamp("Start"), rs.getTimestamp("End"), rs.getInt("MaximumTeamMembers"), rs.getBoolean("PublicSchemsOnly"));
}catch (SQLException e){
Bukkit.getLogger().log(Level.SEVERE, "Failed to load Event", e);
throw new SecurityException();
}
}
public int getEventID() {
return eventID;
}
public String getEventName() {
return eventName;
}
public Timestamp getStart() {
return start;
}
public Timestamp getEnd() {
return end;
}
public int getMaximumTeamMembers() {
return maximumTeamMembers;
}
public boolean publicSchemsOnly() {
return publicSchemsOnly;
}
}

Datei anzeigen

@ -1,78 +0,0 @@
package de.steamwar.fightsystem.utils.sql;
import de.steamwar.fightsystem.fight.FightTeam;
import de.warking.hunjy.Core;
import org.bukkit.Bukkit;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
public class EventFight {
private int eventID;
private int fightID;
private int teamBlue;
private int teamRed;
private int kampfleiter;
private int ergebnis;
private EventFight(int eventID, int fightID, int teamBlue, int teamRed, int kampfleiter, int ergebnis){
this.eventID = eventID;
this.fightID = fightID;
this.teamBlue = teamBlue;
this.teamRed = teamRed;
this.kampfleiter = kampfleiter;
this.ergebnis = ergebnis;
}
public static EventFight get(int fightID){
ResultSet rs = Core.sql.select("SELECT * FROM EventFight WHERE FightID = " + fightID);
try{
rs.next();
return new EventFight(
rs.getInt("EventID"),
fightID,
rs.getInt("TeamBlue"),
rs.getInt("TeamRed"),
rs.getInt("Kampfleiter"),
rs.getInt("Ergebnis"));
}catch (SQLException e){
Bukkit.getLogger().log(Level.SEVERE, "Failed to load EventFight", e);
}
return null;
}
public void setErgebnis(FightTeam winner){
if (winner == null)
ergebnis = 0;
else if (winner.isBlue())
ergebnis = 1;
else
ergebnis = 2;
Core.sql.update("UPDATE EventFight SET Ergebnis = " + ergebnis + " WHERE FightID = " + fightID);
}
public int getTeamBlue() {
return teamBlue;
}
public int getTeamRed() {
return teamRed;
}
public int getEventID() {
return eventID;
}
public int getFightID() {
return fightID;
}
public int getKampfleiter() {
return kampfleiter;
}
public int getErgebnis() {
return ergebnis;
}
}

Datei anzeigen

@ -1,75 +0,0 @@
package de.steamwar.fightsystem.utils.sql;
import org.bukkit.Bukkit;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import static de.warking.hunjy.Core.sql;
public class Team {
private final int teamId;
private String teamKuerzel;
private String teamName;
private int teamLeader;
private Team(int id, String kuerzel, String name, int leader){
teamId = id;
teamKuerzel = kuerzel;
teamName = name;
teamLeader = leader;
}
public static Team get(int id){
return load(sql.select("SELECT * FROM Team WHERE TeamID = " + id));
}
private static Team load(ResultSet dbteam){
try {
if(!dbteam.next()){
return null;
}
int id = dbteam.getInt("TeamID");
String kuerzel = dbteam.getString("TeamKuerzel");
String name = dbteam.getString("TeamName");
int leader = dbteam.getInt("TeamLeader");
return new Team(id, kuerzel, name, leader);
} catch (SQLException e) {
Bukkit.getLogger().log(Level.SEVERE, "Could not load teammembers", e);
return null;
}
}
public int getTeamId() {
return teamId;
}
public String getTeamKuerzel() {
return teamKuerzel;
}
public String getTeamName() {
return teamName;
}
public int getTeamLeader() {
return teamLeader;
}
public List<Integer> getMembers(){
try{
ResultSet memberlist = sql.select("SELECT id FROM UserData WHERE Team = '" + teamId + "'");
List<Integer> members = new ArrayList<>();
while(memberlist.next()){
members.add(memberlist.getInt("id"));
}
return members;
}catch(SQLException e){
Bukkit.getLogger().log(Level.SEVERE, "Could not load Teammembers", e);
}
return new ArrayList<>();
}
}

Datei anzeigen

@ -2,7 +2,7 @@ name: FightSystem
version: 1.0
author: [Yaruma3341, Lixfel]
main: de.steamwar.fightsystem.FightSystem
depend: [CoreSystem, WorldEdit, FastAsyncWorldEdit, ProtocolLib]
depend: [SpigotCore, WorldEdit, ProtocolLib]
commands:
ak: