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>
|
||||
<systemPath>${basedir}/lib/spigot.jar</systemPath>
|
||||
</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>
|
||||
<groupId>com.Zrips</groupId>
|
||||
<artifactId>CMI</artifactId>
|
||||
|
@ -34,6 +34,10 @@ import net.Indyuce.mmocore.command.WaypointsCommand;
|
||||
import net.Indyuce.mmocore.command.WithdrawCommand;
|
||||
import net.Indyuce.mmocore.comp.citizens.CitizenInteractEventListener;
|
||||
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.HologramSupport;
|
||||
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.PlaceholderAPIParser;
|
||||
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.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.GoldPouchesListener;
|
||||
import net.Indyuce.mmocore.listener.GuildListener;
|
||||
@ -103,11 +107,12 @@ public class MMOCore extends JavaPlugin {
|
||||
public VaultEconomy economy;
|
||||
public HologramSupport hologramSupport;
|
||||
public InventoryManager inventoryManager;
|
||||
public RegionHandler regionHandler;
|
||||
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 DataProvider dataProvider = new YAMLDataProvider();
|
||||
public final SkillManager skillManager = new SkillManager();
|
||||
public final ClassManager classManager = new ClassManager();
|
||||
public final DropTableManager dropTableManager = new DropTableManager();
|
||||
public final CustomBlockManager mineManager = new CustomBlockManager();
|
||||
@ -171,9 +176,12 @@ public class MMOCore extends JavaPlugin {
|
||||
|
||||
if (Bukkit.getPluginManager().getPlugin("WorldGuard") != null) {
|
||||
regionHandler = new WorldGuardRegionHandler();
|
||||
flagPlugin = new WorldGuardFlags();
|
||||
getLogger().log(Level.INFO, "Hooked onto WorldGuard");
|
||||
} else
|
||||
regionHandler = new DefaultRegionHandler();
|
||||
} else if (Bukkit.getPluginManager().getPlugin("Residence") != null) {
|
||||
flagPlugin = new ResidenceFlags();
|
||||
getLogger().log(Level.INFO, "Hooked onto Residence");
|
||||
}
|
||||
|
||||
if (Bukkit.getPluginManager().getPlugin("HolographicDisplays") != null) {
|
||||
hologramSupport = new HolographicDisplaysPlugin();
|
||||
|
@ -1,7 +1,9 @@
|
||||
package net.Indyuce.mmocore.api.skill;
|
||||
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||
import net.Indyuce.mmocore.api.skill.Skill.SkillInfo;
|
||||
import net.Indyuce.mmocore.comp.flags.FlagPlugin.CustomFlag;
|
||||
|
||||
public class SkillResult {
|
||||
private final SkillInfo skill;
|
||||
@ -17,7 +19,11 @@ public class SkillResult {
|
||||
cooldown = (skill.getSkill().hasModifier("cooldown") ? data.getSkillData().getCooldown(skill) : 0);
|
||||
mana = (skill.getSkill().hasModifier("mana") ? skill.getModifier("mana", level) : 0);
|
||||
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) {
|
||||
@ -71,6 +77,9 @@ public class SkillResult {
|
||||
|
||||
public enum CancelReason {
|
||||
|
||||
// skill flag
|
||||
FLAG,
|
||||
|
||||
// not enough 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.List;
|
@ -1,4 +1,4 @@
|
||||
package net.Indyuce.mmocore.comp.worldguard;
|
||||
package net.Indyuce.mmocore.comp.region;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
@ -1,4 +1,4 @@
|
||||
package net.Indyuce.mmocore.comp.worldguard;
|
||||
package net.Indyuce.mmocore.comp.region;
|
||||
|
||||
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.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.List;
|
Loading…
Reference in New Issue
Block a user