diff --git a/FightSystem/FightSystem_Core/build.gradle.kts b/FightSystem/FightSystem_Core/build.gradle.kts
index 9b2f746b..dfe91b4f 100644
--- a/FightSystem/FightSystem_Core/build.gradle.kts
+++ b/FightSystem/FightSystem_Core/build.gradle.kts
@@ -30,6 +30,7 @@ dependencies {
compileOnly(libs.classindex)
annotationProcessor(libs.classindex)
compileOnly(project(":SpigotCore", "default"))
+ implementation(project(":HiderCore"))
compileOnly(libs.netty)
compileOnly(libs.paperapi)
diff --git a/FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java b/FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java
index 72d728c6..c0b6738f 100644
--- a/FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java
+++ b/FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java
@@ -20,6 +20,7 @@
package de.steamwar.fightsystem.record;
import com.sk89q.worldedit.extent.clipboard.Clipboard;
+import de.steamwar.core.BlockIds;
import de.steamwar.core.worldedit.WorldEditWrapper;
import de.steamwar.entity.REntity;
import de.steamwar.entity.REntityServer;
@@ -40,7 +41,6 @@ import de.steamwar.fightsystem.utils.TechHiderWrapper;
import de.steamwar.sql.SchematicNode;
import de.steamwar.sql.SteamwarUser;
import de.steamwar.sql.Team;
-import de.steamwar.techhider.BlockIds;
import net.md_5.bungee.api.ChatMessageType;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.TextComponent;
diff --git a/FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/utils/Region.java b/FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/utils/Region.java
index 7d75e02a..c28257ef 100644
--- a/FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/utils/Region.java
+++ b/FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/utils/Region.java
@@ -19,7 +19,7 @@
package de.steamwar.fightsystem.utils;
-import de.steamwar.techhider.ProtocolUtils;
+import de.steamwar.core.ProtocolUtils;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.bukkit.Location;
diff --git a/HiderCore/build.gradle.kts b/HiderCore/build.gradle.kts
new file mode 100644
index 00000000..086bf56c
--- /dev/null
+++ b/HiderCore/build.gradle.kts
@@ -0,0 +1,41 @@
+/*
+ * This file is a part of the SteamWar software.
+ *
+ * Copyright (C) 2026 SteamWar.de-Serverteam
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+plugins {
+ steamwar.java
+ widener
+}
+
+java {
+ sourceCompatibility = JavaVersion.VERSION_21
+ targetCompatibility = JavaVersion.VERSION_21
+}
+
+dependencies {
+ compileOnly(project(":SpigotCore", "default"))
+
+ compileOnly(libs.paperapi)
+ compileOnly(libs.nms)
+ compileOnly(libs.netty)
+ compileOnly(libs.fastutil)
+}
+
+widener {
+ fromCatalog(libs.nms)
+}
diff --git a/SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/AccessPrivilegeProvider.java b/HiderCore/src/de/steamwar/techhider/AccessPrivilegeProvider.java
similarity index 100%
rename from SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/AccessPrivilegeProvider.java
rename to HiderCore/src/de/steamwar/techhider/AccessPrivilegeProvider.java
diff --git a/SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/ChunkHider.java b/HiderCore/src/de/steamwar/techhider/ChunkHider.java
similarity index 99%
rename from SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/ChunkHider.java
rename to HiderCore/src/de/steamwar/techhider/ChunkHider.java
index caa9c96b..9ad25a4e 100644
--- a/SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/ChunkHider.java
+++ b/HiderCore/src/de/steamwar/techhider/ChunkHider.java
@@ -19,6 +19,7 @@
package de.steamwar.techhider;
+import de.steamwar.core.ProtocolUtils;
import de.steamwar.techhider.AccessPrivilegeProvider.ForPlayer;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
diff --git a/SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/TechHider.java b/HiderCore/src/de/steamwar/techhider/TechHider.java
similarity index 100%
rename from SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/TechHider.java
rename to HiderCore/src/de/steamwar/techhider/TechHider.java
diff --git a/HiderCore/src/hidercore.accesswidener b/HiderCore/src/hidercore.accesswidener
new file mode 100644
index 00000000..347067a1
--- /dev/null
+++ b/HiderCore/src/hidercore.accesswidener
@@ -0,0 +1,27 @@
+accessWidener v2 named
+
+# For TechHider
+accessible field net/minecraft/network/protocol/game/ClientboundEntityEventPacket entityId I
+accessible field net/minecraft/network/protocol/game/ClientboundMoveEntityPacket entityId I
+accessible field net/minecraft/network/protocol/game/ClientboundRotateHeadPacket entityId I
+accessible field net/minecraft/network/protocol/game/ClientboundSectionBlocksUpdatePacket sectionPos Lnet/minecraft/core/SectionPos;
+accessible field net/minecraft/network/protocol/game/ClientboundSectionBlocksUpdatePacket positions [S
+accessible field net/minecraft/network/protocol/game/ClientboundSectionBlocksUpdatePacket states [Lnet/minecraft/world/level/block/state/BlockState;
+
+# For ChunkHider
+## transitive-extendable means that a public no args constructor is added without any super initialization
+transitive-extendable class net/minecraft/network/protocol/game/ClientboundLevelChunkWithLightPacket
+accessible field net/minecraft/network/protocol/game/ClientboundLevelChunkWithLightPacket chunkData Lnet/minecraft/network/protocol/game/ClientboundLevelChunkPacketData;
+mutable field net/minecraft/network/protocol/game/ClientboundLevelChunkWithLightPacket chunkData Lnet/minecraft/network/protocol/game/ClientboundLevelChunkPacketData;
+
+## transitive-extendable means that a public no args constructor is added without any super initialization
+transitive-extendable class net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData
+accessible field net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData buffer [B
+mutable field net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData buffer [B
+accessible field net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData blockEntitiesData Ljava/util/List;
+mutable field net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData blockEntitiesData Ljava/util/List;
+
+accessible class net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData$BlockEntityInfo
+accessible field net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData$BlockEntityInfo type Lnet/minecraft/world/level/block/entity/BlockEntityType;
+accessible field net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData$BlockEntityInfo packedXZ I
+accessible field net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData$BlockEntityInfo y I
diff --git a/SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/BlockIds.java b/SpigotCore/SpigotCore_Main/src/de/steamwar/core/BlockIds.java
similarity index 98%
rename from SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/BlockIds.java
rename to SpigotCore/SpigotCore_Main/src/de/steamwar/core/BlockIds.java
index b13295bf..c9b41de9 100644
--- a/SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/BlockIds.java
+++ b/SpigotCore/SpigotCore_Main/src/de/steamwar/core/BlockIds.java
@@ -17,7 +17,7 @@
* along with this program. If not, see .
*/
-package de.steamwar.techhider;
+package de.steamwar.core;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.world.level.block.Block;
diff --git a/SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/ProtocolUtils.java b/SpigotCore/SpigotCore_Main/src/de/steamwar/core/ProtocolUtils.java
similarity index 99%
rename from SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/ProtocolUtils.java
rename to SpigotCore/SpigotCore_Main/src/de/steamwar/core/ProtocolUtils.java
index 70d86008..58e8145e 100644
--- a/SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/ProtocolUtils.java
+++ b/SpigotCore/SpigotCore_Main/src/de/steamwar/core/ProtocolUtils.java
@@ -17,7 +17,7 @@
* along with this program. If not, see .
*/
-package de.steamwar.techhider;
+package de.steamwar.core;
import io.netty.buffer.ByteBuf;
diff --git a/SpigotCore/SpigotCore_Main/src/de/steamwar/core/events/AntiNocom.java b/SpigotCore/SpigotCore_Main/src/de/steamwar/core/events/AntiNocom.java
index d3625026..6bce3aa4 100644
--- a/SpigotCore/SpigotCore_Main/src/de/steamwar/core/events/AntiNocom.java
+++ b/SpigotCore/SpigotCore_Main/src/de/steamwar/core/events/AntiNocom.java
@@ -21,9 +21,9 @@ package de.steamwar.core.events;
import com.comphenix.tinyprotocol.TinyProtocol;
import de.steamwar.core.Core;
+import de.steamwar.core.ProtocolUtils;
import de.steamwar.linkage.Linked;
import de.steamwar.sql.SWException;
-import de.steamwar.techhider.ProtocolUtils;
import net.minecraft.core.BlockPos;
import net.minecraft.network.protocol.game.ServerboundPlayerActionPacket;
import net.minecraft.network.protocol.game.ServerboundUseItemOnPacket;
diff --git a/SpigotCore/SpigotCore_Main/src/de/steamwar/entity/RFallingBlockEntity.java b/SpigotCore/SpigotCore_Main/src/de/steamwar/entity/RFallingBlockEntity.java
index 50226dfa..b52187f2 100644
--- a/SpigotCore/SpigotCore_Main/src/de/steamwar/entity/RFallingBlockEntity.java
+++ b/SpigotCore/SpigotCore_Main/src/de/steamwar/entity/RFallingBlockEntity.java
@@ -19,7 +19,7 @@
package de.steamwar.entity;
-import de.steamwar.techhider.BlockIds;
+import de.steamwar.core.BlockIds;
import lombok.Getter;
import lombok.Setter;
import org.bukkit.Location;
diff --git a/SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/legacy/ChunkHider.java b/SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/legacy/ChunkHider.java
index 9aaa9b40..bca91a11 100644
--- a/SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/legacy/ChunkHider.java
+++ b/SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/legacy/ChunkHider.java
@@ -19,7 +19,7 @@
package de.steamwar.techhider.legacy;
-import de.steamwar.techhider.ProtocolUtils;
+import de.steamwar.core.ProtocolUtils;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import lombok.Getter;
diff --git a/SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/legacy/TechHider.java b/SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/legacy/TechHider.java
index dfa0a5f3..5c9cd169 100644
--- a/SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/legacy/TechHider.java
+++ b/SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/legacy/TechHider.java
@@ -20,8 +20,8 @@
package de.steamwar.techhider.legacy;
import com.comphenix.tinyprotocol.TinyProtocol;
-import de.steamwar.techhider.BlockIds;
-import de.steamwar.techhider.ProtocolUtils;
+import de.steamwar.core.BlockIds;
+import de.steamwar.core.ProtocolUtils;
import lombok.Getter;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Vec3i;
diff --git a/SpigotCore/SpigotCore_Main/src/spigotcore.accesswidener b/SpigotCore/SpigotCore_Main/src/spigotcore.accesswidener
index 68d0aa82..99170241 100644
--- a/SpigotCore/SpigotCore_Main/src/spigotcore.accesswidener
+++ b/SpigotCore/SpigotCore_Main/src/spigotcore.accesswidener
@@ -33,11 +33,10 @@ mutable field net/minecraft/network/protocol/game/ClientboundEntityEventPacket e
transitive-extendable class net/minecraft/network/protocol/game/ClientboundRotateHeadPacket
accessible field net/minecraft/network/protocol/game/ClientboundRotateHeadPacket yHeadRot B
mutable field net/minecraft/network/protocol/game/ClientboundRotateHeadPacket yHeadRot B
-## + TechHider
accessible field net/minecraft/network/protocol/game/ClientboundRotateHeadPacket entityId I
mutable field net/minecraft/network/protocol/game/ClientboundRotateHeadPacket entityId I
-# For ChunkHider
+# For legacy/ChunkHider
## transitive-extendable means that a public no args constructor is added without any super initialization
transitive-extendable class net/minecraft/network/protocol/game/ClientboundLevelChunkWithLightPacket
accessible field net/minecraft/network/protocol/game/ClientboundLevelChunkWithLightPacket chunkData Lnet/minecraft/network/protocol/game/ClientboundLevelChunkPacketData;
@@ -55,8 +54,7 @@ accessible field net/minecraft/network/protocol/game/ClientboundLevelChunkPacket
accessible field net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData$BlockEntityInfo packedXZ I
accessible field net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData$BlockEntityInfo y I
-# For TechHider
-accessible field net/minecraft/network/protocol/game/ClientboundMoveEntityPacket entityId I
+# For legacy/TechHider
## transitive-extendable means that a public no args constructor is added without any super initialization
transitive-extendable class net/minecraft/network/protocol/game/ClientboundSectionBlocksUpdatePacket
accessible field net/minecraft/network/protocol/game/ClientboundSectionBlocksUpdatePacket sectionPos Lnet/minecraft/core/SectionPos;
@@ -65,7 +63,6 @@ mutable field net/minecraft/network/protocol/game/ClientboundSectionBlocksUpdate
accessible field net/minecraft/network/protocol/game/ClientboundSectionBlocksUpdatePacket states [Lnet/minecraft/world/level/block/state/BlockState;
mutable field net/minecraft/network/protocol/game/ClientboundSectionBlocksUpdatePacket states [Lnet/minecraft/world/level/block/state/BlockState;
-# For legacy/TechHider
## transitive-extendable means that a public no args constructor is added without any super initialization
transitive-extendable class net/minecraft/network/protocol/game/ClientboundBlockUpdatePacket
mutable field net/minecraft/network/protocol/game/ClientboundBlockUpdatePacket blockState Lnet/minecraft/world/level/block/state/BlockState;
\ No newline at end of file
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 63ec80e5..1b360abf 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -196,6 +196,8 @@ include(
"FightSystem:FightSystem_Standalone"
)
+include("HiderCore")
+
include("KotlinCore")
include("LobbySystem")