diff --git a/src/main/java/org/ultramine/mods/bukkit/UMBukkitImplMod.java b/src/main/java/org/ultramine/mods/bukkit/UMBukkitImplMod.java index 49e1172..81931ca 100644 --- a/src/main/java/org/ultramine/mods/bukkit/UMBukkitImplMod.java +++ b/src/main/java/org/ultramine/mods/bukkit/UMBukkitImplMod.java @@ -19,8 +19,8 @@ import org.ultramine.mods.bukkit.handler.InternalEventHandler; import org.ultramine.mods.bukkit.handler.PlayerEventHandler; import org.ultramine.mods.bukkit.handler.WorldEventHandler; -import org.ultramine.mods.bukkit.integration.permissions.SuperPermsReplacer; -import org.ultramine.mods.bukkit.integration.permissions.SuperPermsReplacerImpl; +import org.ultramine.mods.bukkit.integration.permissions.b2c.SuperPermsReplacer; +import org.ultramine.mods.bukkit.integration.permissions.b2c.SuperPermsReplacerImpl; @Mod(modid = "UMBukkitImpl", name = "UMBukkitImpl", version = "1.0.0", acceptableRemoteVersions = "*") public class UMBukkitImplMod diff --git a/src/main/java/org/ultramine/mods/bukkit/injected/internal/InjectedUltramineCorePlugin.java b/src/main/java/org/ultramine/mods/bukkit/injected/internal/InjectedUltramineCorePlugin.java index e0d5fc2..4df41da 100644 --- a/src/main/java/org/ultramine/mods/bukkit/injected/internal/InjectedUltramineCorePlugin.java +++ b/src/main/java/org/ultramine/mods/bukkit/injected/internal/InjectedUltramineCorePlugin.java @@ -14,7 +14,7 @@ import org.ultramine.core.service.ServiceBytecodeAdapter; import org.ultramine.core.service.ServiceManager; import org.ultramine.mods.bukkit.injected.internal.economy.VaultEconomyPlayerHoldings; -import org.ultramine.mods.bukkit.injected.internal.permissions.BukkitPermissionsServiceLoader; +import org.ultramine.mods.bukkit.injected.internal.permissions.c2b.BukkitPermissionsServiceLoader; import javax.annotation.Nonnull; diff --git a/src/main/java/org/ultramine/mods/bukkit/injected/internal/permissions/BukkitPermissionsServiceLoader.java b/src/main/java/org/ultramine/mods/bukkit/injected/internal/permissions/BukkitPermissionsServiceLoader.java deleted file mode 100644 index e0a0a47..0000000 --- a/src/main/java/org/ultramine/mods/bukkit/injected/internal/permissions/BukkitPermissionsServiceLoader.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.ultramine.mods.bukkit.injected.internal.permissions; - -import net.milkbowl.vault.chat.Chat; -import net.milkbowl.vault.permission.Permission; -import org.bukkit.Server; -import org.bukkit.plugin.RegisteredServiceProvider; -import org.ultramine.core.permissions.Permissions; -import org.ultramine.core.service.ServiceBytecodeAdapter; -import org.ultramine.core.service.ServiceDelegate; -import org.ultramine.core.service.ServiceProviderLoader; -import org.ultramine.mods.bukkit.integration.permissions.SuperPermsReplacer; - -import javax.annotation.Nullable; - -public class BukkitPermissionsServiceLoader implements ServiceProviderLoader -{ - private static SuperPermsReplacer superPermsReplacer = (SuperPermsReplacer) ServiceBytecodeAdapter.provideService(SuperPermsReplacer.class); - private final Server server; - private boolean superPerms; - - public BukkitPermissionsServiceLoader(Server server) - { - this.server = server; - } - - @Override - public void load(ServiceDelegate service) - { - @Nullable RegisteredServiceProvider regPerms = server.getServicesManager().getRegistration(Permission.class); - @Nullable RegisteredServiceProvider regChat = server.getServicesManager().getRegistration(Chat.class); - if(regPerms == null) - return; - Permission perms = regPerms.getProvider(); - if(perms == null) - return; - superPerms = perms.getClass().getName().endsWith("SuperPerms"); - if(superPerms) - superPermsReplacer.setEnabled(false); - Chat chat = regChat == null ? null : regChat.getProvider(); - service.setProvider(new VaultPermissionsServiceImpl(server, perms, chat)); - } - - @Override - public void unload() - { - if(superPerms) - superPermsReplacer.setEnabled(true); - } -} diff --git a/src/main/java/org/ultramine/mods/bukkit/injected/internal/permissions/SuperPermsPermissionsServiceImpl.java b/src/main/java/org/ultramine/mods/bukkit/injected/internal/permissions/SuperPermsPermissionsServiceImpl.java deleted file mode 100644 index 68d1330..0000000 --- a/src/main/java/org/ultramine/mods/bukkit/injected/internal/permissions/SuperPermsPermissionsServiceImpl.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.ultramine.mods.bukkit.injected.internal.permissions; - -import org.bukkit.Server; -import org.bukkit.entity.Player; -import org.ultramine.core.permissions.Permissions; - -import javax.annotation.Nonnull; - -public class SuperPermsPermissionsServiceImpl implements Permissions -{ - private final Server server; - - public SuperPermsPermissionsServiceImpl(Server server) - { - this.server = server; - } - - @Override - public boolean has(String world, String playerName, String permission) - { - Player player = server.getPlayer(playerName); - return player != null && player.hasPermission(permission); - } - - @Nonnull - @Override - public String getMeta(String world, String player, String key) - { - return ""; - } -} diff --git a/src/main/java/org/ultramine/mods/bukkit/injected/internal/permissions/VaultPermissionsServiceImpl.java b/src/main/java/org/ultramine/mods/bukkit/injected/internal/permissions/VaultPermissionsServiceImpl.java deleted file mode 100644 index a375943..0000000 --- a/src/main/java/org/ultramine/mods/bukkit/injected/internal/permissions/VaultPermissionsServiceImpl.java +++ /dev/null @@ -1,43 +0,0 @@ -package org.ultramine.mods.bukkit.injected.internal.permissions; - -import net.milkbowl.vault.chat.Chat; -import net.milkbowl.vault.permission.Permission; -import org.bukkit.OfflinePlayer; -import org.bukkit.Server; -import org.ultramine.core.permissions.Permissions; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; - -public class VaultPermissionsServiceImpl implements Permissions -{ - private final Server server; - private final Permission perms; - private final @Nullable Chat chat; - - public VaultPermissionsServiceImpl(Server server, Permission perms, @Nullable Chat chat) - { - this.server = server; - this.perms = perms; - this.chat = chat; - } - - @Override - public boolean has(String world, String player, String permission) - { - OfflinePlayer offline = server.getOfflinePlayer(player); - return offline != null && perms.playerHas(world, offline, permission); - } - - @Nonnull - @Override - public String getMeta(String world, String player, String key) - { - if(chat == null) - return ""; - OfflinePlayer offline = server.getOfflinePlayer(player); - if(offline == null) - return ""; - return chat.getPlayerInfoString(world, offline, key, ""); - } -} diff --git a/src/main/java/org/ultramine/mods/bukkit/injected/internal/permissions/c2b/BukkitPermissionsServiceLoader.java b/src/main/java/org/ultramine/mods/bukkit/injected/internal/permissions/c2b/BukkitPermissionsServiceLoader.java new file mode 100644 index 0000000..55bd414 --- /dev/null +++ b/src/main/java/org/ultramine/mods/bukkit/injected/internal/permissions/c2b/BukkitPermissionsServiceLoader.java @@ -0,0 +1,49 @@ +package org.ultramine.mods.bukkit.injected.internal.permissions.c2b; + +import net.milkbowl.vault.chat.Chat; +import net.milkbowl.vault.permission.Permission; +import org.bukkit.Server; +import org.bukkit.plugin.RegisteredServiceProvider; +import org.ultramine.core.permissions.Permissions; +import org.ultramine.core.service.ServiceBytecodeAdapter; +import org.ultramine.core.service.ServiceDelegate; +import org.ultramine.core.service.ServiceProviderLoader; +import org.ultramine.mods.bukkit.integration.permissions.b2c.SuperPermsReplacer; + +import javax.annotation.Nullable; + +public class BukkitPermissionsServiceLoader implements ServiceProviderLoader +{ + private static SuperPermsReplacer superPermsReplacer = (SuperPermsReplacer) ServiceBytecodeAdapter.provideService(SuperPermsReplacer.class); + private final Server server; + private boolean superPerms; + + public BukkitPermissionsServiceLoader(Server server) + { + this.server = server; + } + + @Override + public void load(ServiceDelegate service) + { + @Nullable RegisteredServiceProvider regPerms = server.getServicesManager().getRegistration(Permission.class); + @Nullable RegisteredServiceProvider regChat = server.getServicesManager().getRegistration(Chat.class); + if(regPerms == null) + return; + Permission perms = regPerms.getProvider(); + if(perms == null) + return; + superPerms = perms.getClass().getName().endsWith("SuperPerms"); + if(superPerms) + superPermsReplacer.setEnabled(false); + Chat chat = regChat == null ? null : regChat.getProvider(); + service.setProvider(new VaultPermissionsServiceImpl(server, perms, chat)); + } + + @Override + public void unload() + { + if(superPerms) + superPermsReplacer.setEnabled(true); + } +} diff --git a/src/main/java/org/ultramine/mods/bukkit/injected/internal/permissions/c2b/SuperPermsPermissionsServiceImpl.java b/src/main/java/org/ultramine/mods/bukkit/injected/internal/permissions/c2b/SuperPermsPermissionsServiceImpl.java new file mode 100644 index 0000000..5ec5a02 --- /dev/null +++ b/src/main/java/org/ultramine/mods/bukkit/injected/internal/permissions/c2b/SuperPermsPermissionsServiceImpl.java @@ -0,0 +1,31 @@ +package org.ultramine.mods.bukkit.injected.internal.permissions.c2b; + +import org.bukkit.Server; +import org.bukkit.entity.Player; +import org.ultramine.core.permissions.Permissions; + +import javax.annotation.Nonnull; + +public class SuperPermsPermissionsServiceImpl implements Permissions +{ + private final Server server; + + public SuperPermsPermissionsServiceImpl(Server server) + { + this.server = server; + } + + @Override + public boolean has(String world, String playerName, String permission) + { + Player player = server.getPlayer(playerName); + return player != null && player.hasPermission(permission); + } + + @Nonnull + @Override + public String getMeta(String world, String player, String key) + { + return ""; + } +} diff --git a/src/main/java/org/ultramine/mods/bukkit/injected/internal/permissions/c2b/VaultPermissionsServiceImpl.java b/src/main/java/org/ultramine/mods/bukkit/injected/internal/permissions/c2b/VaultPermissionsServiceImpl.java new file mode 100644 index 0000000..da3a84b --- /dev/null +++ b/src/main/java/org/ultramine/mods/bukkit/injected/internal/permissions/c2b/VaultPermissionsServiceImpl.java @@ -0,0 +1,43 @@ +package org.ultramine.mods.bukkit.injected.internal.permissions.c2b; + +import net.milkbowl.vault.chat.Chat; +import net.milkbowl.vault.permission.Permission; +import org.bukkit.OfflinePlayer; +import org.bukkit.Server; +import org.ultramine.core.permissions.Permissions; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +public class VaultPermissionsServiceImpl implements Permissions +{ + private final Server server; + private final Permission perms; + private final @Nullable Chat chat; + + public VaultPermissionsServiceImpl(Server server, Permission perms, @Nullable Chat chat) + { + this.server = server; + this.perms = perms; + this.chat = chat; + } + + @Override + public boolean has(String world, String player, String permission) + { + OfflinePlayer offline = server.getOfflinePlayer(player); + return offline != null && perms.playerHas(world, offline, permission); + } + + @Nonnull + @Override + public String getMeta(String world, String player, String key) + { + if(chat == null) + return ""; + OfflinePlayer offline = server.getOfflinePlayer(player); + if(offline == null) + return ""; + return chat.getPlayerInfoString(world, offline, key, ""); + } +} diff --git a/src/main/java/org/ultramine/mods/bukkit/integration/permissions/SuperPermsReplacer.java b/src/main/java/org/ultramine/mods/bukkit/integration/permissions/SuperPermsReplacer.java deleted file mode 100644 index 020f497..0000000 --- a/src/main/java/org/ultramine/mods/bukkit/integration/permissions/SuperPermsReplacer.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.ultramine.mods.bukkit.integration.permissions; - -import org.ultramine.core.service.Service; - -@Service -public interface SuperPermsReplacer -{ - void setEnabled(boolean enabled); -} diff --git a/src/main/java/org/ultramine/mods/bukkit/integration/permissions/SuperPermsReplacerImpl.java b/src/main/java/org/ultramine/mods/bukkit/integration/permissions/SuperPermsReplacerImpl.java deleted file mode 100644 index 73ad410..0000000 --- a/src/main/java/org/ultramine/mods/bukkit/integration/permissions/SuperPermsReplacerImpl.java +++ /dev/null @@ -1,55 +0,0 @@ -package org.ultramine.mods.bukkit.integration.permissions; - -import com.google.common.base.Function; -import cpw.mods.fml.common.eventhandler.EventPriority; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import org.bukkit.craftbukkit.entity.CraftPlayer; -import org.bukkit.permissions.PermissibleBase; -import org.ultramine.core.service.EventBusRegisteredService; -import org.ultramine.core.service.InjectService; -import org.ultramine.mods.bukkit.CraftPlayerCache; -import org.ultramine.mods.bukkit.api.CraftPlayerCreationForgeEvent; - -import javax.annotation.Nullable; - -public class SuperPermsReplacerImpl extends EventBusRegisteredService implements SuperPermsReplacer -{ - @InjectService - private static CraftPlayerCache craftPlayerCache; - private boolean enabled; - - @SubscribeEvent(priority = EventPriority.HIGHEST) - public void onCraftPlayerCreate(CraftPlayerCreationForgeEvent e) - { - replace(e.getPlayer()); - } - - private void replace(CraftPlayer player) - { - if(enabled) - player.setPermissible(new UmPermissible(player)); - } - - @Override - public void setEnabled(boolean newEnabled) - { - if(this.enabled != newEnabled) - { - this.enabled = newEnabled; - craftPlayerCache.forEach(new Function() - { - @Nullable - @Override - public Void apply(CraftPlayer input) - { - if(enabled) - input.setPermissible(new UmPermissible(input)); - else if(input.getPermissible().getClass() == UmPermissible.class) - input.setPermissible(new PermissibleBase(input)); - - return null; - } - }); - } - } -} diff --git a/src/main/java/org/ultramine/mods/bukkit/integration/permissions/UmPermissible.java b/src/main/java/org/ultramine/mods/bukkit/integration/permissions/UmPermissible.java deleted file mode 100644 index f45f1a4..0000000 --- a/src/main/java/org/ultramine/mods/bukkit/integration/permissions/UmPermissible.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.ultramine.mods.bukkit.integration.permissions; - -import org.bukkit.entity.Player; -import org.bukkit.permissions.PermissibleBase; -import org.ultramine.core.permissions.Permissions; -import org.ultramine.core.service.InjectService; - -public class UmPermissible extends PermissibleBase -{ - @InjectService - private static Permissions perms; - - private final Player player; - - public UmPermissible(Player player) - { - super(player); - this.player = player; - } - - @Override - public boolean isPermissionSet(String name) - { - return perms.has(player.getWorld().getName(), player.getName(), name) || super.isPermissionSet(name); - } - - @Override - public boolean hasPermission(String inName) - { - return perms.has(player.getWorld().getName(), player.getName(), inName) || super.hasPermission(inName); - } -} diff --git a/src/main/java/org/ultramine/mods/bukkit/integration/permissions/b2c/SuperPermsReplacer.java b/src/main/java/org/ultramine/mods/bukkit/integration/permissions/b2c/SuperPermsReplacer.java new file mode 100644 index 0000000..5e82b14 --- /dev/null +++ b/src/main/java/org/ultramine/mods/bukkit/integration/permissions/b2c/SuperPermsReplacer.java @@ -0,0 +1,9 @@ +package org.ultramine.mods.bukkit.integration.permissions.b2c; + +import org.ultramine.core.service.Service; + +@Service +public interface SuperPermsReplacer +{ + void setEnabled(boolean enabled); +} diff --git a/src/main/java/org/ultramine/mods/bukkit/integration/permissions/b2c/SuperPermsReplacerImpl.java b/src/main/java/org/ultramine/mods/bukkit/integration/permissions/b2c/SuperPermsReplacerImpl.java new file mode 100644 index 0000000..7953e8f --- /dev/null +++ b/src/main/java/org/ultramine/mods/bukkit/integration/permissions/b2c/SuperPermsReplacerImpl.java @@ -0,0 +1,55 @@ +package org.ultramine.mods.bukkit.integration.permissions.b2c; + +import com.google.common.base.Function; +import cpw.mods.fml.common.eventhandler.EventPriority; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import org.bukkit.craftbukkit.entity.CraftPlayer; +import org.bukkit.permissions.PermissibleBase; +import org.ultramine.core.service.EventBusRegisteredService; +import org.ultramine.core.service.InjectService; +import org.ultramine.mods.bukkit.CraftPlayerCache; +import org.ultramine.mods.bukkit.api.CraftPlayerCreationForgeEvent; + +import javax.annotation.Nullable; + +public class SuperPermsReplacerImpl extends EventBusRegisteredService implements SuperPermsReplacer +{ + @InjectService + private static CraftPlayerCache craftPlayerCache; + private boolean enabled; + + @SubscribeEvent(priority = EventPriority.HIGHEST) + public void onCraftPlayerCreate(CraftPlayerCreationForgeEvent e) + { + replace(e.getPlayer()); + } + + private void replace(CraftPlayer player) + { + if(enabled) + player.setPermissible(new UmPermissible(player)); + } + + @Override + public void setEnabled(boolean newEnabled) + { + if(this.enabled != newEnabled) + { + this.enabled = newEnabled; + craftPlayerCache.forEach(new Function() + { + @Nullable + @Override + public Void apply(CraftPlayer input) + { + if(enabled) + input.setPermissible(new UmPermissible(input)); + else if(input.getPermissible().getClass() == UmPermissible.class) + input.setPermissible(new PermissibleBase(input)); + + return null; + } + }); + } + } +} diff --git a/src/main/java/org/ultramine/mods/bukkit/integration/permissions/b2c/UmPermissible.java b/src/main/java/org/ultramine/mods/bukkit/integration/permissions/b2c/UmPermissible.java new file mode 100644 index 0000000..f5a9ece --- /dev/null +++ b/src/main/java/org/ultramine/mods/bukkit/integration/permissions/b2c/UmPermissible.java @@ -0,0 +1,31 @@ +package org.ultramine.mods.bukkit.integration.permissions.b2c; + +import org.bukkit.entity.Player; +import org.bukkit.permissions.PermissibleBase; +import org.ultramine.core.permissions.Permissions; +import org.ultramine.core.service.InjectService; + +public class UmPermissible extends PermissibleBase +{ + @InjectService private static Permissions perms; + + private final Player player; + + public UmPermissible(Player player) + { + super(player); + this.player = player; + } + + @Override + public boolean isPermissionSet(String name) + { + return perms.has(player.getWorld().getName(), player.getName(), name) || super.isPermissionSet(name); + } + + @Override + public boolean hasPermission(String inName) + { + return perms.has(player.getWorld().getName(), player.getName(), inName) || super.hasPermission(inName); + } +}