From 2824bd67e0c48440e09de8e82c1dadebaf915399 Mon Sep 17 00:00:00 2001
From: TheTechRobo <52163910+TheTechRobo@users.noreply.github.com>
Date: Fri, 4 Nov 2022 11:26:32 -0400
Subject: [PATCH] Several fixes, add licence to pom.xml, clean up code...
Fixes #2
---
.classpath | 2 +-
.settings/org.eclipse.jdt.core.prefs | 6 +++
pom.xml | 47 ++++++++++++++++
.../ca/thetechrobo/fbl/CountdownTimer.java | 32 +++++------
.../ca/thetechrobo/fbl/PlayerTookDamage.java | 54 ++++++++++++++-----
...YouBattleLogged.java => WriteLastHit.java} | 5 +-
6 files changed, 113 insertions(+), 33 deletions(-)
rename src/main/java/ca/thetechrobo/fbl/{NoMoreSayingYouBattleLogged.java => WriteLastHit.java} (79%)
diff --git a/.classpath b/.classpath
index a3508c6..77be441 100644
--- a/.classpath
+++ b/.classpath
@@ -24,7 +24,7 @@
-
+
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
index 4ede96d..eeac0e7 100644
--- a/.settings/org.eclipse.jdt.core.prefs
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -1,2 +1,8 @@
eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
+org.eclipse.jdt.core.compiler.compliance=17
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=17
diff --git a/pom.xml b/pom.xml
index 2735222..4908889 100644
--- a/pom.xml
+++ b/pom.xml
@@ -12,6 +12,20 @@
https://repo.purpurmc.org/snapshots
+
+
+ The Apache Software License, Version 2.0
+ http://www.apache.org/licenses/LICENSE-2.0.txt
+
+
+
+
+ TheTechRobo
+ thetechrobo@protonmail.ch
+ what! the tech
+ https://thetechrobo.ca
+
+
@@ -21,4 +35,37 @@
+
+ 17
+ 17
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.8.1
+
+ 17
+
+
+
+org.apache.maven.plugins
+ maven-source-plugin
+ 3.2.1
+
+
+ attach-source
+ compile
+
+ jar-no-fork
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/ca/thetechrobo/fbl/CountdownTimer.java b/src/main/java/ca/thetechrobo/fbl/CountdownTimer.java
index ae20345..5ab8639 100644
--- a/src/main/java/ca/thetechrobo/fbl/CountdownTimer.java
+++ b/src/main/java/ca/thetechrobo/fbl/CountdownTimer.java
@@ -2,6 +2,7 @@ package ca.thetechrobo.fbl;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
+
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.format.TextColor;
@@ -10,31 +11,30 @@ public class CountdownTimer extends BukkitRunnable {
private int elapsedSeconds;
private int seconds;
private Player player;
- //private JavaPlugin pl;
+ private PlayerTookDamage runner;
- public CountdownTimer(int seconds, Player p) {
- //this.man = Bukkit.getScoreboardManager();
- //this.pl = pl;
+ public CountdownTimer(int seconds, Player p, PlayerTookDamage runner) {
this.elapsedSeconds = 0;
this.player = p;
this.seconds = seconds;
+ this.runner = runner;
}
+
+ public Player getPlayer() {
+ return this.player;
+ }
+
@Override
public void run() {
- if (this.elapsedSeconds <= this.seconds ) {
- /*Scoreboard board = this.man.getNewScoreboard();
- Objective objective = board.registerNewObjective(
- "antibattlelog", "dummy",
- Component.text("Anti-Combat-Log Protection"));
- objective.setDisplaySlot(DisplaySlot.);
- Score score = objective.getScore(player);*/
- TextComponent comp = Component.text("Battle Log Protection - " + (this.seconds - this.elapsedSeconds + "s remaining"))
+ if (this.elapsedSeconds <= this.seconds) {
+ TextComponent comp = Component
+ .text("Battle Log Protection: " + (this.seconds - this.elapsedSeconds + "s remaining"))
.color(TextColor.color(155, 105, 165));
- this.player.sendActionBar(comp);
- this.elapsedSeconds++;
- }
- else {
+ this.player.sendActionBar(comp);
+ this.elapsedSeconds++;
+ } else {
this.player.sendActionBar(Component.text(""));
+ this.runner.removeMe(this);
this.cancel();
}
}
diff --git a/src/main/java/ca/thetechrobo/fbl/PlayerTookDamage.java b/src/main/java/ca/thetechrobo/fbl/PlayerTookDamage.java
index 3332943..80c0387 100644
--- a/src/main/java/ca/thetechrobo/fbl/PlayerTookDamage.java
+++ b/src/main/java/ca/thetechrobo/fbl/PlayerTookDamage.java
@@ -1,6 +1,7 @@
package ca.thetechrobo.fbl;
import java.time.Instant;
+import java.util.HashMap;
import java.util.UUID;
import org.bukkit.Bukkit;
@@ -16,24 +17,31 @@ import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.persistence.PersistentDataContainer;
import org.bukkit.persistence.PersistentDataType;
import org.bukkit.plugin.java.JavaPlugin;
+
import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.format.TextColor;
public class PlayerTookDamage implements Listener {
private JavaPlugin pl;
+ private HashMap map;
+
public PlayerTookDamage(JavaPlugin pl) {
this.pl = pl;
+ this.map = new HashMap();
}
+
private long load_internal_long(Player p, NamespacedKey key, long def) {
PersistentDataContainer c = p.getPersistentDataContainer();
- if (c.has(key, PersistentDataType.LONG)) {
+ if (c.has(key, PersistentDataType.LONG)) {
long i = c.get(key, PersistentDataType.LONG);
return i;
}
return def;
}
+
private String load_internal_str(Player p, NamespacedKey key) {
PersistentDataContainer c = p.getPersistentDataContainer();
- if (c.has(key, PersistentDataType.STRING)) {
+ if (c.has(key, PersistentDataType.STRING)) {
String i = c.get(key, PersistentDataType.STRING);
return i;
}
@@ -42,11 +50,19 @@ public class PlayerTookDamage implements Listener {
@EventHandler
public void playerTookDamage(EntityDamageByEntityEvent e) {
- if (!(e.getEntity().getType() == EntityType.PLAYER)) return;
+ if (!(e.getEntity().getType() == EntityType.PLAYER))
+ return;
Entity damager = e.getDamager();
- if (!(damager.getType() == EntityType.PLAYER)) return;
+ if (!(damager.getType() == EntityType.PLAYER))
+ return;
Player p2 = (Player) damager;
Player p = (Player) e.getEntity();
+ if (this.map.containsKey(p)) {
+ this.map.get(p).cancel();
+ }
+ if (this.map.containsKey(p2)) {
+ this.map.get(p2).cancel();
+ }
long unixTimestamp = Instant.now().getEpochSecond();
NamespacedKey key = new NamespacedKey(this.pl, "AntiBL_LastHit");
NamespacedKey key2 = new NamespacedKey(this.pl, "AntiBL_HitOn");
@@ -54,11 +70,16 @@ public class PlayerTookDamage implements Listener {
p2.getPersistentDataContainer().set(key, PersistentDataType.LONG, unixTimestamp);
p.getPersistentDataContainer().set(key2, PersistentDataType.STRING, p2.getUniqueId().toString());
p2.getPersistentDataContainer().set(key2, PersistentDataType.STRING, p.getUniqueId().toString());
- new CountdownTimer(11, p).runTaskTimer(this.pl, 0, 20);
- new CountdownTimer(11, p2).runTaskTimer(this.pl, 0, 20);
- new NoMoreSayingYouBattleLogged(p, this.pl).runTaskLater(pl, 11*20);
- new NoMoreSayingYouBattleLogged(p2, this.pl).runTaskLater(pl, 11*20);
+ CountdownTimer timerP = new CountdownTimer(11, p, this);
+ CountdownTimer timerP2 = new CountdownTimer(11, p2, this);
+ timerP.runTaskTimer(this.pl, 0, 20);
+ timerP2.runTaskTimer(this.pl, 0, 20);
+ this.map.put(p, timerP);
+ this.map.put(p2, timerP2);
+ new WriteLastHit(p, this.pl).runTaskLater(pl, 11 * 20);
+ new WriteLastHit(p2, this.pl).runTaskLater(pl, 11 * 20);
}
+
@EventHandler
public void playerLeftGame(PlayerQuitEvent e) {
Player p = e.getPlayer();
@@ -67,21 +88,26 @@ public class PlayerTookDamage implements Listener {
long unixTimestamp = Instant.now().getEpochSecond();
long difference = unixTimestamp - lastOldHit;
if (difference < 11) {
- Component pDisplayName = p.displayName();
+ Component pDisplayName = p.displayName().color(TextColor.color(100, 100, 255));
String uu = load_internal_str(p, new NamespacedKey(this.pl, "AntiBL_HitOn"));
- String p2d = "someone";
+ Component p2d = Component.text("someone");
if (uu == null) {
- }
- else {
+ } else {
UUID p2u = UUID.fromString(uu);
OfflinePlayer p2 = Bukkit.getOfflinePlayer(p2u);
- p2d = p2.getName();
+ p2d = Component.text(p2.getName()).color(TextColor.color(200, 100, 150));
}
- Component message = pDisplayName.append(Component.text(" quit during battle with " + p2d))
+ Component message = pDisplayName.append(Component.text(" quit during battle with ").append(p2d))
.append(Component.text("."));
Bukkit.broadcast(message);
p.damage(unixTimestamp); // THAT'S A LOTTA DAMAGE!
p.kick(Component.text("You logged out during PvP and died!"));
}
+ this.map.remove(p);
+ }
+
+ public void removeMe(CountdownTimer timer) {
+ Player p = timer.getPlayer();
+ this.map.remove(p, timer);
}
}
diff --git a/src/main/java/ca/thetechrobo/fbl/NoMoreSayingYouBattleLogged.java b/src/main/java/ca/thetechrobo/fbl/WriteLastHit.java
similarity index 79%
rename from src/main/java/ca/thetechrobo/fbl/NoMoreSayingYouBattleLogged.java
rename to src/main/java/ca/thetechrobo/fbl/WriteLastHit.java
index eea786a..aca59b7 100644
--- a/src/main/java/ca/thetechrobo/fbl/NoMoreSayingYouBattleLogged.java
+++ b/src/main/java/ca/thetechrobo/fbl/WriteLastHit.java
@@ -6,14 +6,15 @@ import org.bukkit.persistence.PersistentDataType;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitRunnable;
-public class NoMoreSayingYouBattleLogged extends BukkitRunnable {
+public class WriteLastHit extends BukkitRunnable {
private Player p;
private JavaPlugin pl;
- public NoMoreSayingYouBattleLogged(Player p, JavaPlugin pl) {
+ public WriteLastHit(Player p, JavaPlugin pl) {
this.p = p;
this.pl = pl;
}
+
@Override
public void run() {
NamespacedKey key = new NamespacedKey(this.pl, "AntiBL_LastHit");