diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..3553992 --- /dev/null +++ b/.classpath @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..b736e4b --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + PhantomCombat + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..cf6931b --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/main/resources=UTF-8 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..d59e09c --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,5 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/src/main/java/io/github/lokka30/phantomcombat/PhantomCombat.java b/src/main/java/io/github/lokka30/phantomcombat/PhantomCombat.java index 234fc93..e247f0d 100644 --- a/src/main/java/io/github/lokka30/phantomcombat/PhantomCombat.java +++ b/src/main/java/io/github/lokka30/phantomcombat/PhantomCombat.java @@ -12,6 +12,7 @@ import net.md_5.bungee.api.ChatMessageType; import net.md_5.bungee.api.chat.TextComponent; import org.bstats.bukkit.Metrics; +import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.bukkit.plugin.PluginManager; @@ -28,6 +29,7 @@ public class PhantomCombat extends JavaPlugin { public FlatFile data; boolean configEnabled = false; public boolean hasWorldGuard = false; + private TempFlyRequirement tempflyRequirement; public Utils utils; public GracePeriodListener gracePeriodListener; @@ -46,6 +48,9 @@ public void onEnable() { log(LogLevel.INFO, "----- ENABLING BEGAN ----"); log(LogLevel.INFO, "&8[&71/5&8] &7Checking compatibility..."); checkCompatibility(); + if (Bukkit.getPluginManager().getPlugin("TempFly") != null) { + try {tempflyRequirement = new TempFlyRequirement();} catch (Exception e) {} + } log(LogLevel.INFO, "&8[&72/5&8] &7Loading files..."); loadFiles(); @@ -86,6 +91,14 @@ private void checkCompatibility() { } } + public TempFlyRequirement getTempFlyHook() { + return tempflyRequirement; + } + + public boolean hasTempFly() { + return tempflyRequirement != null; + } + /* Sets up the files from LightningStorage. */ @@ -229,4 +242,4 @@ public void actionBar(final Player p, final String msg) { p.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(colorize(msg))); } -} +} \ No newline at end of file diff --git a/src/main/java/io/github/lokka30/phantomcombat/listeners/CombatModeListener.java b/src/main/java/io/github/lokka30/phantomcombat/listeners/CombatModeListener.java index 17d92ab..506dd19 100644 --- a/src/main/java/io/github/lokka30/phantomcombat/listeners/CombatModeListener.java +++ b/src/main/java/io/github/lokka30/phantomcombat/listeners/CombatModeListener.java @@ -1,6 +1,5 @@ package io.github.lokka30.phantomcombat.listeners; -import com.moneybags.tempfly.TempFly; import io.github.lokka30.phantomcombat.PhantomCombat; import io.github.lokka30.phantomcombat.utils.CombatCause; import org.bukkit.Bukkit; @@ -26,7 +25,7 @@ public class CombatModeListener implements Listener { private PhantomCombat instance; - + public CombatModeListener(final PhantomCombat instance) { this.instance = instance; } @@ -259,10 +258,6 @@ public void enterCombat(final Player player, CombatCause cause, String extraInfo final int time = instance.settings.get("combat-mode.time", 15); final UUID uuid = player.getUniqueId(); - if (Bukkit.getPluginManager().getPlugin("TempFly") != null) { - TempFly.getAPI().toggleTempfly(player, false, false); - } - if (combatMap.containsKey(uuid)) { //Since the user is already in combat, reset their timer. combatMap.replace(uuid, time); @@ -275,6 +270,10 @@ public void enterCombat(final Player player, CombatCause cause, String extraInfo final boolean useBossBar = instance.messages.get("combat-mode.status.boss-bar.enable", true); final boolean useChat = instance.messages.get("combat-mode.status.chat.enable", true); + if (instance.hasTempFly()) { + instance.getTempFlyHook().enterCombat(player); + } + //Setting reason for combat mode String reason = getReason(cause, extraInfo); @@ -305,11 +304,14 @@ public void run() { cancel.remove(uuid); return; } - + if (cancel.contains(uuid)) { //the combat mode can be forced to expire, e.g. from death. cancel(); + if (instance.hasTempFly()) { + instance.getTempFlyHook().exitCombat(player); + } if (wasAllowedFlight.contains(player)) { player.setAllowFlight(true); } @@ -339,6 +341,9 @@ public void run() { combatMap.remove(uuid); cancel.remove(uuid); combatFinished(player, bossBar, useBossBar, useChat, useActionBar); + if (instance.hasTempFly()) { + instance.getTempFlyHook().exitCombat(player); + } } } }.runTaskTimer(instance, 0, 20); @@ -410,4 +415,4 @@ public String getReason(CombatCause cause, String extraInfo) { } return reason; } -} +} \ No newline at end of file diff --git a/src/main/java/io/github/lokka30/phantomcombat/listeners/TempFlyRequirement.java b/src/main/java/io/github/lokka30/phantomcombat/listeners/TempFlyRequirement.java new file mode 100644 index 0000000..bf03c5b --- /dev/null +++ b/src/main/java/io/github/lokka30/phantomcombat/listeners/TempFlyRequirement.java @@ -0,0 +1,31 @@ +package io.github.lokka30.phantomcombat.listeners; + +import org.bukkit.entity.Player; + +import com.moneybags.tempfly.TempFly; +import com.moneybags.tempfly.fly.RequirementProvider; +import com.moneybags.tempfly.fly.result.FlightResult; +import com.moneybags.tempfly.fly.result.ResultAllow; +import com.moneybags.tempfly.fly.result.ResultDeny; +import com.moneybags.tempfly.util.V; + +public class TempFlyRequirement implements RequirementProvider { + + public TempFlyRequirement() { + TempFly.getAPI().registerRequirementProvider(this); + } + + @Override + public boolean handles(InquiryType type) { + return true; + } + + public void enterCombat(Player p) { + TempFly.getAPI().getUser(p).submitFlightResult(new ResultDeny(FlightResult.DenyReason.COMBAT, this, RequirementProvider.InquiryType.OUT_OF_SCOPE, V.requireFailCombat, !V.damageCombat)); + } + + public void exitCombat(Player p) { + TempFly.getAPI().getUser(p).submitFlightResult(new ResultAllow(this, RequirementProvider.InquiryType.OUT_OF_SCOPE, V.requirePassCombat)); + } + +} diff --git a/src/main/resources/TempFly.jar b/src/main/resources/TempFly.jar index 9b057bf..8f88ff9 100644 Binary files a/src/main/resources/TempFly.jar and b/src/main/resources/TempFly.jar differ