SteamWar/FightSystem
Archiviert
13
1

Fix one off offsets with doubles + aligned pasting

Signed-off-by: Lixfel <agga-games@gmx.de>
Dieser Commit ist enthalten in:
Lixfel 2021-09-02 11:23:10 +02:00
Ursprung 5826f7e8b1
Commit 0556b9de9a
6 geänderte Dateien mit 28 neuen und 18 gelöschten Zeilen

Datei anzeigen

@ -33,6 +33,7 @@ import com.sk89q.worldedit.extent.clipboard.io.SpongeSchematicReader;
import com.sk89q.worldedit.function.operation.ForwardExtentCopy; import com.sk89q.worldedit.function.operation.ForwardExtentCopy;
import com.sk89q.worldedit.function.operation.Operations; import com.sk89q.worldedit.function.operation.Operations;
import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.math.Vector3;
import com.sk89q.worldedit.math.transform.AffineTransform; import com.sk89q.worldedit.math.transform.AffineTransform;
import com.sk89q.worldedit.regions.CuboidRegion; import com.sk89q.worldedit.regions.CuboidRegion;
import com.sk89q.worldedit.session.ClipboardHolder; import com.sk89q.worldedit.session.ClipboardHolder;
@ -103,9 +104,9 @@ public class WorldeditWrapper14 implements WorldeditWrapper.IWorldeditWrapper {
EditSession e = WorldEdit.getInstance().getEditSessionFactory().getEditSession(new BukkitWorld(position.getWorld()), -1); EditSession e = WorldEdit.getInstance().getEditSessionFactory().getEditSession(new BukkitWorld(position.getWorld()), -1);
ClipboardHolder ch = new ClipboardHolder(clipboard); ClipboardHolder ch = new ClipboardHolder(clipboard);
ch.setTransform(aT); ch.setTransform(aT);
Operations.completeBlindly(ch.createPaste(e).to(BukkitAdapter.asBlockVector(position).add( Operations.completeBlindly(ch.createPaste(e).to(BukkitAdapter.asVector(position).add(
aT.apply(BlockVector3.at(offset.getBlockX(), offset.getBlockY(), offset.getBlockZ()).add(clipboard.getOrigin()).subtract(clipboard.getMinimumPoint()).toVector3()).toBlockPoint() aT.apply(Vector3.at(offset.getX(), offset.getY(), offset.getZ()).add(clipboard.getOrigin().toVector3()).subtract(clipboard.getMinimumPoint().toVector3()))
)).build()); ).toBlockPoint()).build());
e.flushSession(); e.flushSession();
} }

Datei anzeigen

@ -103,9 +103,9 @@ public class WorldeditWrapper8 implements WorldeditWrapper.IWorldeditWrapper {
EditSession e = WorldEdit.getInstance().getEditSessionFactory().getEditSession(w, -1); EditSession e = WorldEdit.getInstance().getEditSessionFactory().getEditSession(w, -1);
ClipboardHolder ch = new ClipboardHolder(clipboard, w.getWorldData()); ClipboardHolder ch = new ClipboardHolder(clipboard, w.getWorldData());
ch.setTransform(aT); ch.setTransform(aT);
Operations.completeBlindly(ch.createPaste(e, w.getWorldData()).to(new Vector(position.getBlockX(), position.getBlockY(), position.getBlockZ()).add( Operations.completeBlindly(ch.createPaste(e, w.getWorldData()).to(new Vector(position.getX(), position.getY(), position.getZ()).add(
aT.apply(new Vector(offset.getBlockX(), offset.getBlockY(), offset.getBlockZ()).add(clipboard.getOrigin()).subtract(clipboard.getMinimumPoint())).toBlockPoint() aT.apply(new Vector(offset.getX(), offset.getY(), offset.getZ()).add(clipboard.getOrigin()).subtract(clipboard.getMinimumPoint()))
)).build()); ).toBlockPoint()).build());
e.flushQueue(); e.flushQueue();
} }

Datei anzeigen

@ -61,9 +61,9 @@ public class Config {
public static final Location TeamRedSpawn; public static final Location TeamRedSpawn;
public static final Location SpecSpawn; public static final Location SpecSpawn;
private static final int BlueToRedX; public static final int BlueToRedX;
private static final int BlueToRedY; private static final int BlueToRedY;
private static final int BlueToRedZ; public static final int BlueToRedZ;
public static final int PreperationArea; public static final int PreperationArea;
public static final int WaterDepth; public static final int WaterDepth;
@ -132,14 +132,15 @@ public class Config {
public static final int ReplayID; public static final int ReplayID;
static{ static{
if(!new File(FightSystem.getPlugin().getDataFolder(), System.getProperty("config", "config.yml")).exists()) { String configFile = System.getProperty("config", "config.yml");
if(!new File(FightSystem.getPlugin().getDataFolder(), configFile).exists()) {
FightSystem.getPlugin().saveDefaultConfig(); FightSystem.getPlugin().saveDefaultConfig();
Bukkit.getLogger().log(Level.SEVERE, "Arenaconfig fehlt!"); Bukkit.getLogger().log(Level.SEVERE, "Arenaconfig fehlt!");
Bukkit.shutdown(); Bukkit.shutdown();
} }
FileConfiguration config = YamlConfiguration.loadConfiguration(new File(FightSystem.getPlugin().getDataFolder(), System.getProperty("config", "config.yml"))); FileConfiguration config = YamlConfiguration.loadConfiguration(new File(FightSystem.getPlugin().getDataFolder(), configFile));
File worldConfigFile = new File(Bukkit.getWorlds().get(0).getWorldFolder(), config.getString("Arenaconfig", "config.yml")); File worldConfigFile = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "config.yml");
if(!worldConfigFile.exists()) { if(!worldConfigFile.exists()) {
Bukkit.getLogger().log(Level.SEVERE, "Weltconfig fehlt!"); Bukkit.getLogger().log(Level.SEVERE, "Weltconfig fehlt!");
Bukkit.shutdown(); Bukkit.shutdown();
@ -173,7 +174,7 @@ public class Config {
GroundWalkable = config.getBoolean("Arena.GroundWalkable"); GroundWalkable = config.getBoolean("Arena.GroundWalkable");
RanksEnabled = config.getBoolean("Schematic.RanksEnabled"); RanksEnabled = config.getBoolean("Schematic.RanksEnabled");
SchematicType = de.steamwar.sql.SchematicType.fromDB(config.getString("Schematic.SchematicType")); SchematicType = de.steamwar.sql.SchematicType.fromDB(Objects.requireNonNull(config.getString("Schematic.SchematicType")));
IgnorePublicOnly = config.getBoolean("Schematic.IgnorePublicOnly"); IgnorePublicOnly = config.getBoolean("Schematic.IgnorePublicOnly");
boolean rotate = config.getBoolean("Schematic.Rotate"); boolean rotate = config.getBoolean("Schematic.Rotate");
PasteAligned = config.getBoolean("Schematic.PasteAligned"); PasteAligned = config.getBoolean("Schematic.PasteAligned");

Datei anzeigen

@ -132,9 +132,9 @@ public class FightSchematic extends StateDependent {
clipboard, clipboard,
new Location(Bukkit.getWorlds().get(0), region.centerX(), region.getMinY(), region.centerZ()), new Location(Bukkit.getWorlds().get(0), region.centerX(), region.getMinY(), region.centerZ()),
new Vector( new Vector(
-dims.getBlockX()/2, -(Config.PasteAligned && Config.BlueToRedX != 0 ? region.getSizeX() : dims.getBlockX())/2.0,
Config.WaterDepth != 0 ? Config.WaterDepth - WorldeditWrapper.impl.getWaterDepth(clipboard) : 0, Config.WaterDepth != 0 ? Config.WaterDepth - WorldeditWrapper.impl.getWaterDepth(clipboard) : 0,
-dims.getBlockZ()/2 -(Config.PasteAligned && Config.BlueToRedZ != 0 ? region.getSizeZ() : dims.getBlockZ())/2.0
), ),
new AffineTransform().rotateY(rotate ? 180 : 0) new AffineTransform().rotateY(rotate ? 180 : 0)
); );

Datei anzeigen

@ -71,6 +71,10 @@ public class Region {
return maxZ; return maxZ;
} }
public int getSizeX() {
return maxX - minX;
}
public int getSizeZ() { public int getSizeZ() {
return maxZ - minZ; return maxZ - minZ;
} }
@ -120,12 +124,12 @@ public class Region {
return (maxX - minX) * (maxY - minY) * (maxZ - minZ); return (maxX - minX) * (maxY - minY) * (maxZ - minZ);
} }
public int centerX() { public double centerX() {
return (maxX - minX) / 2 + minX; return (maxX - minX) / 2.0 + minX;
} }
public int centerZ() { public double centerZ() {
return (maxZ - minZ) / 2 + minZ; return (maxZ - minZ) / 2.0 + minZ;
} }
public boolean in2dRegion(Location location){ public boolean in2dRegion(Location location){

Datei anzeigen

@ -23,13 +23,17 @@ public enum Winconditions {
TIMEOUT, TIMEOUT,
HEART_RATIO_TIMEOUT, HEART_RATIO_TIMEOUT,
PERCENT_TIMEOUT, PERCENT_TIMEOUT,
ALL_DEAD, ALL_DEAD,
CAPTAIN_DEAD, CAPTAIN_DEAD,
PERCENT_SYSTEM, PERCENT_SYSTEM,
RELATIVE_PERCENT, RELATIVE_PERCENT,
POINTS, POINTS,
TIME_TECH_KO, TIME_TECH_KO,
WATER_TECH_KO, WATER_TECH_KO,
PUMPKIN_TECH_KO, PUMPKIN_TECH_KO,
HELLS_BELLS HELLS_BELLS
} }