Skip to content

Commit

Permalink
Sponge 8 work
Browse files Browse the repository at this point in the history
Remove text adapter

Debugging the bugs out
  • Loading branch information
octylFractal authored and me4502 committed Jan 7, 2022
1 parent 512a07e commit b1cb8d1
Show file tree
Hide file tree
Showing 63 changed files with 1,930 additions and 929 deletions.
3 changes: 2 additions & 1 deletion buildSrc/build.gradle.kts
Expand Up @@ -50,7 +50,8 @@ dependencies {
implementation("org.ajoberstar.grgit:grgit-gradle:4.1.0")
implementation("gradle.plugin.com.github.johnrengelman:shadow:7.1.0")
implementation("org.jfrog.buildinfo:build-info-extractor-gradle:4.24.23")
implementation("org.spongepowered:SpongeGradle:0.11.5")
implementation("org.spongepowered:spongegradle-plugin-development:1.1.0")
implementation("org.spongepowered:vanillagradle:0.1")
implementation("net.minecraftforge.gradle:ForgeGradle:5.1.26")
implementation("net.fabricmc:fabric-loom:$loomVersion")
implementation("net.fabricmc:sponge-mixin:$mixinVersion")
Expand Down
3 changes: 3 additions & 0 deletions buildSrc/src/main/kotlin/LibsConfig.kt
Expand Up @@ -51,6 +51,9 @@ fun Project.applyLibrariesConfiguration() {
exclude(dependency("org.checkerframework:checker-qual"))
exclude(dependency("org.apache.logging.log4j:log4j-api"))
exclude(dependency("com.google.code.findbugs:jsr305"))
exclude {
it.moduleGroup == "org.jetbrains.kotlin"
}
}

relocations.forEach { (from, to) ->
Expand Down
2 changes: 1 addition & 1 deletion worldedit-core/build.gradle.kts
Expand Up @@ -39,7 +39,7 @@ dependencies {
"implementation"("org.mozilla:rhino-runtime:1.7.13")
"implementation"("org.yaml:snakeyaml:1.26")
"implementation"("com.google.guava:guava")
"implementation"("com.google.code.findbugs:jsr305:1.3.9")
"compileOnlyApi"("com.google.code.findbugs:jsr305:1.3.9")
"implementation"("com.google.code.gson:gson")

"implementation"("org.apache.logging.log4j:log4j-api:${Versions.LOG4J}") {
Expand Down
1 change: 0 additions & 1 deletion worldedit-libs/sponge/build.gradle.kts
Expand Up @@ -8,5 +8,4 @@ repositories {
}
}
dependencies {
"shade"("net.kyori:text-adapter-spongeapi:${Versions.TEXT_EXTRAS}")
}
67 changes: 45 additions & 22 deletions worldedit-sponge/build.gradle.kts
@@ -1,54 +1,77 @@
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
import org.spongepowered.gradle.plugin.config.PluginLoaders
import org.spongepowered.plugin.metadata.PluginDependency

plugins {
id("org.spongepowered.gradle.plugin")
id("org.spongepowered.gradle.vanilla")
}

applyPlatformAndCoreConfiguration()
applyShadowConfiguration()

// I can't believe sponge sets this in a base plugin with no opt-out
convention.getPlugin(JavaPluginConvention::class.java).apply {
setSourceCompatibility(null)
setTargetCompatibility(null)
repositories {
mavenCentral()
}

repositories {
maven { url = uri("https://repo.codemc.org/repository/maven-public") }
minecraft {
version("1.16.5")
}

sponge {
apiVersion("8.0.0")
plugin("worldedit") {
loader(PluginLoaders.JAVA_PLAIN)
displayName("WorldEdit")
version(project.ext["internalVersion"].toString())
mainClass("com.sk89q.worldedit.sponge.SpongeWorldEdit")
description("WorldEdit is an easy-to-use in-game world editor for Minecraft, supporting both single- and multi-player.")
links {
homepage("https://enginehub.org/worldedit/")
source("https://github.com/EngineHub/WorldEdit")
issues("https://github.com/EngineHub/WorldEdit/issues")
}
contributor("EngineHub") {
description("Various members of the EngineHub team")
}
dependency("spongeapi") {
loadOrder(PluginDependency.LoadOrder.AFTER)
optional(false)
}
}
}

dependencies {
api(project(":worldedit-core"))
api(project(":worldedit-libs:sponge"))
api("org.spongepowered:spongeapi:7.1.0") {
api("org.spongepowered:spongeapi:8.0.0-SNAPSHOT") {
exclude(group = "org.slf4j", module = "slf4j-api")
}
implementation(platform("org.apache.logging.log4j:log4j-bom:${Versions.LOG4J}") {
because("Sponge 8 (will?) provides Log4J")
})
api("org.apache.logging.log4j:log4j-api")
api("org.bstats:bstats-sponge:1.7")
testImplementation("org.mockito:mockito-core:1.9.0-rc1")
// bStats isn't updated yet :(
// api("org.bstats:bstats-sponge:2.2.1")
testImplementation("org.mockito:mockito-core:${Versions.MOCKITO}")
}

addJarManifest(WorldEditKind.Mod, includeClasspath = true)

tasks.named<ShadowJar>("shadowJar") {
dependencies {
relocate ("org.bstats", "com.sk89q.worldedit.sponge.bstats") {
include(dependency("org.bstats:bstats-sponge:1.7"))
relocate("org.bstats", "com.sk89q.worldedit.sponge.bstats") {
include(dependency("org.bstats:bstats-sponge"))
}
}
}
include(dependency(":worldedit-core"))

if (project.hasProperty("signing")) {
apply(plugin = "signing")

configure<SigningExtension> {
sign("shadowJar")
}

tasks.named("build").configure {
dependsOn("signShadowJar")
relocate("org.antlr.v4", "com.sk89q.worldedit.sponge.antlr4")
include(dependency("org.antlr:antlr4-runtime"))
relocate("it.unimi.dsi.fastutil", "com.sk89q.worldedit.sponge.fastutil") {
include(dependency("it.unimi.dsi:fastutil"))
}
}
}
tasks.named("assemble").configure {
dependsOn("shadowJar")
}
Expand Up @@ -20,42 +20,48 @@
package com.sk89q.worldedit.sponge;

import com.sk89q.worldedit.LocalSession;
import org.spongepowered.api.Platform;
import org.spongepowered.api.Sponge;
import org.spongepowered.api.entity.living.player.Player;
import org.spongepowered.api.network.ChannelBinding;
import org.spongepowered.api.network.ChannelBuf;
import org.spongepowered.api.network.PlayerConnection;
import org.spongepowered.api.network.RawDataListener;
import org.spongepowered.api.network.RemoteConnection;
import com.sk89q.worldedit.WorldEdit;
import com.sk89q.worldedit.util.lifecycle.SimpleLifecycled;
import org.spongepowered.api.ResourceKey;
import org.spongepowered.api.entity.living.player.server.ServerPlayer;
import org.spongepowered.api.event.Listener;
import org.spongepowered.api.event.lifecycle.RegisterChannelEvent;
import org.spongepowered.api.network.ServerPlayerConnection;
import org.spongepowered.api.network.channel.ChannelBuf;
import org.spongepowered.api.network.channel.raw.RawDataChannel;
import org.spongepowered.api.network.channel.raw.play.RawPlayDataHandler;

import java.nio.charset.StandardCharsets;

public class CUIChannelHandler implements RawDataListener {
public static final String CUI_PLUGIN_CHANNEL = "worldedit:cui";
public class CUIChannelHandler implements RawPlayDataHandler<ServerPlayerConnection> {
public static final ResourceKey CUI_PLUGIN_CHANNEL = ResourceKey.of("worldedit", "cui");
private static final SimpleLifecycled<RawDataChannel> CHANNEL = SimpleLifecycled.invalid();

private static ChannelBinding.RawDataChannel channel;

public static void init() {
channel = Sponge.getChannelRegistrar().createRawChannel(SpongeWorldEdit.inst(), CUI_PLUGIN_CHANNEL);
channel.addListener(Platform.Type.SERVER, new CUIChannelHandler());
public static final class RegistrationHandler {
@Listener
public void onChannelRegistration(RegisterChannelEvent event) {
RawDataChannel channel = event.register(CUI_PLUGIN_CHANNEL, RawDataChannel.class);
channel.play().addHandler(ServerPlayerConnection.class, new CUIChannelHandler());
CHANNEL.newValue(channel);
}
}


public static ChannelBinding.RawDataChannel getActiveChannel() {
return channel;
public static RawDataChannel channel() {
return CHANNEL.valueOrThrow();
}

@Override
public void handlePayload(ChannelBuf data, RemoteConnection connection, Platform.Type side) {
if (connection instanceof PlayerConnection) {
Player player = ((PlayerConnection) connection).getPlayer();
public void handlePayload(ChannelBuf data, ServerPlayerConnection connection) {
ServerPlayer player = connection.player();

LocalSession session = SpongeWorldEdit.inst().getSession(player);
SpongePlayer spongePlayer = SpongeAdapter.adapt(player);
LocalSession session = WorldEdit.getInstance().getSessionManager().get(
spongePlayer
);

final SpongePlayer actor = SpongeWorldEdit.inst().wrapPlayer(player);
session.handleCUIInitializationMessage(new String(data.readBytes(data.available()), StandardCharsets.UTF_8),
actor);
}
session.handleCUIInitializationMessage(
new String(data.readBytes(data.available()), StandardCharsets.UTF_8),
spongePlayer
);
}
}
Expand Up @@ -20,51 +20,56 @@
package com.sk89q.worldedit.sponge;

import com.sk89q.worldedit.command.util.PermissionCondition;
import com.sk89q.worldedit.sponge.internal.LocaleResolver;
import net.kyori.adventure.text.Component;
import org.checkerframework.checker.nullness.qual.NonNull;
import org.enginehub.piston.Command;
import org.spongepowered.api.command.CommandCallable;
import org.spongepowered.api.command.CommandSource;
import org.spongepowered.api.text.Text;
import org.spongepowered.api.command.CommandCause;

import java.util.Collections;
import java.util.Optional;
import java.util.Set;

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

public abstract class CommandAdapter implements CommandCallable {
public abstract class CommandAdapter implements org.spongepowered.api.command.Command.Raw {
private final Command command;

protected CommandAdapter(Command command) {
this.command = command;
}

@Override
public boolean testPermission(CommandSource source) {
public boolean canExecute(CommandCause cause) {
Set<String> permissions = command.getCondition().as(PermissionCondition.class)
.map(PermissionCondition::getPermissions)
.orElseGet(Collections::emptySet);
for (String perm : permissions) {
if (source.hasPermission(perm)) {
if (cause.hasPermission(perm)) {
return true;
}
}
return false;
}

@Override
public Optional<Text> getShortDescription(CommandSource source) {
public Optional<Component> shortDescription(CommandCause cause) {
return Optional.of(command.getDescription())
.map(desc -> SpongeTextAdapter.convert(desc, source.getLocale()));
.map(desc -> SpongeTextAdapter.convert(desc, LocaleResolver.resolveLocale(cause.audience())));
}

@Override
public Optional<Component> extendedDescription(CommandCause cause) {
return command.getFooter()
.map(footer -> SpongeTextAdapter.convert(footer, LocaleResolver.resolveLocale(cause.audience())));
}

@Override
public Optional<Text> getHelp(CommandSource source) {
public Optional<Component> help(@NonNull CommandCause cause) {
return Optional.of(command.getFullHelp())
.map(help -> SpongeTextAdapter.convert(help, source.getLocale()));
.map(help -> SpongeTextAdapter.convert(help, LocaleResolver.resolveLocale(cause.audience())));
}

@Override
public Text getUsage(CommandSource source) {
return convert(command.getUsage(), source.getLocale());
public Component usage(CommandCause cause) {
return SpongeTextAdapter.convert(command.getUsage(), LocaleResolver.resolveLocale(cause.audience()));
}
}
Expand Up @@ -17,25 +17,23 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/

package com.sk89q.worldedit.sponge.adapter;
package com.sk89q.worldedit.sponge;

import org.spongepowered.api.data.persistence.DataQuery;

/**
* Thrown when no adapter can be found.
* Kinda mirrors Sponge Common's Constants class.
*
* <p>Internal. Do not use.</p>
*/
public class AdapterLoadException extends Exception {

public AdapterLoadException() {
}

public AdapterLoadException(String message) {
super(message);
}
public class Constants {
public static class Sponge {
public static final DataQuery UNSAFE_NBT = DataQuery.of("UnsafeData");

public AdapterLoadException(String message, Throwable cause) {
super(message, cause);
private Sponge() {
}
}

public AdapterLoadException(Throwable cause) {
super(cause);
private Constants() {
}
}

0 comments on commit b1cb8d1

Please sign in to comment.