ScheuraaYT
Minecrafter
Hey ich habe folgendes Problem:
Ich möchte mit der WorldGuardAPI eine Region aus einer mit der WorldeditAPI gepasteten Schematic erstellen.
Bisher bin ich so vorgegangen:
Das Problem ist momentan noch, dass die Region nicht im Bereich der Schematic ist, die die Vektoren min und max noch nicht stimmen, was daran liegt dass da jeweils das falsche addiere bzw. subtrahiere.
Habe im Internet dazu aus älterer Zeit folgendes gefunden:
und
wobei cc ein Objekt der Klasse CuboidClipboard ist, die gibt es allerdings nicht mehr in der neueren Version von WorldEdit. Wie komme ich nun in der Version auf den Offset und auf die Size meiner Schematic bzw. geht das ganze überhaupt noch so ?
Ich möchte mit der WorldGuardAPI eine Region aus einer mit der WorldeditAPI gepasteten Schematic erstellen.
Bisher bin ich so vorgegangen:
Java:
private void pasteSchem(String name, Location loc) {
File file = new File(Main.getPlugin().getDataFolder().getParent() + "/WorldEdit/schematics/" + name + ".schem");
ClipboardFormat format = ClipboardFormats.findByFile(file);
Clipboard clipboard = null;
try (ClipboardReader reader = format.getReader(new FileInputStream(file))) {
try {
clipboard = reader.read();
} catch (IOException ex) {
ex.printStackTrace();
}
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
com.sk89q.worldedit.world.World w = BukkitAdapter.adapt(loc.getWorld());
try (EditSession editSession = WorldEdit.getInstance().getEditSessionFactory().getEditSession(w, -1)) {
Operation operation = new ClipboardHolder(clipboard).createPaste(editSession)
.to(BlockVector3.at(loc.getX(), loc.getY(), loc.getZ())).ignoreAirBlocks(false).build();
try {
Operations.complete(operation);
} catch (WorldEditException ex) {
ex.printStackTrace();
}
BlockVector3 min = BlockVector3.at(loc.getX(), loc.getY(), loc.getZ()).subtract(clipboard.getMinimumPoint());
BlockVector3 max = BlockVector3.at(loc.getX(), loc.getY(), loc.getZ()).add(clipboard.getMaximumPoint());
ProtectedRegion region = new ProtectedCuboidRegion(name + "-" + id, min, max);
Map<Flag<?>, Object> flags = new HashMap<Flag<?>, Object>();
flags.put(Flags.BUILD, StateFlag.State.DENY);
flags.put(Flags.BLOCK_BREAK, StateFlag.State.DENY);
flags.put(Flags.BLOCK_PLACE, StateFlag.State.DENY);
flags.put(Flags.CREEPER_EXPLOSION, StateFlag.State.DENY);
region.setFlags(flags);
RegionContainer container = WorldGuard.getInstance().getPlatform().getRegionContainer();
RegionManager regionman = container.get(w);
regionman.addRegion(region);
regions.add(region);
id++;
}
System.out.println("Pasted Schem at " + loc.toString());
}
Das Problem ist momentan noch, dass die Region nicht im Bereich der Schematic ist, die die Vektoren min und max noch nicht stimmen, was daran liegt dass da jeweils das falsche addiere bzw. subtrahiere.
Habe im Internet dazu aus älterer Zeit folgendes gefunden:
Java:
cc.getOffset()
Java:
cc.getSize()