COMBAT TRACKING YIPEEEEE
This commit is contained in:
1 parent
e946e076d0
commit
ecaab4bcda
7 files changed
+73
-7
No files matched your search
@@ -13,6 +13,7 @@ base {
|
||||
repositories {
|
||||
maven { url 'https://repo.minebench.de/' }
|
||||
maven { url 'https://maven.nucleoid.xyz' }
|
||||
maven { url 'https://masa.dy.fi/maven' }
|
||||
}
|
||||
|
||||
dependencies {
|
||||
@@ -23,6 +24,7 @@ dependencies {
|
||||
|
||||
// Fabric API. This is technically optional, but you probably want it anyway.
|
||||
modRuntimeOnly(modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}")
|
||||
modRuntimeOnly(modImplementation("carpet:fabric-carpet:${project.minecraft_version}-${project.carpet_version}"))
|
||||
|
||||
include(implementation("net.kyori:adventure-text-minimessage:4.17.0-SNAPSHOT"))
|
||||
include(implementation("net.kyori:adventure-text-serializer-gson:4.17.0-SNAPSHOT"))
|
||||
|
||||
+3
-2
@@ -5,7 +5,7 @@ org.gradle.jvmargs=-Xmx1G
|
||||
# check these on https://modmuss50.me/fabric.html
|
||||
minecraft_version=1.20.6
|
||||
yarn_mappings=1.20.6+build.3
|
||||
loader_version=0.15.6
|
||||
loader_version=0.15.11
|
||||
|
||||
# Mod Properties
|
||||
mod_version = 1.0.0
|
||||
@@ -15,4 +15,5 @@ archives_base_name = nexia-teams
|
||||
# Dependencies
|
||||
# check this on https://modmuss50.me/fabric.html
|
||||
fabric_version=0.100.0+1.20.6
|
||||
gson_version=2.11.0
|
||||
gson_version=2.11.0
|
||||
carpet_version=1.4.141+v240429
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.nexia.teams;
|
||||
|
||||
import com.nexia.teams.commands.CommandLoader;
|
||||
import com.nexia.teams.utilities.CombatUtil;
|
||||
import com.nexia.teams.utilities.chat.ChatFormat;
|
||||
import com.nexia.teams.utilities.time.ServerTime;
|
||||
import net.fabricmc.api.ModInitializer;
|
||||
@@ -30,6 +31,8 @@ public class NexiaTeams implements ModInitializer {
|
||||
ServerPlayer player = handler.getPlayer();
|
||||
|
||||
player.sendSystemMessage(ChatFormat.convertComponent(ChatFormat.nexiaMessage.append(Component.text("Welcome to Nexia Teams!"))));
|
||||
|
||||
CombatUtil.combatLoggedPlayersTimer.remove(player.getUUID());
|
||||
});
|
||||
|
||||
ServerPlayConnectionEvents.DISCONNECT.register((handler, server) -> {
|
||||
@@ -37,9 +40,7 @@ public class NexiaTeams implements ModInitializer {
|
||||
player.getCombatTracker().recheckStatus();
|
||||
|
||||
if(player.getCombatTracker().inCombat) {
|
||||
// idk if this even works
|
||||
ServerTime.minecraftServer.getCommands().performPrefixedCommand(ServerTime.minecraftServer.createCommandSourceStack().withPermission(4).withSuppressedOutput(), "player " + player.getScoreboardName() + " shadow");
|
||||
ServerTime.minecraftServer.getCommands().performPrefixedCommand(ServerTime.minecraftServer.createCommandSourceStack().withPermission(4).withSuppressedOutput(), "player " + player.getScoreboardName() + " spawn");
|
||||
CombatUtil.addPlayer(player);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ public abstract class Meteor {
|
||||
public static ServerPlayer serverPlayer = null;
|
||||
public static int[] meteorCoordinates = new int[]{0, 324, 0};
|
||||
|
||||
public static void tick() {
|
||||
public static void second() {
|
||||
if (scheduledTimestamp == null) return;
|
||||
|
||||
long unixTime = System.currentTimeMillis() / 1000L;
|
||||
|
||||
@@ -45,6 +45,7 @@ public class AxeItemMixin {
|
||||
player.sendSystemMessage(ChatFormat.convertComponent(ChatFormat.nexiaMessage.append(Component.text("Finished editing koth."))));
|
||||
|
||||
kothGame.initialCoordinates = null;
|
||||
player.getInventory().removeItem(useOnContext.getItemInHand());
|
||||
player.removeTag("koth_" + kothName);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
package com.nexia.teams.utilities;
|
||||
|
||||
import com.nexia.teams.utilities.time.ServerTime;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.UUID;
|
||||
|
||||
public class CombatUtil {
|
||||
|
||||
public static final Logger logger = LoggerFactory.getLogger(CombatUtil.class);
|
||||
|
||||
public static HashMap<UUID, Integer> combatLoggedPlayersTimer = new HashMap<>();
|
||||
|
||||
public static void second() {
|
||||
try {
|
||||
CombatUtil.combatLoggedPlayersTimer.forEach(((uuid, integer) -> {
|
||||
ServerPlayer serverPlayer = getPlayer(uuid);
|
||||
int newInt = integer - 1;
|
||||
|
||||
combatLoggedPlayersTimer.replace(uuid, newInt);
|
||||
if(serverPlayer == null || newInt > 0) return;
|
||||
|
||||
CombatUtil.logger.debug("Removing fake player {}: Combat Timer ran out", serverPlayer.getScoreboardName());
|
||||
|
||||
//serverPlayer.connection.disconnect(ChatFormat.convertComponent(Component.text("Combat Log Timer ran out. Disconnecting Bot\n\nIf you are not a bot then please report this issue to the developers.")));
|
||||
serverPlayer.kill();
|
||||
|
||||
combatLoggedPlayersTimer.remove(uuid);
|
||||
}));
|
||||
} catch (Exception ignored) { }
|
||||
|
||||
}
|
||||
|
||||
public static void stop() {
|
||||
CombatUtil.logger.debug("Clearing all fake players.");
|
||||
combatLoggedPlayersTimer.clear();
|
||||
}
|
||||
|
||||
public static boolean addPlayer(ServerPlayer player) {
|
||||
CombatUtil.logger.debug("Spawning player {} as a fake player.", player.getScoreboardName());
|
||||
|
||||
ServerTime.minecraftServer.getCommands().performPrefixedCommand(ServerTime.minecraftServer.createCommandSourceStack().withPermission(4), "player " + player.getScoreboardName() + " shadow");
|
||||
|
||||
combatLoggedPlayersTimer.put(player.getUUID(), player.getCombatTracker().getCombatDuration());
|
||||
|
||||
return getPlayer(player.getUUID()) != null;
|
||||
}
|
||||
|
||||
private static @Nullable ServerPlayer getPlayer(UUID uuid) {
|
||||
return ServerTime.minecraftServer.getPlayerList().getPlayer(uuid);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.google.common.base.Suppliers;
|
||||
import com.nexia.teams.events.koth.KothGame;
|
||||
import com.nexia.teams.events.koth.KothGameHandler;
|
||||
import com.nexia.teams.events.meteor.Meteor;
|
||||
import com.nexia.teams.utilities.CombatUtil;
|
||||
import com.nexia.teams.utilities.chat.ChatFormat;
|
||||
import com.nexia.teams.utilities.data.KothDataManager;
|
||||
import com.nexia.teams.utilities.data.NexiaDataManager;
|
||||
@@ -32,6 +33,7 @@ public abstract class ServerTime {
|
||||
NexiaDataManager.saveNexiaData();
|
||||
KothGameHandler.stopAllKothGames();
|
||||
KothDataManager.saveKothGamesData();
|
||||
CombatUtil.stop();
|
||||
|
||||
try {
|
||||
for (ServerPlayer player : server.getPlayerList().getPlayers()) {
|
||||
@@ -54,7 +56,9 @@ public abstract class ServerTime {
|
||||
static void everySecond() {
|
||||
totalSecondCount++;
|
||||
|
||||
Meteor.tick();
|
||||
Meteor.second();
|
||||
CombatUtil.second();
|
||||
|
||||
long unixTime = System.currentTimeMillis() / 1000L;
|
||||
for (KothGame kothGame : KothGameHandler.kothGames) {
|
||||
if (kothGame.scheduledTimestamp == null) continue;
|
||||
|
||||
Reference in new issue
Block a user