forked from Upstream/mmocore
Added WG flag 'mmocore-skills'
This commit is contained in:
parent
ec1500fc28
commit
d5a6c66c76
BIN
lib/Residence.jar
Normal file
BIN
lib/Residence.jar
Normal file
Binary file not shown.
7
pom.xml
7
pom.xml
@ -92,6 +92,13 @@
|
|||||||
<scope>system</scope>
|
<scope>system</scope>
|
||||||
<systemPath>${basedir}/lib/spigot.jar</systemPath>
|
<systemPath>${basedir}/lib/spigot.jar</systemPath>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.bekvon.bukkit</groupId>
|
||||||
|
<artifactId>Residence</artifactId>
|
||||||
|
<version>4.8.7.2</version>
|
||||||
|
<scope>system</scope>
|
||||||
|
<systemPath>${basedir}/lib/Residence.jar</systemPath>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.Zrips</groupId>
|
<groupId>com.Zrips</groupId>
|
||||||
<artifactId>CMI</artifactId>
|
<artifactId>CMI</artifactId>
|
||||||
|
@ -34,6 +34,10 @@ import net.Indyuce.mmocore.command.WaypointsCommand;
|
|||||||
import net.Indyuce.mmocore.command.WithdrawCommand;
|
import net.Indyuce.mmocore.command.WithdrawCommand;
|
||||||
import net.Indyuce.mmocore.comp.citizens.CitizenInteractEventListener;
|
import net.Indyuce.mmocore.comp.citizens.CitizenInteractEventListener;
|
||||||
import net.Indyuce.mmocore.comp.citizens.CitizensMMOLoader;
|
import net.Indyuce.mmocore.comp.citizens.CitizensMMOLoader;
|
||||||
|
import net.Indyuce.mmocore.comp.flags.DefaultFlags;
|
||||||
|
import net.Indyuce.mmocore.comp.flags.FlagPlugin;
|
||||||
|
import net.Indyuce.mmocore.comp.flags.ResidenceFlags;
|
||||||
|
import net.Indyuce.mmocore.comp.flags.WorldGuardFlags;
|
||||||
import net.Indyuce.mmocore.comp.holograms.CMIPlugin;
|
import net.Indyuce.mmocore.comp.holograms.CMIPlugin;
|
||||||
import net.Indyuce.mmocore.comp.holograms.HologramSupport;
|
import net.Indyuce.mmocore.comp.holograms.HologramSupport;
|
||||||
import net.Indyuce.mmocore.comp.holograms.HologramsPlugin;
|
import net.Indyuce.mmocore.comp.holograms.HologramsPlugin;
|
||||||
@ -43,12 +47,12 @@ import net.Indyuce.mmocore.comp.mythicmobs.MythicMobsMMOLoader;
|
|||||||
import net.Indyuce.mmocore.comp.placeholder.DefaultParser;
|
import net.Indyuce.mmocore.comp.placeholder.DefaultParser;
|
||||||
import net.Indyuce.mmocore.comp.placeholder.PlaceholderAPIParser;
|
import net.Indyuce.mmocore.comp.placeholder.PlaceholderAPIParser;
|
||||||
import net.Indyuce.mmocore.comp.placeholder.PlaceholderParser;
|
import net.Indyuce.mmocore.comp.placeholder.PlaceholderParser;
|
||||||
|
import net.Indyuce.mmocore.comp.region.DefaultRegionHandler;
|
||||||
|
import net.Indyuce.mmocore.comp.region.RegionHandler;
|
||||||
|
import net.Indyuce.mmocore.comp.region.WorldGuardMMOLoader;
|
||||||
|
import net.Indyuce.mmocore.comp.region.WorldGuardRegionHandler;
|
||||||
import net.Indyuce.mmocore.comp.vault.VaultEconomy;
|
import net.Indyuce.mmocore.comp.vault.VaultEconomy;
|
||||||
import net.Indyuce.mmocore.comp.vault.VaultMMOLoader;
|
import net.Indyuce.mmocore.comp.vault.VaultMMOLoader;
|
||||||
import net.Indyuce.mmocore.comp.worldguard.DefaultRegionHandler;
|
|
||||||
import net.Indyuce.mmocore.comp.worldguard.RegionHandler;
|
|
||||||
import net.Indyuce.mmocore.comp.worldguard.WorldGuardMMOLoader;
|
|
||||||
import net.Indyuce.mmocore.comp.worldguard.WorldGuardRegionHandler;
|
|
||||||
import net.Indyuce.mmocore.listener.BlockListener;
|
import net.Indyuce.mmocore.listener.BlockListener;
|
||||||
import net.Indyuce.mmocore.listener.GoldPouchesListener;
|
import net.Indyuce.mmocore.listener.GoldPouchesListener;
|
||||||
import net.Indyuce.mmocore.listener.GuildListener;
|
import net.Indyuce.mmocore.listener.GuildListener;
|
||||||
@ -103,11 +107,12 @@ public class MMOCore extends JavaPlugin {
|
|||||||
public VaultEconomy economy;
|
public VaultEconomy economy;
|
||||||
public HologramSupport hologramSupport;
|
public HologramSupport hologramSupport;
|
||||||
public InventoryManager inventoryManager;
|
public InventoryManager inventoryManager;
|
||||||
public RegionHandler regionHandler;
|
|
||||||
public PlayerActionBar actionBarManager;
|
public PlayerActionBar actionBarManager;
|
||||||
public final SkillManager skillManager = new SkillManager();
|
public RegionHandler regionHandler = new DefaultRegionHandler();
|
||||||
|
public FlagPlugin flagPlugin = new DefaultFlags();
|
||||||
public PlaceholderParser placeholderParser = new DefaultParser();
|
public PlaceholderParser placeholderParser = new DefaultParser();
|
||||||
public DataProvider dataProvider = new YAMLDataProvider();
|
public DataProvider dataProvider = new YAMLDataProvider();
|
||||||
|
public final SkillManager skillManager = new SkillManager();
|
||||||
public final ClassManager classManager = new ClassManager();
|
public final ClassManager classManager = new ClassManager();
|
||||||
public final DropTableManager dropTableManager = new DropTableManager();
|
public final DropTableManager dropTableManager = new DropTableManager();
|
||||||
public final CustomBlockManager mineManager = new CustomBlockManager();
|
public final CustomBlockManager mineManager = new CustomBlockManager();
|
||||||
@ -171,9 +176,12 @@ public class MMOCore extends JavaPlugin {
|
|||||||
|
|
||||||
if (Bukkit.getPluginManager().getPlugin("WorldGuard") != null) {
|
if (Bukkit.getPluginManager().getPlugin("WorldGuard") != null) {
|
||||||
regionHandler = new WorldGuardRegionHandler();
|
regionHandler = new WorldGuardRegionHandler();
|
||||||
|
flagPlugin = new WorldGuardFlags();
|
||||||
getLogger().log(Level.INFO, "Hooked onto WorldGuard");
|
getLogger().log(Level.INFO, "Hooked onto WorldGuard");
|
||||||
} else
|
} else if (Bukkit.getPluginManager().getPlugin("Residence") != null) {
|
||||||
regionHandler = new DefaultRegionHandler();
|
flagPlugin = new ResidenceFlags();
|
||||||
|
getLogger().log(Level.INFO, "Hooked onto Residence");
|
||||||
|
}
|
||||||
|
|
||||||
if (Bukkit.getPluginManager().getPlugin("HolographicDisplays") != null) {
|
if (Bukkit.getPluginManager().getPlugin("HolographicDisplays") != null) {
|
||||||
hologramSupport = new HolographicDisplaysPlugin();
|
hologramSupport = new HolographicDisplaysPlugin();
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
package net.Indyuce.mmocore.api.skill;
|
package net.Indyuce.mmocore.api.skill;
|
||||||
|
|
||||||
|
import net.Indyuce.mmocore.MMOCore;
|
||||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||||
import net.Indyuce.mmocore.api.skill.Skill.SkillInfo;
|
import net.Indyuce.mmocore.api.skill.Skill.SkillInfo;
|
||||||
|
import net.Indyuce.mmocore.comp.flags.FlagPlugin.CustomFlag;
|
||||||
|
|
||||||
public class SkillResult {
|
public class SkillResult {
|
||||||
private final SkillInfo skill;
|
private final SkillInfo skill;
|
||||||
@ -17,7 +19,11 @@ public class SkillResult {
|
|||||||
cooldown = (skill.getSkill().hasModifier("cooldown") ? data.getSkillData().getCooldown(skill) : 0);
|
cooldown = (skill.getSkill().hasModifier("cooldown") ? data.getSkillData().getCooldown(skill) : 0);
|
||||||
mana = (skill.getSkill().hasModifier("mana") ? skill.getModifier("mana", level) : 0);
|
mana = (skill.getSkill().hasModifier("mana") ? skill.getModifier("mana", level) : 0);
|
||||||
cancelReason = !data.hasSkillUnlocked(skill) ? CancelReason.LOCKED
|
cancelReason = !data.hasSkillUnlocked(skill) ? CancelReason.LOCKED
|
||||||
: cooldown > 0 ? CancelReason.COOLDOWN : mana > data.getMana() ? CancelReason.MANA : null;
|
: cooldown > 0 ? CancelReason.COOLDOWN
|
||||||
|
: mana > data.getMana() ? CancelReason.MANA
|
||||||
|
: !MMOCore.plugin.flagPlugin.isFlagAllowed(data.getPlayer(), CustomFlag.SKILLS)
|
||||||
|
? CancelReason.FLAG
|
||||||
|
: null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SkillResult(PlayerData data, SkillInfo skill, CancelReason reason) {
|
public SkillResult(PlayerData data, SkillInfo skill, CancelReason reason) {
|
||||||
@ -71,6 +77,9 @@ public class SkillResult {
|
|||||||
|
|
||||||
public enum CancelReason {
|
public enum CancelReason {
|
||||||
|
|
||||||
|
// skill flag
|
||||||
|
FLAG,
|
||||||
|
|
||||||
// not enough mana
|
// not enough mana
|
||||||
MANA,
|
MANA,
|
||||||
|
|
||||||
|
@ -0,0 +1,21 @@
|
|||||||
|
package net.Indyuce.mmocore.comp.flags;
|
||||||
|
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class DefaultFlags implements FlagPlugin {
|
||||||
|
// @Override
|
||||||
|
// public boolean isPvpAllowed(Location loc) {
|
||||||
|
// return true;
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isFlagAllowed(Player player, CustomFlag flag) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isFlagAllowed(Location loc, CustomFlag flag) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
20
src/main/java/net/Indyuce/mmocore/comp/flags/FlagPlugin.java
Normal file
20
src/main/java/net/Indyuce/mmocore/comp/flags/FlagPlugin.java
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
package net.Indyuce.mmocore.comp.flags;
|
||||||
|
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public interface FlagPlugin {
|
||||||
|
// public boolean isPvpAllowed(Location loc);
|
||||||
|
|
||||||
|
public boolean isFlagAllowed(Player player, CustomFlag flag);
|
||||||
|
|
||||||
|
public boolean isFlagAllowed(Location loc, CustomFlag flag);
|
||||||
|
|
||||||
|
public enum CustomFlag {
|
||||||
|
SKILLS;
|
||||||
|
|
||||||
|
public String getPath() {
|
||||||
|
return "mmocore-" + name().toLowerCase();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,34 @@
|
|||||||
|
package net.Indyuce.mmocore.comp.flags;
|
||||||
|
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.bekvon.bukkit.residence.Residence;
|
||||||
|
import com.bekvon.bukkit.residence.protection.ClaimedResidence;
|
||||||
|
import com.bekvon.bukkit.residence.protection.FlagPermissions;
|
||||||
|
|
||||||
|
public class ResidenceFlags implements FlagPlugin {
|
||||||
|
public ResidenceFlags() {
|
||||||
|
for (CustomFlag flag : CustomFlag.values())
|
||||||
|
FlagPermissions.addFlag(flag.getPath());
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public boolean isPvpAllowed(Location loc) {
|
||||||
|
// ClaimedResidence res = Residence.getInstance().getResidenceManager().getByLoc(loc);
|
||||||
|
// return res == null || res.getPermissions().has(Flags.pvp, true);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
|
@Override
|
||||||
|
public boolean isFlagAllowed(Player player, CustomFlag flag) {
|
||||||
|
ClaimedResidence res = Residence.getInstance().getResidenceManager().getByLoc(player);
|
||||||
|
return res == null || res.getPermissions().playerHas(player, flag.getPath(), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isFlagAllowed(Location loc, CustomFlag flag) {
|
||||||
|
ClaimedResidence res = Residence.getInstance().getResidenceManager().getByLoc(loc);
|
||||||
|
return res == null || res.getPermissions().has(flag.getPath(), true, true);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,59 @@
|
|||||||
|
package net.Indyuce.mmocore.comp.flags;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.sk89q.worldedit.bukkit.BukkitAdapter;
|
||||||
|
import com.sk89q.worldguard.WorldGuard;
|
||||||
|
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
|
||||||
|
import com.sk89q.worldguard.protection.ApplicableRegionSet;
|
||||||
|
import com.sk89q.worldguard.protection.flags.StateFlag;
|
||||||
|
import com.sk89q.worldguard.protection.flags.registry.FlagRegistry;
|
||||||
|
|
||||||
|
public class WorldGuardFlags implements FlagPlugin {
|
||||||
|
private final WorldGuard worldguard;
|
||||||
|
private final WorldGuardPlugin worldguardPlugin;
|
||||||
|
private final Map<String, StateFlag> flags = new HashMap<>();
|
||||||
|
|
||||||
|
public WorldGuardFlags() {
|
||||||
|
this.worldguard = WorldGuard.getInstance();
|
||||||
|
this.worldguardPlugin = ((WorldGuardPlugin) Bukkit.getServer().getPluginManager()
|
||||||
|
.getPlugin("WorldGuard"));
|
||||||
|
|
||||||
|
FlagRegistry registry = worldguard.getFlagRegistry();
|
||||||
|
for (CustomFlag customFlag : CustomFlag.values()) {
|
||||||
|
StateFlag flag = new StateFlag(customFlag.getPath(), true);
|
||||||
|
try {
|
||||||
|
registry.register(flag);
|
||||||
|
flags.put(customFlag.getPath(), flag);
|
||||||
|
} catch (Exception exception) {
|
||||||
|
exception.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public boolean isPvpAllowed(Location loc) {
|
||||||
|
// return getApplicableRegion(loc).queryState(null, Flags.PVP) != StateFlag.State.DENY;
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isFlagAllowed(Location loc, CustomFlag customFlag) {
|
||||||
|
return getApplicableRegion(loc).queryValue(null, flags.get(customFlag.getPath())) != StateFlag.State.DENY;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isFlagAllowed(Player player, CustomFlag customFlag) {
|
||||||
|
return getApplicableRegion(player.getLocation()).queryValue(worldguardPlugin.wrapPlayer(player),
|
||||||
|
flags.get(customFlag.getPath())) != StateFlag.State.DENY;
|
||||||
|
}
|
||||||
|
|
||||||
|
private ApplicableRegionSet getApplicableRegion(Location loc) {
|
||||||
|
return worldguard.getPlatform().getRegionContainer().createQuery()
|
||||||
|
.getApplicableRegions(BukkitAdapter.adapt(loc));
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package net.Indyuce.mmocore.comp.worldguard;
|
package net.Indyuce.mmocore.comp.region;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
@ -1,4 +1,4 @@
|
|||||||
package net.Indyuce.mmocore.comp.worldguard;
|
package net.Indyuce.mmocore.comp.region;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
@ -1,4 +1,4 @@
|
|||||||
package net.Indyuce.mmocore.comp.worldguard;
|
package net.Indyuce.mmocore.comp.region;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package net.Indyuce.mmocore.comp.worldguard;
|
package net.Indyuce.mmocore.comp.region;
|
||||||
|
|
||||||
import net.Indyuce.mmocore.api.droptable.condition.Condition;
|
import net.Indyuce.mmocore.api.droptable.condition.Condition;
|
||||||
import net.Indyuce.mmocore.api.load.MMOLoader;
|
import net.Indyuce.mmocore.api.load.MMOLoader;
|
@ -1,4 +1,4 @@
|
|||||||
package net.Indyuce.mmocore.comp.worldguard;
|
package net.Indyuce.mmocore.comp.region;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
Loading…
Reference in New Issue
Block a user