Update WorldEdit Integration

Breaking, now requires WorldEdit newer than Oct. 18, 2018
This commit is contained in:
Connor Monahan 2018-11-19 14:03:02 -06:00
parent 5e4f0022df
commit a0174935fe
4 changed files with 88 additions and 45 deletions

View File

@ -15,21 +15,17 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> </properties>
<repositories> <repositories>
<repository>
<id>maven.cmastudios.me</id>
<url>https://maven.cmastudios.me/</url>
</repository>
<repository> <repository>
<id>spigot-repo</id> <id>spigot-repo</id>
<url>https://hub.spigotmc.org/nexus/content/groups/public/</url> <url>https://hub.spigotmc.org/nexus/content/groups/public/</url>
</repository> </repository>
<repository>
<id>cma-repo</id>
<url>http://ftp.cmastudios.me/maven/</url>
</repository>
<repository>
<id>tagapi-repo</id>
<url>http://repo.kitteh.org/content/repositories/public/</url>
</repository>
<repository> <repository>
<id>sk89q-repo</id> <id>sk89q-repo</id>
<url>http://maven.sk89q.com/repo/</url> <url>https://maven.sk89q.com/repo/</url>
</repository> </repository>
</repositories> </repositories>
<issueManagement> <issueManagement>
@ -48,8 +44,8 @@
</scm> </scm>
<distributionManagement> <distributionManagement>
<repository> <repository>
<id>cma-repo</id> <id>maven.cmastudios.me</id>
<url>ftp://ftp.cmastudios.me/srv/ftp/maven</url> <url>s3://maven.cmastudios.me/</url>
</repository> </repository>
</distributionManagement> </distributionManagement>
<build> <build>
@ -93,8 +89,9 @@
</plugins> </plugins>
<extensions> <extensions>
<extension> <extension>
<groupId>org.apache.maven.wagon</groupId> <groupId>org.kuali.maven.wagons</groupId>
<artifactId>wagon-ftp</artifactId> <artifactId>maven-s3-wagon</artifactId>
<version>1.2.1</version>
</extension> </extension>
</extensions> </extensions>
<resources> <resources>
@ -137,9 +134,15 @@
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.sk89q</groupId> <groupId>com.sk89q.worldedit</groupId>
<artifactId>worldedit</artifactId> <artifactId>worldedit-bukkit</artifactId>
<version>5.5.8</version> <version>7.0.0-20181118.055910-28</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>com.sk89q.worldedit</groupId>
<artifactId>worldedit-core</artifactId>
<version>7.0.0-20181118.055910-28</version>
<type>jar</type> <type>jar</type>
</dependency> </dependency>
<dependency> <dependency>

View File

@ -1,13 +1,9 @@
package com.tommytony.war.command; package com.tommytony.war.command;
import com.sk89q.worldedit.bukkit.WorldEditPlugin; import com.tommytony.war.War;
import com.sk89q.worldedit.bukkit.selections.CuboidSelection; import com.tommytony.war.utility.Compat;
import com.sk89q.worldedit.bukkit.selections.Selection;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.Location;
import com.tommytony.war.War;
public class SetZoneCommand extends AbstractZoneMakerCommand { public class SetZoneCommand extends AbstractZoneMakerCommand {
@ -30,20 +26,15 @@ public class SetZoneCommand extends AbstractZoneMakerCommand {
} else if (this.args.length > 2) { } else if (this.args.length > 2) {
return false; return false;
} else if (this.args.length == 1) { } else if (this.args.length == 1) {
if (War.war.getServer().getPluginManager().isPluginEnabled("WorldEdit")) { Compat.BlockPair pair = Compat.getWorldEditSelection(player);
WorldEditPlugin worldEdit = (WorldEditPlugin) War.war.getServer().getPluginManager().getPlugin("WorldEdit"); if (pair != null) {
Selection selection = worldEdit.getSelection(player); ZoneSetter setter = new ZoneSetter(player, this.args[0]);
if (selection != null && selection instanceof CuboidSelection) { setter.placeCorner1(pair.getBlock1());
Location min = selection.getMinimumPoint(); setter.placeCorner2(pair.getBlock2());
Location max = selection.getMaximumPoint(); return true;
ZoneSetter setter = new ZoneSetter(player, this.args[0]);
setter.placeCorner1(min.getBlock());
setter.placeCorner2(max.getBlock());
return true;
}
} }
War.war.addWandBearer(player, this.args[0]); War.war.addWandBearer(player, this.args[0]);
} else if (this.args.length == 2) { } else {
if (!this.args[1].equals("southeast") && !this.args[1].equals("northwest") && !this.args[1].equals("se") && !this.args[1].equals("nw") && !this.args[1].equals("corner1") && !this.args[1].equals("corner2") && !this.args[1].equals("c1") && !this.args[1].equals("c2") && !this.args[1].equals("pos1") && !this.args[1].equals("pos2") && !this.args[1].equals("wand")) { if (!this.args[1].equals("southeast") && !this.args[1].equals("northwest") && !this.args[1].equals("se") && !this.args[1].equals("nw") && !this.args[1].equals("corner1") && !this.args[1].equals("corner2") && !this.args[1].equals("c1") && !this.args[1].equals("c2") && !this.args[1].equals("pos1") && !this.args[1].equals("pos2") && !this.args[1].equals("wand")) {
return false; return false;
} }

View File

@ -1,14 +1,11 @@
package com.tommytony.war.ui; package com.tommytony.war.ui;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
import com.sk89q.worldedit.bukkit.selections.CuboidSelection;
import com.sk89q.worldedit.bukkit.selections.Selection;
import com.tommytony.war.War; import com.tommytony.war.War;
import com.tommytony.war.Warzone; import com.tommytony.war.Warzone;
import com.tommytony.war.command.ZoneSetter; import com.tommytony.war.command.ZoneSetter;
import com.tommytony.war.utility.Compat;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;
@ -38,14 +35,13 @@ public class EditOrCreateZoneUI extends ChestUI {
War.war.getUIManager().getPlayerMessage(player, "Select region for zone using WorldEdit and then type a name:", new StringRunnable() { War.war.getUIManager().getPlayerMessage(player, "Select region for zone using WorldEdit and then type a name:", new StringRunnable() {
@Override @Override
public void run() { public void run() {
WorldEditPlugin worldEdit = (WorldEditPlugin) War.war.getServer().getPluginManager().getPlugin("WorldEdit"); Compat.BlockPair pair = Compat.getWorldEditSelection(player);
Selection selection = worldEdit.getSelection(player); if (pair != null) {
if (selection != null && selection instanceof CuboidSelection) {
Location min = selection.getMinimumPoint();
Location max = selection.getMaximumPoint();
ZoneSetter setter = new ZoneSetter(player, this.getValue()); ZoneSetter setter = new ZoneSetter(player, this.getValue());
setter.placeCorner1(min.getBlock()); setter.placeCorner1(pair.getBlock1());
setter.placeCorner2(max.getBlock()); setter.placeCorner2(pair.getBlock2());
} else {
War.war.badMsg(player, "Invalid selection. Creation cancelled.");
} }
} }
}); });

View File

@ -1,6 +1,17 @@
package com.tommytony.war.utility; package com.tommytony.war.utility;
import com.sk89q.worldedit.IncompleteRegionException;
import com.sk89q.worldedit.LocalSession;
import com.sk89q.worldedit.WorldEdit;
import com.sk89q.worldedit.bukkit.BukkitAdapter;
import com.sk89q.worldedit.bukkit.BukkitPlayer;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.regions.CuboidRegion;
import com.sk89q.worldedit.regions.Region;
import com.tommytony.war.War;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.Damageable; import org.bukkit.inventory.meta.Damageable;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
@ -16,4 +27,46 @@ public class Compat {
is.setItemMeta(meta); is.setItemMeta(meta);
return is; return is;
} }
public static class BlockPair {
final Block block1;
final Block block2;
BlockPair(Block block1, Block block2) {
this.block1 = block1;
this.block2 = block2;
}
public Block getBlock1() {
return block1;
}
public Block getBlock2() {
return block2;
}
}
public static BlockPair getWorldEditSelection(Player player) {
if (!War.war.getServer().getPluginManager().isPluginEnabled("WorldEdit")) {
return null;
}
BukkitPlayer wp = BukkitAdapter.adapt(player);
LocalSession session = WorldEdit.getInstance().getSessionManager().get(wp);
try {
Region selection = session.getSelection(wp.getWorld());
if (selection instanceof CuboidRegion) {
BlockVector3 min = selection.getMinimumPoint();
BlockVector3 max = selection.getMaximumPoint();
return new BlockPair(
player.getWorld().getBlockAt(min.getBlockX(), min.getBlockY(), min.getBlockZ()),
player.getWorld().getBlockAt(max.getBlockX(), max.getBlockY(), max.getBlockZ())
);
}
return null;
} catch (IncompleteRegionException e) {
return null;
}
}
} }