SteamWar/FightSystem
Archiviert
13
1

Schematic Pasting

Dieser Commit ist enthalten in:
lixfel 2019-04-12 12:57:49 +02:00
Ursprung 209f1ba88a
Commit eab9235eef
4 geänderte Dateien mit 50 neuen und 16 gelöschten Zeilen

Datei anzeigen

@ -25,6 +25,7 @@ Schematic:
OnlyPublicSchematics: boolean
Directory: /home/netuser/schematics/
SchematicType: airship
Rotate: boolean
Output:
TeamRedName: Team1
TeamRedPrefix: §c

Datei anzeigen

@ -5,8 +5,8 @@ import org.bukkit.entity.Player;
public class Fight {
public static final FightTeam redTeam = new FightTeam(Config.TeamRedName, Config.TeamRedPrefix);
public static final FightTeam blueTeam = new FightTeam(Config.TeamBlueName, Config.TeamBluePrefix);
public static final FightTeam redTeam = new FightTeam(Config.TeamRedName, Config.TeamRedPrefix, Config.TeamRedSpawn, Config.TeamRedPaste, Config.TeamRedRotate);
public static final FightTeam blueTeam = new FightTeam(Config.TeamBlueName, Config.TeamBluePrefix, Config.TeamBlueSpawn, Config.TeamBluePaste, Config.TeamBlueRotate);
public static FightTeam getPlayerTeam(Player player) {

Datei anzeigen

@ -2,6 +2,7 @@ package me.yaruma.fightsystem.fight;
import com.boydti.fawe.FaweAPI;
import com.sk89q.worldedit.Vector;
import com.sk89q.worldedit.bukkit.BukkitWorld;
import com.sk89q.worldedit.math.transform.AffineTransform;
import com.sk89q.worldedit.world.World;
import de.warking.hunjy.MySQL.Schematic;
@ -10,6 +11,7 @@ import me.yaruma.fightsystem.FightSystem;
import me.yaruma.fightsystem.utils.Config;
import me.yaruma.fightsystem.utils.ItemBuilder;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
@ -24,16 +26,22 @@ public class FightTeam {
private final ArrayList<FightPlayer> players;
private boolean ready;
private final ArrayList<Player> invited;
private String name;
private String prefix;
private final String name;
private final String prefix;
private Schematic schematic;
private final Location spawn;
private final Vector paste;
private final boolean rotate;
public FightTeam(String Name, String Prefix) {
public FightTeam(String Name, String Prefix, Location Spawn, Vector Paste, boolean Rotate) {
players = new ArrayList<>();
invited = new ArrayList<>();
spawn = Spawn;
paste = Paste;
name = Name;
prefix = Prefix;
ready = false;
rotate = Rotate;
}
public FightPlayer getFightPlayer(Player player) {
@ -95,9 +103,10 @@ public class FightTeam {
public void setLeader(FightPlayer leader) {
this.leader = leader;
if(!this.players.contains(leader))
if(!this.players.contains(leader)){
this.players.add(leader);
}
}
public ArrayList<FightPlayer> getPlayers() {
return players;
@ -108,7 +117,7 @@ public class FightTeam {
}
private void pasteSchematic(){
File file = new File(Config.SchematicDirectory + WarkingUser.get(schematic.getSchemOwner()) + "/" + schematic.getSchemName() + ".schematic");
File file = new File(Config.SchematicDirectory + WarkingUser.get(schematic.getSchemOwner()).getUUID().toString() + "/" + schematic.getSchemName() + ".schematic");
com.boydti.fawe.object.schematic.Schematic schem;
try {
schem = FaweAPI.load(file);
@ -116,13 +125,13 @@ public class FightTeam {
e.printStackTrace();
return;
}
World w = new BukkitWorld(Bukkit.getWorlds().get(0));
Vector dimensions = schem.getClipboard().getDimensions();
Vector v = paste.subtract(dimensions.getX()/2, 0, dimensions.getZ()/2).subtract(schem.getClipboard().getRegion().getMinimumPoint()).add(schem.getClipboard().getOrigin());
AffineTransform aT = new AffineTransform();
World w = (World) Bukkit.getWorlds().get(0);
Vector v = schem.getClipboard().getDimensions().divide(-2);
if(this == Fight.getBlueTeam())
v = v.add(Config.TeamBluePasteX, Config.TeamBluePasteY, Config.TeamBluePasteZ);
else
v = v.add(Config.TeamRedPasteX, Config.TeamRedPasteY, Config.TeamRedPasteZ);
if(rotate){
aT.rotateY(180);
}
schem.paste(w, v, false, true, aT).flushQueue();
}

Datei anzeigen

@ -1,5 +1,6 @@
package me.yaruma.fightsystem.utils;
import com.sk89q.worldedit.Vector;
import de.warking.hunjy.MySQL.SchematicType;
import me.yaruma.fightsystem.FightSystem;
import org.bukkit.Bukkit;
@ -33,6 +34,8 @@ public class Config {
public static boolean OnlyPublicSchematics;
public static String SchematicDirectory;
public static SchematicType SchematicType;
public static boolean TeamRedRotate;
public static boolean TeamBlueRotate;
public static String TeamRedName;
public static String TeamRedPrefix;
@ -69,6 +72,8 @@ public class Config {
public static int TeamRedPasteX;
public static int TeamRedPasteY;
public static int TeamRedPasteZ;
public static Vector TeamBluePaste;
public static Vector TeamRedPaste;
public static int ArenaMinX;
public static int ArenaMinZ;
@ -105,6 +110,7 @@ public class Config {
OnlyPublicSchematics = config.getBoolean("Schematic.OnlyPublicSchematics");
SchematicDirectory = config.getString("Schematic.Directory");
SchematicType = de.warking.hunjy.MySQL.SchematicType.valueOf(config.getString("Schematic.SchematicType"));
boolean Rotate = config.getBoolean("Schematic.Rotate");
TeamRedName = config.getString("Output.TeamRedName");
TeamRedPrefix = config.getString("Output.TeamRedPrefix");
@ -148,31 +154,49 @@ public class Config {
TeamBluePasteY = TeamBlueCornerY;
TeamBluePasteZ = TeamBlueCornerZ + SchemsizeZ/2;
TeamBluePaste = new Vector(TeamBlueCornerX + SchemsizeX/2, TeamBlueCornerY, TeamBlueCornerZ + SchemsizeZ/2);
TeamRedPaste = new Vector(TeamRedCornerX + SchemsizeX/2, TeamRedCornerY, TeamRedCornerZ + SchemsizeZ/2);
TeamRedPasteX = TeamBluePasteX + TeamBluetoReddistanceX;
TeamRedPasteY = TeamBluePasteY + TeamBluetoReddistanceY;
TeamRedPasteZ = TeamBluePasteZ + TeamBluetoReddistanceZ;
World world = Bukkit.getWorlds().get(0);
TeamBlueSpawn = new Location(world, TeamBluePasteX, TeamBluePasteY + SchemsizeY, TeamBluePasteZ);
TeamRedSpawn = new Location(world, TeamRedPasteX, TeamRedPasteY + SchemsizeY, TeamRedPasteZ);
TeamBlueSpawn = new Location(world, TeamBluePasteX + 0.5, TeamBluePasteY + SchemsizeY, TeamBluePasteZ + 0.5);
TeamRedSpawn = new Location(world, TeamRedPasteX + 0.5, TeamRedPasteY + SchemsizeY, TeamRedPasteZ + 0.5);
SpecSpawn = new Location(world,
TeamBluePasteX + TeamBluetoReddistanceX/2,
TeamBluePasteY + TeamBluetoReddistanceY/2,
TeamBluePasteY + TeamBluetoReddistanceY/2 + SchemsizeY/2,
TeamBluePasteZ + TeamBluetoReddistanceZ/2);
if(TeamBluetoReddistanceX > 0){
ArenaMinX = TeamBlueCornerX - Schem2BorderX;
ArenaMaxX = TeamRedCornerX + SchemsizeX + Schem2BorderX;
TeamRedRotate = true;
TeamBlueRotate = false;
}else{
ArenaMinX = TeamRedCornerX - Schem2BorderX;
ArenaMaxX = TeamBlueCornerX + SchemsizeX + Schem2BorderX;
TeamRedRotate = false;
TeamBlueRotate = true;
}
if(TeamBluetoReddistanceZ > 0){
ArenaMinZ = TeamBlueCornerZ - Schem2BorderZ;
ArenaMaxZ = TeamRedCornerZ + SchemsizeZ + Schem2BorderZ;
TeamRedRotate = true;
TeamBlueRotate = false;
}else{
ArenaMinZ = TeamRedCornerZ - Schem2BorderZ;
ArenaMaxZ = TeamBlueCornerZ + SchemsizeZ + Schem2BorderZ;
if(TeamBluetoReddistanceZ != 0){
TeamRedRotate = false;
TeamBlueRotate = true;
}
}
if(!Rotate){
TeamRedRotate = false;
TeamBlueRotate = false;
}
}
}