Skip to content

Commit

Permalink
Add support for delegating permissions to Sponge.
Browse files Browse the repository at this point in the history
When Sponge is not installed, behaviour is as before.
Closes #331
  • Loading branch information
zml2008 authored and octylFractal committed Jan 12, 2016
1 parent 0d5c115 commit aa3a2d4
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 3 deletions.
1 change: 1 addition & 0 deletions config/checkstyle/import-control.xml
Expand Up @@ -55,6 +55,7 @@
<allow pkg="org.apache.logging.log4j"/>
<allow pkg="org.lwjgl"/>
<allow pkg="io.netty.buffer"/>
<allow pkg="org.spongepowered.api" />
</subpackage>
</subpackage>
</import-control>
7 changes: 6 additions & 1 deletion worldedit-forge/build.gradle
Expand Up @@ -15,9 +15,14 @@ apply plugin: 'forge'

dependencies {
compile project(':worldedit-core')
compile 'org.spongepowered:spongeapi:2.1-SNAPSHOT'
testCompile group: 'org.mockito', name: 'mockito-core', version:'1.9.0-rc1'
}

repositories {
maven { url ="https://repo.spongepowered.org/maven" }
}

minecraft {
ext.forgeVersion = "11.14.0.1281"
version = "1.8-$forgeVersion-1.8"
Expand All @@ -31,7 +36,7 @@ project.archivesBaseName = "${project.archivesBaseName}-mc${minecraft.version}"
processResources {
from (sourceSets.main.resources.srcDirs) {
expand 'version': project.version,
'mcVersion': project.minecraft.version,
'mcVersion': project.minecraft.version,
'forgeVersion': project.minecraft.forgeVersion,
'internalVersion': project.internalVersion
include 'mcmod.info'
Expand Down
Expand Up @@ -23,6 +23,7 @@
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.world.WorldSettings.GameType;
import net.minecraftforge.fml.common.FMLCommonHandler;
import org.spongepowered.api.entity.player.Player;

public interface ForgePermissionsProvider {

Expand All @@ -49,4 +50,17 @@ public boolean hasPermission(EntityPlayerMP player, String permission) {
@Override
public void registerPermission(ICommand command, String permission) {}
}

public static class SpongePermissionsProvider implements ForgePermissionsProvider {

@Override
public boolean hasPermission(EntityPlayerMP player, String permission) {
return ((Player) player).hasPermission(permission);
}

@Override
public void registerPermission(ICommand command, String permission) {

}
}
}
Expand Up @@ -36,6 +36,7 @@
import net.minecraftforge.event.CommandEvent;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.common.Loader;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.Mod.Instance;
Expand All @@ -60,7 +61,7 @@
/**
* The Forge implementation of WorldEdit.
*/
@Mod(modid = ForgeWorldEdit.MOD_ID, name = "WorldEdit", version = "%VERSION%", acceptableRemoteVersions = "*")
@Mod(modid = ForgeWorldEdit.MOD_ID, name = "WorldEdit", version = "%VERSION%", acceptableRemoteVersions = "*", dependencies = "after:Sponge")
public class ForgeWorldEdit {

public static Logger logger;
Expand Down Expand Up @@ -116,7 +117,12 @@ public void serverAboutToStart(FMLServerAboutToStartEvent event) {
this.platform = new ForgePlatform(this);

WorldEdit.getInstance().getPlatformManager().register(platform);
this.provider = new ForgePermissionsProvider.VanillaPermissionsProvider(platform);

if (Loader.isModLoaded("Sponge")) {
this.provider = new ForgePermissionsProvider.SpongePermissionsProvider();
} else {
this.provider = new ForgePermissionsProvider.VanillaPermissionsProvider(platform);
}
}

@EventHandler
Expand Down

0 comments on commit aa3a2d4

Please sign in to comment.