Skip to content

Commit 6fb8213

Browse files
committed
Initial Sponge API8 work
1 parent 232ced8 commit 6fb8213

15 files changed

+182
-181
lines changed

worldedit-sponge/build.gradle.kts

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,13 @@ applyShadowConfiguration()
99

1010
repositories {
1111
maven { url = uri("https://repo.codemc.org/repository/maven-public") }
12+
maven { url = uri("https://repo-new.spongepowered.org/repository/maven-public/") }
1213
}
1314

1415
dependencies {
1516
compile(project(":worldedit-core"))
1617
compile(project(":worldedit-libs:sponge"))
17-
compile("org.spongepowered:spongeapi:7.1.0")
18+
compile("org.spongepowered:spongeapi:8.0.0-SNAPSHOT")
1819
compile("org.bstats:bstats-sponge:1.7")
1920
testCompile("org.mockito:mockito-core:1.9.0-rc1")
2021
}

worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/CUIChannelHandler.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
package com.sk89q.worldedit.sponge;
2121

2222
import com.sk89q.worldedit.LocalSession;
23+
import org.spongepowered.api.CatalogKey;
2324
import org.spongepowered.api.Platform;
2425
import org.spongepowered.api.Sponge;
2526
import org.spongepowered.api.entity.living.player.Player;
@@ -32,12 +33,12 @@
3233
import java.nio.charset.StandardCharsets;
3334

3435
public class CUIChannelHandler implements RawDataListener {
35-
public static final String CUI_PLUGIN_CHANNEL = "worldedit:cui";
36+
public static final CatalogKey CUI_PLUGIN_CHANNEL = CatalogKey.resolve("worldedit:cui");
3637

3738
private static ChannelBinding.RawDataChannel channel;
3839

3940
public static void init() {
40-
channel = Sponge.getChannelRegistrar().createRawChannel(SpongeWorldEdit.inst(), CUI_PLUGIN_CHANNEL);
41+
channel = Sponge.getChannelRegistrar().createRawChannel(SpongeWorldEdit.container(), CUI_PLUGIN_CHANNEL);
4142
channel.addListener(Platform.Type.SERVER, new CUIChannelHandler());
4243
}
4344

worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/CommandAdapter.java

+10-11
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@
2121

2222
import com.sk89q.worldedit.command.util.PermissionCondition;
2323
import org.enginehub.piston.Command;
24-
import org.spongepowered.api.command.CommandCallable;
25-
import org.spongepowered.api.command.CommandSource;
24+
import org.spongepowered.api.command.CommandCause;
2625
import org.spongepowered.api.text.Text;
2726

2827
import java.util.Collections;
@@ -31,40 +30,40 @@
3130

3231
import static com.sk89q.worldedit.sponge.SpongeTextAdapter.convert;
3332

34-
public abstract class CommandAdapter implements CommandCallable {
33+
public abstract class CommandAdapter implements org.spongepowered.api.command.Command {
3534
private final Command command;
3635

3736
protected CommandAdapter(Command command) {
3837
this.command = command;
3938
}
4039

4140
@Override
42-
public boolean testPermission(CommandSource source) {
41+
public boolean canExecute(CommandCause source) {
4342
Set<String> permissions = command.getCondition().as(PermissionCondition.class)
4443
.map(PermissionCondition::getPermissions)
4544
.orElseGet(Collections::emptySet);
4645
for (String perm : permissions) {
47-
if (source.hasPermission(perm)) {
46+
if (source.getSubject().hasPermission(perm)) {
4847
return true;
4948
}
5049
}
5150
return false;
5251
}
5352

5453
@Override
55-
public Optional<Text> getShortDescription(CommandSource source) {
54+
public Optional<Text> getShortDescription(CommandCause source) {
5655
return Optional.of(command.getDescription())
57-
.map(desc -> SpongeTextAdapter.convert(desc, source.getLocale()));
56+
.map(desc -> SpongeTextAdapter.convert(desc, source.getMessageReceiver().getLocale()));
5857
}
5958

6059
@Override
61-
public Optional<Text> getHelp(CommandSource source) {
60+
public Optional<Text> getHelp(CommandCause source) {
6261
return Optional.of(command.getFullHelp())
63-
.map(help -> SpongeTextAdapter.convert(help, source.getLocale()));
62+
.map(help -> SpongeTextAdapter.convert(help, source.getMessageReceiver().getLocale()));
6463
}
6564

6665
@Override
67-
public Text getUsage(CommandSource source) {
68-
return convert(command.getUsage(), source.getLocale());
66+
public Text getUsage(CommandCause source) {
67+
return convert(command.getUsage(), source.getMessageReceiver().getLocale());
6968
}
7069
}

worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeAdapter.java

+35-27
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,18 @@
1919

2020
package com.sk89q.worldedit.sponge;
2121

22-
import com.flowpowered.math.vector.Vector3d;
2322
import com.sk89q.worldedit.math.BlockVector3;
2423
import com.sk89q.worldedit.math.Vector3;
2524
import com.sk89q.worldedit.util.Location;
2625
import com.sk89q.worldedit.world.World;
2726
import com.sk89q.worldedit.world.biome.BiomeType;
2827
import com.sk89q.worldedit.world.biome.BiomeTypes;
28+
import org.spongepowered.api.CatalogKey;
2929
import org.spongepowered.api.Sponge;
3030
import org.spongepowered.api.entity.living.player.Player;
31+
import org.spongepowered.api.world.server.ServerWorld;
32+
import org.spongepowered.math.vector.Vector3d;
33+
import org.spongepowered.math.vector.Vector3i;
3134

3235
import static com.google.common.base.Preconditions.checkNotNull;
3336

@@ -39,28 +42,13 @@ public class SpongeAdapter {
3942
private SpongeAdapter() {
4043
}
4144

42-
/**
43-
* Create a WorldEdit world from a Sponge extent.
44-
*
45-
* @param world the Sponge extent
46-
* @return a WorldEdit world
47-
*/
48-
public static World checkWorld(org.spongepowered.api.world.extent.Extent world) {
49-
checkNotNull(world);
50-
if (world instanceof org.spongepowered.api.world.World) {
51-
return adapt((org.spongepowered.api.world.World) world);
52-
} else {
53-
throw new IllegalArgumentException("Extent type is not a world");
54-
}
55-
}
56-
5745
/**
5846
* Create a WorldEdit world from a Sponge world.
5947
*
6048
* @param world the Sponge world
6149
* @return a WorldEdit world
6250
*/
63-
public static World adapt(org.spongepowered.api.world.World world) {
51+
public static World adapt(ServerWorld world) {
6452
checkNotNull(world);
6553
return SpongeWorldEdit.inst().getWorld(world);
6654
}
@@ -91,12 +79,12 @@ public static Player adapt(com.sk89q.worldedit.entity.Player player) {
9179
* @param world the WorldEdit world
9280
* @return a Sponge world
9381
*/
94-
public static org.spongepowered.api.world.World adapt(World world) {
82+
public static ServerWorld adapt(World world) {
9583
checkNotNull(world);
9684
if (world instanceof SpongeWorld) {
9785
return ((SpongeWorld) world).getWorld();
9886
} else {
99-
org.spongepowered.api.world.World match = Sponge.getServer().getWorld(world.getName()).orElse(null);
87+
ServerWorld match = Sponge.getServer().getWorldManager().getWorld(world.getName()).orElse(null);
10088
if (match != null) {
10189
return match;
10290
} else {
@@ -106,11 +94,11 @@ public static org.spongepowered.api.world.World adapt(World world) {
10694
}
10795

10896
public static BiomeType adapt(org.spongepowered.api.world.biome.BiomeType biomeType) {
109-
return BiomeTypes.get(biomeType.getId());
97+
return BiomeTypes.get(biomeType.getKey().getFormatted());
11098
}
11199

112100
public static org.spongepowered.api.world.biome.BiomeType adapt(BiomeType biomeType) {
113-
return Sponge.getRegistry().getType(org.spongepowered.api.world.biome.BiomeType.class, biomeType.getId()).orElse(null);
101+
return Sponge.getRegistry().getCatalogRegistry().get(org.spongepowered.api.world.biome.BiomeType.class, CatalogKey.resolve(biomeType.getId())).orElse(null);
114102
}
115103

116104
/**
@@ -119,11 +107,11 @@ public static org.spongepowered.api.world.biome.BiomeType adapt(BiomeType biomeT
119107
* @param location the Sponge location
120108
* @return a WorldEdit location
121109
*/
122-
public static Location adapt(org.spongepowered.api.world.Location<org.spongepowered.api.world.World> location, Vector3d rotation) {
110+
public static Location adapt(org.spongepowered.api.world.Location location, Vector3d rotation) {
123111
checkNotNull(location);
124112
Vector3 position = asVector(location);
125113
return new Location(
126-
adapt(location.getExtent()),
114+
adapt(location.getWorld()),
127115
position,
128116
(float) rotation.getX(),
129117
(float) rotation.getY());
@@ -135,10 +123,10 @@ public static Location adapt(org.spongepowered.api.world.Location<org.spongepowe
135123
* @param location the WorldEdit location
136124
* @return a Sponge location
137125
*/
138-
public static org.spongepowered.api.world.Location<org.spongepowered.api.world.World> adapt(Location location) {
126+
public static org.spongepowered.api.world.Location adapt(Location location) {
139127
checkNotNull(location);
140128
Vector3 position = location.toVector();
141-
return new org.spongepowered.api.world.Location<>(
129+
return org.spongepowered.api.world.Location.of(
142130
adapt((World) location.getExtent()),
143131
position.getX(), position.getY(), position.getZ());
144132
}
@@ -160,7 +148,7 @@ public static Vector3d adaptRotation(Location location) {
160148
* @param location The Bukkit location
161149
* @return a WorldEdit vector
162150
*/
163-
public static Vector3 asVector(org.spongepowered.api.world.Location<org.spongepowered.api.world.World> location) {
151+
public static Vector3 asVector(org.spongepowered.api.world.Location location) {
164152
checkNotNull(location);
165153
return Vector3.at(location.getX(), location.getY(), location.getZ());
166154
}
@@ -171,8 +159,28 @@ public static Vector3 asVector(org.spongepowered.api.world.Location<org.spongepo
171159
* @param location The Bukkit location
172160
* @return a WorldEdit vector
173161
*/
174-
public static BlockVector3 asBlockVector(org.spongepowered.api.world.Location<org.spongepowered.api.world.World> location) {
162+
public static BlockVector3 asBlockVector(org.spongepowered.api.world.Location location) {
175163
checkNotNull(location);
176164
return BlockVector3.at(location.getX(), location.getY(), location.getZ());
177165
}
166+
167+
/**
168+
* Create a WorldEdit BlockVector3 from a Sponge Vector3i.
169+
*
170+
* @param vec The Sponge Vector3i
171+
* @return The WorldEdit BlockVector3
172+
*/
173+
public static BlockVector3 adapt(Vector3i vec) {
174+
return BlockVector3.at(vec.getX(), vec.getY(), vec.getZ());
175+
}
176+
177+
/**
178+
* Create a Sponge Vector3i from a WorldEdit BlockVector3.
179+
*
180+
* @param vec The WorldEdit BlockVector3
181+
* @return The Sponge Vector3i
182+
*/
183+
public static Vector3i adapt(BlockVector3 vec) {
184+
return new Vector3i(vec.getX(), vec.getY(), vec.getZ());
185+
}
178186
}

worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBiomeRegistry.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,9 @@ private SpongeBiomeData(BiomeType biome) {
6060
this.biome = biome;
6161
}
6262

63-
@SuppressWarnings("deprecation")
6463
@Override
6564
public String getName() {
66-
return biome.getName();
65+
return biome.getKey().getFormatted();
6766
}
6867
}
6968

worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeCommandSender.java

+8-7
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@
2727
import com.sk89q.worldedit.util.formatting.WorldEditText;
2828
import com.sk89q.worldedit.util.formatting.text.Component;
2929
import com.sk89q.worldedit.util.formatting.text.adapter.spongeapi.TextAdapter;
30-
import org.spongepowered.api.command.CommandSource;
3130
import org.spongepowered.api.entity.living.player.Player;
3231
import org.spongepowered.api.text.Text;
32+
import org.spongepowered.api.text.channel.MessageReceiver;
3333
import org.spongepowered.api.text.format.TextColor;
3434
import org.spongepowered.api.text.format.TextColors;
3535
import org.spongepowered.api.text.serializer.TextSerializers;
@@ -49,10 +49,10 @@ public class SpongeCommandSender implements Actor {
4949
*/
5050
private static final UUID DEFAULT_ID = UUID.fromString("a233eb4b-4cab-42cd-9fd9-7e7b9a3f74be");
5151

52-
private final CommandSource sender;
52+
private final MessageReceiver sender;
5353
private final SpongeWorldEdit plugin;
5454

55-
public SpongeCommandSender(SpongeWorldEdit plugin, CommandSource sender) {
55+
public SpongeCommandSender(SpongeWorldEdit plugin, MessageReceiver sender) {
5656
checkNotNull(plugin);
5757
checkNotNull(sender);
5858
checkArgument(!(sender instanceof Player), "Cannot wrap a player");
@@ -68,7 +68,8 @@ public UUID getUniqueId() {
6868

6969
@Override
7070
public String getName() {
71-
return sender.getName();
71+
// TODO
72+
return "Unknown Sender";
7273
}
7374

7475
@SuppressWarnings("deprecation")
@@ -81,17 +82,17 @@ public void printRaw(String msg) {
8182

8283
@Override
8384
public void print(String msg) {
84-
sendColorized(msg, TextColors.LIGHT_PURPLE);
85+
sendColorized(msg, TextColors.LIGHT_PURPLE.get());
8586
}
8687

8788
@Override
8889
public void printDebug(String msg) {
89-
sendColorized(msg, TextColors.GRAY);
90+
sendColorized(msg, TextColors.GRAY.get());
9091
}
9192

9293
@Override
9394
public void printError(String msg) {
94-
sendColorized(msg, TextColors.RED);
95+
sendColorized(msg, TextColors.RED.get());
9596
}
9697

9798
@Override

worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeEntity.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,14 @@
1919

2020
package com.sk89q.worldedit.sponge;
2121

22-
import com.flowpowered.math.vector.Vector3d;
2322
import com.sk89q.worldedit.entity.BaseEntity;
2423
import com.sk89q.worldedit.entity.Entity;
2524
import com.sk89q.worldedit.entity.metadata.EntityProperties;
2625
import com.sk89q.worldedit.extent.Extent;
2726
import com.sk89q.worldedit.util.Location;
2827
import com.sk89q.worldedit.world.NullWorld;
29-
import org.spongepowered.api.world.World;
28+
import org.spongepowered.api.world.server.ServerWorld;
29+
import org.spongepowered.math.vector.Vector3d;
3030

3131
import java.lang.ref.WeakReference;
3232
import javax.annotation.Nullable;
@@ -56,7 +56,7 @@ public BaseEntity getState() {
5656
public Location getLocation() {
5757
org.spongepowered.api.entity.Entity entity = entityRef.get();
5858
if (entity != null) {
59-
org.spongepowered.api.world.Location<World> entityLoc = entity.getLocation();
59+
org.spongepowered.api.world.Location entityLoc = entity.getLocation();
6060
Vector3d entityRot = entity.getRotation();
6161

6262
return SpongeWorldEdit.inst().getAdapter().adapt(entityLoc, entityRot);
@@ -79,7 +79,7 @@ public boolean setLocation(Location location) {
7979
public Extent getExtent() {
8080
org.spongepowered.api.entity.Entity entity = entityRef.get();
8181
if (entity != null) {
82-
return SpongeWorldEdit.inst().getAdapter().getWorld(entity.getWorld());
82+
return SpongeWorldEdit.inst().getAdapter().getWorld((ServerWorld) entity.getWorld());
8383
} else {
8484
return NullWorld.getInstance();
8585
}

worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeEntityProperties.java

+6-8
Original file line numberDiff line numberDiff line change
@@ -20,30 +20,28 @@
2020
package com.sk89q.worldedit.sponge;
2121

2222
import com.sk89q.worldedit.entity.metadata.EntityProperties;
23-
import org.spongepowered.api.data.key.Keys;
23+
import org.spongepowered.api.data.Keys;
2424
import org.spongepowered.api.entity.Entity;
2525
import org.spongepowered.api.entity.ExperienceOrb;
2626
import org.spongepowered.api.entity.FallingBlock;
2727
import org.spongepowered.api.entity.Item;
28-
import org.spongepowered.api.entity.explosive.PrimedTNT;
28+
import org.spongepowered.api.entity.explosive.fused.PrimedTNT;
2929
import org.spongepowered.api.entity.hanging.ItemFrame;
3030
import org.spongepowered.api.entity.hanging.Painting;
3131
import org.spongepowered.api.entity.living.Ambient;
3232
import org.spongepowered.api.entity.living.ArmorStand;
33+
import org.spongepowered.api.entity.living.ComplexLivingPart;
3334
import org.spongepowered.api.entity.living.Humanoid;
3435
import org.spongepowered.api.entity.living.Living;
35-
import org.spongepowered.api.entity.living.Villager;
3636
import org.spongepowered.api.entity.living.animal.Animal;
37-
import org.spongepowered.api.entity.living.complex.ComplexLivingPart;
3837
import org.spongepowered.api.entity.living.golem.Golem;
3938
import org.spongepowered.api.entity.living.player.Player;
39+
import org.spongepowered.api.entity.living.trader.Villager;
4040
import org.spongepowered.api.entity.projectile.Projectile;
4141
import org.spongepowered.api.entity.vehicle.Boat;
4242
import org.spongepowered.api.entity.vehicle.minecart.Minecart;
4343
import org.spongepowered.api.text.Text;
4444

45-
import java.util.Optional;
46-
4745
import static com.google.common.base.Preconditions.checkNotNull;
4846

4947
public class SpongeEntityProperties implements EntityProperties {
@@ -132,12 +130,12 @@ public boolean isGolem() {
132130

133131
@Override
134132
public boolean isTamed() {
135-
return entity.get(Keys.TAMED_OWNER).orElse(Optional.empty()).isPresent();
133+
return entity.get(Keys.TAMER).isPresent();
136134
}
137135

138136
@Override
139137
public boolean isTagged() {
140-
return !entity.get(Keys.DISPLAY_NAME).orElse(Text.EMPTY).isEmpty();
138+
return !entity.get(Keys.DISPLAY_NAME).orElse(Text.empty()).isEmpty();
141139
}
142140

143141
@Override

0 commit comments

Comments
 (0)