Skip to content

Commit 2f2ceec

Browse files
Add WatcherManager#removeEntityWatcher
1 parent e45e77a commit 2f2ceec

2 files changed

Lines changed: 14 additions & 0 deletions

File tree

src/main/java/com/mmodding/mmodding_lib/library/debug/WatcherManager.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ public static void toggleEntityWatcher(Entity entity) {
2828
}
2929
}
3030

31+
// Used by the integrated server.
32+
public static void removeEntityWatcher(Entity entity) {
33+
WatcherManager.ENTITY_WATCHERS.remove(entity.getUuid());
34+
}
35+
3136
// Used by the client.
3237
public static Set<Map.Entry<UUID, WatcherProvider>> getEntries() {
3338
return WatcherManager.ENTITY_WATCHERS.entrySet();

src/main/java/com/mmodding/mmodding_lib/mixin/injectors/EntityMixin.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.mmodding.mmodding_lib.ducks.PortalForcerDuckInterface;
77
import com.mmodding.mmodding_lib.ducks.ServerPlayerDuckInterface;
88
import com.mmodding.mmodding_lib.interface_injections.EntitySyncableDataRegistry;
9+
import com.mmodding.mmodding_lib.library.debug.WatcherManager;
910
import com.mmodding.mmodding_lib.library.entities.data.syncable.SyncableData;
1011
import com.mmodding.mmodding_lib.library.portals.squared.CustomSquaredPortal;
1112
import com.mmodding.mmodding_lib.library.portals.squared.CustomSquaredPortalBlock;
@@ -16,6 +17,7 @@
1617
import net.minecraft.entity.EntityDimensions;
1718
import net.minecraft.entity.EntityPose;
1819
import net.minecraft.server.MinecraftServer;
20+
import net.minecraft.server.integrated.IntegratedServer;
1921
import net.minecraft.server.network.ServerPlayerEntity;
2022
import net.minecraft.server.world.ServerWorld;
2123
import net.minecraft.state.property.Properties;
@@ -139,6 +141,13 @@ private float changeVelocityMultiplier(float original) {
139141
return original;
140142
}
141143

144+
@Inject(method = "remove", at = @At("HEAD"))
145+
private void remove(Entity.RemovalReason reason, CallbackInfo ci) {
146+
if (this.getWorld() instanceof ServerWorld serverWorld && serverWorld.getServer() instanceof IntegratedServer) {
147+
WatcherManager.removeEntityWatcher((Entity) (Object) this);
148+
}
149+
}
150+
142151
@Override
143152
public SyncableData.Registry getSyncableDataRegistry() {
144153
return this.syncableDataRegistry;

0 commit comments

Comments
 (0)