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