mirror of
https://github.com/Minestom/Minestom.git
synced 2024-06-23 04:54:59 +02:00
Remove Update#updateTracker, more tracking tests
This commit is contained in:
parent
91eb68661c
commit
9ccc9040df
|
@ -127,11 +127,6 @@ public class Entity implements Viewable, Tickable, Schedulable, TagHandler, Perm
|
|||
public void remove(@NotNull Entity entity) {
|
||||
viewEngine.handleAutoViewRemoval(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateTracker(@NotNull Point point, @Nullable EntityTracker tracker) {
|
||||
viewEngine.updateTracker(point, tracker);
|
||||
}
|
||||
};
|
||||
|
||||
protected final ViewEngine viewEngine = new ViewEngine(this,
|
||||
|
|
|
@ -162,8 +162,6 @@ public sealed interface EntityTracker permits EntityTrackerImpl {
|
|||
void add(@NotNull E entity);
|
||||
|
||||
void remove(@NotNull E entity);
|
||||
|
||||
void updateTracker(@NotNull Point point, @Nullable EntityTracker tracker);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -44,7 +44,6 @@ final class EntityTrackerImpl implements EntityTracker {
|
|||
if (newEntity == entity) return;
|
||||
update.add(newEntity);
|
||||
});
|
||||
update.updateTracker(point, this);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -60,7 +59,6 @@ final class EntityTrackerImpl implements EntityTracker {
|
|||
}
|
||||
if (update != null) {
|
||||
visibleEntities(point, target, update::remove);
|
||||
update.updateTracker(point, null);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -79,8 +77,17 @@ final class EntityTrackerImpl implements EntityTracker {
|
|||
}
|
||||
}
|
||||
if (update != null) {
|
||||
difference(oldPoint, newPoint, target, update);
|
||||
update.updateTracker(newPoint, this);
|
||||
difference(oldPoint, newPoint, target, new Update<>() {
|
||||
@Override
|
||||
public void add(@NotNull T added) {
|
||||
if (entity != added) update.add(added);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove(@NotNull T removed) {
|
||||
if (entity != removed) update.remove(removed);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,12 +1,10 @@
|
|||
package instance;
|
||||
|
||||
import net.minestom.server.coordinate.Point;
|
||||
import net.minestom.server.coordinate.Vec;
|
||||
import net.minestom.server.entity.Entity;
|
||||
import net.minestom.server.entity.EntityType;
|
||||
import net.minestom.server.instance.EntityTracker;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
@ -15,7 +13,7 @@ public class EntityTrackerTest {
|
|||
@Test
|
||||
public void register() {
|
||||
var ent1 = new Entity(EntityType.ZOMBIE);
|
||||
var updated = new EntityTracker.Update<>() {
|
||||
var updater = new EntityTracker.Update<>() {
|
||||
@Override
|
||||
public void add(@NotNull Entity entity) {
|
||||
assertNotSame(ent1, entity);
|
||||
|
@ -27,29 +25,103 @@ public class EntityTrackerTest {
|
|||
assertNotSame(ent1, entity);
|
||||
fail("No other entity should be registered yet");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateTracker(@NotNull Point point, @Nullable EntityTracker tracker) {
|
||||
// Empty
|
||||
}
|
||||
};
|
||||
EntityTracker tracker = EntityTracker.newTracker();
|
||||
var chunkEntities = tracker.chunkEntities(Vec.ZERO, EntityTracker.Target.ENTITIES);
|
||||
assertTrue(chunkEntities.isEmpty());
|
||||
|
||||
tracker.register(ent1, Vec.ZERO, EntityTracker.Target.ENTITIES, updated);
|
||||
tracker.register(ent1, Vec.ZERO, EntityTracker.Target.ENTITIES, updater);
|
||||
assertTrue(chunkEntities.isEmpty());
|
||||
|
||||
chunkEntities = tracker.chunkEntities(Vec.ZERO, EntityTracker.Target.ENTITIES);
|
||||
assertEquals(1, chunkEntities.size());
|
||||
|
||||
tracker.unregister(ent1, Vec.ZERO, EntityTracker.Target.ENTITIES, updated);
|
||||
tracker.unregister(ent1, Vec.ZERO, EntityTracker.Target.ENTITIES, updater);
|
||||
chunkEntities = tracker.chunkEntities(Vec.ZERO, EntityTracker.Target.ENTITIES);
|
||||
assertEquals(0, chunkEntities.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void move() {
|
||||
var ent1 = new Entity(EntityType.ZOMBIE);
|
||||
var updater = new EntityTracker.Update<>() {
|
||||
@Override
|
||||
public void add(@NotNull Entity entity) {
|
||||
fail("No other entity should be registered yet");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove(@NotNull Entity entity) {
|
||||
fail("No other entity should be registered yet");
|
||||
}
|
||||
};
|
||||
|
||||
EntityTracker tracker = EntityTracker.newTracker();
|
||||
|
||||
tracker.register(ent1, Vec.ZERO, EntityTracker.Target.ENTITIES, updater);
|
||||
assertEquals(1, tracker.chunkEntities(Vec.ZERO, EntityTracker.Target.ENTITIES).size());
|
||||
|
||||
tracker.move(ent1, Vec.ZERO, new Vec(32, 0, 32), EntityTracker.Target.ENTITIES, updater);
|
||||
assertEquals(0, tracker.chunkEntities(Vec.ZERO, EntityTracker.Target.ENTITIES).size());
|
||||
assertEquals(1, tracker.chunkEntities(new Vec(32, 0, 32), EntityTracker.Target.ENTITIES).size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void tracking() {
|
||||
var ent1 = new Entity(EntityType.ZOMBIE);
|
||||
var ent2 = new Entity(EntityType.ZOMBIE);
|
||||
|
||||
EntityTracker tracker = EntityTracker.newTracker();
|
||||
tracker.register(ent1, Vec.ZERO, EntityTracker.Target.ENTITIES, new EntityTracker.Update<>() {
|
||||
@Override
|
||||
public void add(@NotNull Entity entity) {
|
||||
fail("No other entity should be registered yet");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove(@NotNull Entity entity) {
|
||||
fail("No other entity should be registered yet");
|
||||
}
|
||||
});
|
||||
|
||||
tracker.register(ent2, Vec.ZERO, EntityTracker.Target.ENTITIES, new EntityTracker.Update<>() {
|
||||
@Override
|
||||
public void add(@NotNull Entity entity) {
|
||||
assertNotSame(ent2, entity);
|
||||
assertSame(ent1, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove(@NotNull Entity entity) {
|
||||
fail("No other entity should be removed yet");
|
||||
}
|
||||
});
|
||||
|
||||
tracker.move(ent1, Vec.ZERO, new Vec(Integer.MAX_VALUE, 0, 0), EntityTracker.Target.ENTITIES, new EntityTracker.Update<>() {
|
||||
@Override
|
||||
public void add(@NotNull Entity entity) {
|
||||
assertNotSame(ent1, entity);
|
||||
fail("No other entity should be added");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove(@NotNull Entity entity) {
|
||||
assertNotSame(ent1, entity);
|
||||
assertSame(ent2, entity);
|
||||
}
|
||||
});
|
||||
|
||||
tracker.move(ent1, new Vec(Integer.MAX_VALUE, 0, 0), Vec.ZERO, EntityTracker.Target.ENTITIES, new EntityTracker.Update<>() {
|
||||
@Override
|
||||
public void add(@NotNull Entity entity) {
|
||||
assertNotSame(ent1, entity);
|
||||
assertSame(ent2, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove(@NotNull Entity entity) {
|
||||
fail("no entity to remove");
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user