diff --git a/src/main/java/net/minestom/server/entity/Entity.java b/src/main/java/net/minestom/server/entity/Entity.java
index 04029d7ad..8d74a026e 100644
--- a/src/main/java/net/minestom/server/entity/Entity.java
+++ b/src/main/java/net/minestom/server/entity/Entity.java
@@ -15,16 +15,9 @@ import net.minestom.server.collision.CollisionUtils;
import net.minestom.server.coordinate.Point;
import net.minestom.server.coordinate.Pos;
import net.minestom.server.coordinate.Vec;
-import net.minestom.server.data.Data;
-import net.minestom.server.data.DataContainer;
import net.minestom.server.entity.metadata.EntityMeta;
-import net.minestom.server.event.EventCallback;
import net.minestom.server.event.EventDispatcher;
-import net.minestom.server.event.EventFilter;
-import net.minestom.server.event.EventNode;
import net.minestom.server.event.entity.*;
-import net.minestom.server.event.handler.EventHandler;
-import net.minestom.server.event.trait.EntityEvent;
import net.minestom.server.instance.Chunk;
import net.minestom.server.instance.Instance;
import net.minestom.server.instance.InstanceManager;
@@ -65,7 +58,7 @@ import java.util.function.UnaryOperator;
*
* To create your own entity you probably want to extends {@link LivingEntity} or {@link EntityCreature} instead.
*/
-public class Entity implements Viewable, Tickable, EventHandler, DataContainer, TagHandler, PermissionHandler, HoverEventSource, Sound.Emitter {
+public class Entity implements Viewable, Tickable, TagHandler, PermissionHandler, HoverEventSource, Sound.Emitter {
private static final Map ENTITY_BY_ID = new ConcurrentHashMap<>();
private static final Map ENTITY_BY_UUID = new ConcurrentHashMap<>();
@@ -103,7 +96,6 @@ public class Entity implements Viewable, Tickable, EventHandler, Da
private final int id;
protected final Set viewers = ConcurrentHashMap.newKeySet();
private final Set unmodifiableViewers = Collections.unmodifiableSet(viewers);
- private Data data;
private final NBTCompound nbtCompound = new NBTCompound();
private final Set permissions = new CopyOnWriteArraySet<>();
@@ -121,9 +113,6 @@ public class Entity implements Viewable, Tickable, EventHandler, Da
private Duration customSynchronizationCooldown;
private long lastAbsoluteSynchronizationTime;
- // Events
- private final EventNode eventNode;
-
protected Metadata metadata = new Metadata(this);
protected EntityMeta entityMeta;
@@ -159,8 +148,6 @@ public class Entity implements Viewable, Tickable, EventHandler, Da
Entity.ENTITY_BY_ID.put(id, this);
Entity.ENTITY_BY_UUID.put(uuid, this);
- this.eventNode = EventNode.value("entity-" + uuid, EventFilter.ENTITY, this::equals);
-
initializeDefaultGravity();
}
@@ -405,16 +392,6 @@ public class Entity implements Viewable, Tickable, EventHandler, Da
}
}
- @Override
- public Data getData() {
- return data;
- }
-
- @Override
- public void setData(@Nullable Data data) {
- this.data = data;
- }
-
@NotNull
@Override
public Set getAllPermissions() {
@@ -715,19 +692,6 @@ public class Entity implements Viewable, Tickable, EventHandler, Da
}
}
- @Override
- public @NotNull EventNode getEventNode() {
- return eventNode;
- }
-
- @Override
- public synchronized boolean addEventCallback(@NotNull Class eventClass, @NotNull EventCallback eventCallback) {
- if (eventNode.getParent() == null) {
- MinecraftServer.getGlobalEventHandler().addChild(eventNode);
- }
- return EventHandler.super.addEventCallback(eventClass, eventCallback);
- }
-
/**
* Each entity has an unique id (server-wide) which will change after a restart.
*
diff --git a/src/main/java/net/minestom/server/entity/fakeplayer/FakePlayer.java b/src/main/java/net/minestom/server/entity/fakeplayer/FakePlayer.java
index 163cfbd35..ad5202b50 100644
--- a/src/main/java/net/minestom/server/entity/fakeplayer/FakePlayer.java
+++ b/src/main/java/net/minestom/server/entity/fakeplayer/FakePlayer.java
@@ -7,6 +7,7 @@ import net.minestom.server.coordinate.Pos;
import net.minestom.server.entity.Player;
import net.minestom.server.entity.pathfinding.NavigableEntity;
import net.minestom.server.entity.pathfinding.Navigator;
+import net.minestom.server.event.EventListener;
import net.minestom.server.event.player.PlayerSpawnEvent;
import net.minestom.server.instance.Instance;
import net.minestom.server.network.ConnectionManager;
@@ -54,12 +55,15 @@ public class FakePlayer extends Player implements NavigableEntity {
this.fakePlayerController = new FakePlayerController(this);
if (spawnCallback != null) {
- addEventCallback(PlayerSpawnEvent.class,
- event -> {
- if (event.isFirstSpawn()) {
- spawnCallback.accept(this);
- }
- });
+ // FIXME
+ MinecraftServer.getGlobalEventHandler().addListener(
+ EventListener.builder(PlayerSpawnEvent.class)
+ .expireCount(1)
+ .handler(event -> {
+ if (event.isFirstSpawn()) {
+ spawnCallback.accept(this);
+ }
+ }).build());
}
CONNECTION_MANAGER.startPlayState(this, option.isRegistered());
diff --git a/src/main/java/net/minestom/server/instance/Instance.java b/src/main/java/net/minestom/server/instance/Instance.java
index c58f59d55..0c94fd10d 100644
--- a/src/main/java/net/minestom/server/instance/Instance.java
+++ b/src/main/java/net/minestom/server/instance/Instance.java
@@ -9,25 +9,18 @@ import net.minestom.server.adventure.audience.PacketGroupingAudience;
import net.minestom.server.coordinate.Point;
import net.minestom.server.coordinate.Pos;
import net.minestom.server.data.Data;
-import net.minestom.server.data.DataContainer;
import net.minestom.server.entity.Entity;
import net.minestom.server.entity.EntityCreature;
import net.minestom.server.entity.ExperienceOrb;
import net.minestom.server.entity.Player;
import net.minestom.server.entity.pathfinding.PFInstanceSpace;
-import net.minestom.server.event.EventCallback;
import net.minestom.server.event.EventDispatcher;
-import net.minestom.server.event.EventFilter;
-import net.minestom.server.event.EventNode;
-import net.minestom.server.event.handler.EventHandler;
import net.minestom.server.event.instance.AddEntityToInstanceEvent;
import net.minestom.server.event.instance.InstanceTickEvent;
import net.minestom.server.event.instance.RemoveEntityFromInstanceEvent;
-import net.minestom.server.event.trait.InstanceEvent;
import net.minestom.server.instance.block.*;
import net.minestom.server.network.packet.server.play.BlockActionPacket;
import net.minestom.server.network.packet.server.play.TimeUpdatePacket;
-import net.minestom.server.storage.StorageLocation;
import net.minestom.server.tag.Tag;
import net.minestom.server.tag.TagHandler;
import net.minestom.server.thread.ThreadProvider;
@@ -61,7 +54,7 @@ import java.util.function.Consumer;
* you need to be sure to signal the {@link UpdateManager} of the changes using
* {@link UpdateManager#signalChunkLoad(Chunk)} and {@link UpdateManager#signalChunkUnload(Chunk)}.
*/
-public abstract class Instance implements BlockGetter, BlockSetter, Tickable, TagHandler, EventHandler, DataContainer, PacketGroupingAudience {
+public abstract class Instance implements BlockGetter, BlockSetter, Tickable, TagHandler, PacketGroupingAudience {
protected static final BlockManager BLOCK_MANAGER = MinecraftServer.getBlockManager();
protected static final UpdateManager UPDATE_MANAGER = MinecraftServer.getUpdateManager();
@@ -84,8 +77,6 @@ public abstract class Instance implements BlockGetter, BlockSetter, Tickable, Ta
// Field for tick events
private long lastTickAge = System.currentTimeMillis();
- private final EventNode eventNode;
-
// Entities present in this instance
protected final Set entities = ConcurrentHashMap.newKeySet();
protected final Set players = ConcurrentHashMap.newKeySet();
@@ -104,7 +95,6 @@ public abstract class Instance implements BlockGetter, BlockSetter, Tickable, Ta
// instance custom data
private final Object nbtLock = new Object();
private final NBTCompound nbt = new NBTCompound();
- private Data data;
// the explosion supplier
private ExplosionSupplier explosionSupplier;
@@ -129,8 +119,6 @@ public abstract class Instance implements BlockGetter, BlockSetter, Tickable, Ta
this.worldBorder = new WorldBorder(this);
- this.eventNode = EventNode.value("instance-" + uniqueId, EventFilter.INSTANCE, this::equals);
-
this.pointers = Pointers.builder()
.withDynamic(Identity.UUID, this::getUniqueId)
.build();
@@ -273,21 +261,6 @@ public abstract class Instance implements BlockGetter, BlockSetter, Tickable, Ta
*/
public abstract @NotNull Collection<@NotNull Chunk> getChunks();
- /**
- * Gets the instance {@link StorageLocation}.
- *
- * @return the {@link StorageLocation} of the instance
- */
- @Nullable
- public abstract StorageLocation getStorageLocation();
-
- /**
- * Changes the instance {@link StorageLocation}.
- *
- * @param storageLocation the new {@link StorageLocation} of the instance
- */
- public abstract void setStorageLocation(@Nullable StorageLocation storageLocation);
-
/**
* When set to true, chunks will load automatically when requested.
* Otherwise using {@link #loadChunk(int, int)} will be required to even spawn a player
@@ -578,35 +551,11 @@ public abstract class Instance implements BlockGetter, BlockSetter, Tickable, Ta
*
* @return the instance unique id
*/
- @NotNull
- public UUID getUniqueId() {
+ public @NotNull UUID getUniqueId() {
return uniqueId;
}
- @Override
- public Data getData() {
- return data;
- }
-
- @Override
- public void setData(@Nullable Data data) {
- this.data = data;
- }
-
- @Override
- public @NotNull EventNode getEventNode() {
- return eventNode;
- }
-
- @Override
- public synchronized boolean addEventCallback(@NotNull Class eventClass, @NotNull EventCallback eventCallback) {
- if (eventNode.getParent() == null) {
- MinecraftServer.getGlobalEventHandler().addChild(eventNode);
- }
- return EventHandler.super.addEventCallback(eventClass, eventCallback);
- }
-
- // UNSAFE METHODS (need most of time to be synchronized)
+ // UNSAFE METHODS (need most of the time to be synchronized)
/**
* Used when called {@link Entity#setInstance(Instance)}, it is used to refresh viewable chunks
diff --git a/src/main/java/net/minestom/server/instance/InstanceContainer.java b/src/main/java/net/minestom/server/instance/InstanceContainer.java
index d05c3a520..f8535715f 100644
--- a/src/main/java/net/minestom/server/instance/InstanceContainer.java
+++ b/src/main/java/net/minestom/server/instance/InstanceContainer.java
@@ -3,8 +3,6 @@ package net.minestom.server.instance;
import net.minestom.server.MinecraftServer;
import net.minestom.server.coordinate.Point;
import net.minestom.server.coordinate.Vec;
-import net.minestom.server.data.Data;
-import net.minestom.server.data.SerializableData;
import net.minestom.server.entity.Player;
import net.minestom.server.event.EventDispatcher;
import net.minestom.server.event.instance.InstanceChunkLoadEvent;
@@ -45,9 +43,6 @@ public class InstanceContainer extends Instance {
private static final String UUID_KEY = "uuid";
private static final String DATA_KEY = "data";
- // the storage location of this instance, can be null
- private StorageLocation storageLocation;
-
// the shared instances assigned to this instance
private final List sharedInstances = new CopyOnWriteArrayList<>();
@@ -77,30 +72,17 @@ public class InstanceContainer extends Instance {
/**
* Creates an {@link InstanceContainer}.
*
- * @param uniqueId the unique id of the instance
- * @param dimensionType the dimension type of the instance
- * @param storageLocation the {@link StorageLocation} of the instance,
- * can be null if you do not wish to save the instance later on
+ * @param uniqueId the unique id of the instance
+ * @param dimensionType the dimension type of the instance
*/
- public InstanceContainer(@NotNull UUID uniqueId, @NotNull DimensionType dimensionType, @Nullable StorageLocation storageLocation) {
+ public InstanceContainer(@NotNull UUID uniqueId, @NotNull DimensionType dimensionType) {
super(uniqueId, dimensionType);
- this.storageLocation = storageLocation;
-
// Set the default chunk supplier using DynamicChunk
setChunkSupplier(DynamicChunk::new);
// Set the default chunk loader which use the Anvil format
setChunkLoader(new AnvilLoader("world"));
-
- // Get instance data from the saved data if a StorageLocation is defined
- if (storageLocation != null) {
- // Retrieve instance data
- this.uniqueId = storageLocation.getOrDefault(UUID_KEY, UUID.class, uniqueId);
-
- final Data data = storageLocation.getOrDefault(DATA_KEY, SerializableData.class, null);
- setData(data);
- }
}
@Override
@@ -284,26 +266,6 @@ public class InstanceContainer extends Instance {
return chunks.get(index);
}
- /**
- * Saves the instance ({@link #getUniqueId()} {@link #getData()}) and call {@link #saveChunksToStorage()}.
- *
- * WARNING: {@link #getData()} needs to be a {@link SerializableData} in order to be saved.
- */
- public CompletableFuture saveInstance() {
- Check.notNull(getStorageLocation(), "You cannot save the instance if no StorageLocation has been defined");
-
- this.storageLocation.set(UUID_KEY, getUniqueId(), UUID.class);
- final Data data = getData();
- if (data != null) {
- // Save the instance data
- Check.stateCondition(!(data instanceof SerializableData),
- "Instance#getData needs to be a SerializableData in order to be saved");
- this.storageLocation.set(DATA_KEY, (SerializableData) getData(), SerializableData.class);
- }
-
- return saveChunksToStorage();
- }
-
@Override
public @NotNull CompletableFuture saveChunkToStorage(@NotNull Chunk chunk) {
return chunkLoader.saveChunk(chunk);
@@ -454,7 +416,7 @@ public class InstanceContainer extends Instance {
* @see #getSrcInstance() to retrieve the "creation source" of the copied instance
*/
public synchronized InstanceContainer copy() {
- InstanceContainer copiedInstance = new InstanceContainer(UUID.randomUUID(), getDimensionType(), null);
+ InstanceContainer copiedInstance = new InstanceContainer(UUID.randomUUID(), getDimensionType());
copiedInstance.srcInstance = this;
copiedInstance.lastBlockChangeTime = lastBlockChangeTime;
@@ -530,21 +492,11 @@ public class InstanceContainer extends Instance {
*
* @return the chunks of this instance
*/
- @NotNull
- public Collection getChunks() {
+ @Override
+ public @NotNull Collection<@NotNull Chunk> getChunks() {
return Collections.unmodifiableCollection(chunks.values());
}
- @Override
- public StorageLocation getStorageLocation() {
- return storageLocation;
- }
-
- @Override
- public void setStorageLocation(StorageLocation storageLocation) {
- this.storageLocation = storageLocation;
- }
-
/**
* Gets the {@link IChunkLoader} of this instance.
*
diff --git a/src/main/java/net/minestom/server/instance/InstanceManager.java b/src/main/java/net/minestom/server/instance/InstanceManager.java
index a3ca162de..7ace4a0c0 100644
--- a/src/main/java/net/minestom/server/instance/InstanceManager.java
+++ b/src/main/java/net/minestom/server/instance/InstanceManager.java
@@ -39,45 +39,20 @@ public final class InstanceManager {
* with the specified {@link DimensionType} and {@link StorageLocation}.
*
* @param dimensionType the {@link DimensionType} of the instance
- * @param storageLocation the {@link StorageLocation} of the instance, can be null
* @return the created {@link InstanceContainer}
*/
- @NotNull
- public InstanceContainer createInstanceContainer(@NotNull DimensionType dimensionType, @Nullable StorageLocation storageLocation) {
- final InstanceContainer instanceContainer = new InstanceContainer(UUID.randomUUID(), dimensionType, storageLocation);
+ public @NotNull InstanceContainer createInstanceContainer(@NotNull DimensionType dimensionType) {
+ final InstanceContainer instanceContainer = new InstanceContainer(UUID.randomUUID(), dimensionType);
registerInstance(instanceContainer);
return instanceContainer;
}
- /**
- * Creates and register an {@link InstanceContainer} with the specified {@link StorageLocation}.
- *
- * @param storageLocation the {@link StorageLocation} of the instance, can be null
- * @return the created {@link InstanceContainer}
- */
- @NotNull
- public InstanceContainer createInstanceContainer(@Nullable StorageLocation storageLocation) {
- return createInstanceContainer(DimensionType.OVERWORLD, storageLocation);
- }
-
- /**
- * Creates and register an {@link InstanceContainer} with the specified {@link DimensionType}.
- *
- * @param dimensionType the {@link DimensionType} of the instance
- * @return the created {@link InstanceContainer}
- */
- @NotNull
- public InstanceContainer createInstanceContainer(@NotNull DimensionType dimensionType) {
- return createInstanceContainer(dimensionType, null);
- }
-
/**
* Creates and register an {@link InstanceContainer}.
*
* @return the created {@link InstanceContainer}
*/
- @NotNull
- public InstanceContainer createInstanceContainer() {
+ public @NotNull InstanceContainer createInstanceContainer() {
return createInstanceContainer(DimensionType.OVERWORLD);
}
@@ -90,8 +65,7 @@ public final class InstanceManager {
* @return the registered {@link SharedInstance}
* @throws NullPointerException if {@code sharedInstance} doesn't have an {@link InstanceContainer} assigned to it
*/
- @NotNull
- public SharedInstance registerSharedInstance(@NotNull SharedInstance sharedInstance) {
+ public @NotNull SharedInstance registerSharedInstance(@NotNull SharedInstance sharedInstance) {
final InstanceContainer instanceContainer = sharedInstance.getInstanceContainer();
Check.notNull(instanceContainer, "SharedInstance needs to have an InstanceContainer to be created!");
@@ -107,8 +81,7 @@ public final class InstanceManager {
* @return the created {@link SharedInstance}
* @throws IllegalStateException if {@code instanceContainer} is not registered
*/
- @NotNull
- public SharedInstance createSharedInstance(@NotNull InstanceContainer instanceContainer) {
+ public @NotNull SharedInstance createSharedInstance(@NotNull InstanceContainer instanceContainer) {
Check.notNull(instanceContainer, "Instance container cannot be null when creating a SharedInstance!");
Check.stateCondition(!instanceContainer.isRegistered(), "The container needs to be register in the InstanceManager");
@@ -149,8 +122,7 @@ public final class InstanceManager {
*
* @return an unmodifiable {@link Set} containing all the registered instances
*/
- @NotNull
- public Set getInstances() {
+ public @NotNull Set<@NotNull Instance> getInstances() {
return Collections.unmodifiableSet(instances);
}
@@ -160,8 +132,7 @@ public final class InstanceManager {
* @param uuid UUID of the instance
* @return the instance with the given UUID, null if not found
*/
- @Nullable
- public Instance getInstance(@NotNull UUID uuid) {
+ public @Nullable Instance getInstance(@NotNull UUID uuid) {
Optional instance = getInstances()
.stream()
.filter(someInstance -> someInstance.getUniqueId().equals(uuid))
@@ -181,5 +152,4 @@ public final class InstanceManager {
this.instances.add(instance);
MinecraftServer.getUpdateManager().signalInstanceCreate(instance);
}
-
}
diff --git a/src/main/java/net/minestom/server/instance/SharedInstance.java b/src/main/java/net/minestom/server/instance/SharedInstance.java
index fd3b15c29..d40a8b58b 100644
--- a/src/main/java/net/minestom/server/instance/SharedInstance.java
+++ b/src/main/java/net/minestom/server/instance/SharedInstance.java
@@ -4,10 +4,7 @@ import net.minestom.server.coordinate.Point;
import net.minestom.server.entity.Player;
import net.minestom.server.instance.block.Block;
import net.minestom.server.instance.block.BlockFace;
-import net.minestom.server.storage.StorageLocation;
-import net.minestom.server.utils.chunk.ChunkCallback;
import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
import java.util.Collection;
import java.util.UUID;
@@ -88,16 +85,6 @@ public class SharedInstance extends Instance {
return instanceContainer.getChunks();
}
- @Override
- public StorageLocation getStorageLocation() {
- return instanceContainer.getStorageLocation();
- }
-
- @Override
- public void setStorageLocation(StorageLocation storageLocation) {
- this.instanceContainer.setStorageLocation(storageLocation);
- }
-
@Override
public void enableAutoChunkLoad(boolean enable) {
instanceContainer.enableAutoChunkLoad(enable);
@@ -118,8 +105,7 @@ public class SharedInstance extends Instance {
*
* @return the associated {@link InstanceContainer}
*/
- @NotNull
- public InstanceContainer getInstanceContainer() {
+ public @NotNull InstanceContainer getInstanceContainer() {
return instanceContainer;
}
}
diff --git a/src/test/java/demo/Main.java b/src/test/java/demo/Main.java
index 3dd4a1093..1343f44e9 100644
--- a/src/test/java/demo/Main.java
+++ b/src/test/java/demo/Main.java
@@ -56,7 +56,7 @@ public class Main {
MinecraftServer.getSchedulerManager().buildShutdownTask(() -> System.out.println("Good night")).schedule();
- MinecraftServer.getGlobalEventHandler().addEventCallback(ServerListPingEvent.class, event -> {
+ MinecraftServer.getGlobalEventHandler().addListener(ServerListPingEvent.class, event -> {
ResponseData responseData = event.getResponseData();
responseData.addEntry(NamedAndIdentified.named("The first line is separated from the others"));
responseData.addEntry(NamedAndIdentified.named("Could be a name, or a message"));
diff --git a/src/test/java/demo/entity/ChickenCreature.java b/src/test/java/demo/entity/ChickenCreature.java
index 2a8b93738..c68f63e3d 100644
--- a/src/test/java/demo/entity/ChickenCreature.java
+++ b/src/test/java/demo/entity/ChickenCreature.java
@@ -4,11 +4,7 @@ import com.google.common.collect.ImmutableList;
import net.minestom.server.attribute.Attribute;
import net.minestom.server.entity.EntityCreature;
import net.minestom.server.entity.EntityType;
-import net.minestom.server.entity.LivingEntity;
import net.minestom.server.entity.ai.goal.RandomStrollGoal;
-import net.minestom.server.entity.damage.DamageType;
-import net.minestom.server.event.entity.EntityAttackEvent;
-import net.minestom.server.coordinate.Vec;
public class ChickenCreature extends EntityCreature {
@@ -39,14 +35,6 @@ public class ChickenCreature extends EntityCreature {
// );
getAttribute(Attribute.MOVEMENT_SPEED).setBaseValue(0.1f);
-
- addEventCallback(EntityAttackEvent.class, event -> {
- //System.out.println("CALL ATTACK");
- LivingEntity entity = (LivingEntity) event.getTarget();
- Vec velocity = getPosition().direction().mul(6).withY(4);
- entity.damage(DamageType.fromEntity(this), -1);
- entity.setVelocity(velocity);
- });
}
@Override
diff --git a/src/test/java/improveextensions/DisableEarlyLoad.java b/src/test/java/improveextensions/DisableEarlyLoad.java
index a36ad8182..53bf3f4e6 100644
--- a/src/test/java/improveextensions/DisableEarlyLoad.java
+++ b/src/test/java/improveextensions/DisableEarlyLoad.java
@@ -17,7 +17,7 @@ public class DisableEarlyLoad extends Extension {
@Override
public void initialize() {
// force load of InstanceContainer class
- InstanceContainer c = new InstanceContainer(UUID.randomUUID(), DimensionType.OVERWORLD, null);
+ InstanceContainer c = new InstanceContainer(UUID.randomUUID(), DimensionType.OVERWORLD);
System.out.println(c.toString());
try {
Assertions.assertFalse(MixinIntoMinestomCore.success, "InstanceContainer must NOT have been mixed in with improveextensions.InstanceContainerMixin, because early loading has been disabled");
diff --git a/src/test/java/improveextensions/MixinIntoMinestomCore.java b/src/test/java/improveextensions/MixinIntoMinestomCore.java
index d299f5f43..f3d0349ac 100644
--- a/src/test/java/improveextensions/MixinIntoMinestomCore.java
+++ b/src/test/java/improveextensions/MixinIntoMinestomCore.java
@@ -19,7 +19,7 @@ public class MixinIntoMinestomCore extends Extension {
@Override
public void initialize() {
// force load of InstanceContainer class
- InstanceContainer c = new InstanceContainer(UUID.randomUUID(), DimensionType.OVERWORLD, null);
+ InstanceContainer c = new InstanceContainer(UUID.randomUUID(), DimensionType.OVERWORLD);
System.out.println(c.toString());
try {
Assertions.assertTrue(success, "InstanceContainer must have been mixed in with improveextensions.InstanceContainerMixin");
diff --git a/src/test/java/improveextensions/MixinIntoMinestomCoreWithJava9ModuleOnClasspath.java b/src/test/java/improveextensions/MixinIntoMinestomCoreWithJava9ModuleOnClasspath.java
index 888fde76c..7d6bfdfd5 100644
--- a/src/test/java/improveextensions/MixinIntoMinestomCoreWithJava9ModuleOnClasspath.java
+++ b/src/test/java/improveextensions/MixinIntoMinestomCoreWithJava9ModuleOnClasspath.java
@@ -24,7 +24,7 @@ public class MixinIntoMinestomCoreWithJava9ModuleOnClasspath extends Extension {
List mockedList = mock(List.class);
when(mockedList.get(0)).thenReturn("Test");
// force load of InstanceContainer class
- InstanceContainer c = new InstanceContainer(UUID.randomUUID(), DimensionType.OVERWORLD, null);
+ InstanceContainer c = new InstanceContainer(UUID.randomUUID(), DimensionType.OVERWORLD);
System.out.println(c.toString());
try {
Assertions.assertTrue(MixinIntoMinestomCore.success, "InstanceContainer must have been mixed in with improveextensions.InstanceContainerMixin");
diff --git a/src/test/java/improveextensions/unloadcallbacks/UnloadCallbacksExtension.java b/src/test/java/improveextensions/unloadcallbacks/UnloadCallbacksExtension.java
index d4a34a24a..3ef7c0e70 100644
--- a/src/test/java/improveextensions/unloadcallbacks/UnloadCallbacksExtension.java
+++ b/src/test/java/improveextensions/unloadcallbacks/UnloadCallbacksExtension.java
@@ -4,7 +4,6 @@ import net.minestom.server.MinecraftServer;
import net.minestom.server.coordinate.Vec;
import net.minestom.server.entity.EntityCreature;
import net.minestom.server.entity.EntityType;
-import net.minestom.server.event.EventCallback;
import net.minestom.server.event.GlobalEventHandler;
import net.minestom.server.event.entity.EntityTickEvent;
import net.minestom.server.event.instance.InstanceTickEvent;
@@ -16,6 +15,7 @@ import org.junit.jupiter.api.Assertions;
import org.opentest4j.AssertionFailedError;
import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.function.Consumer;
public class UnloadCallbacksExtension extends Extension {
@@ -25,7 +25,7 @@ public class UnloadCallbacksExtension extends Extension {
private boolean tickedScheduledTransient = false;
private boolean zombieTicked = false;
private boolean instanceTicked = false;
- private final EventCallback callback = this::onTick;
+ private final Consumer callback = this::onTick;
private void onTick(InstanceTickEvent e) {
ticked1 = true;
@@ -35,20 +35,22 @@ public class UnloadCallbacksExtension extends Extension {
public void initialize() {
GlobalEventHandler globalEvents = MinecraftServer.getGlobalEventHandler();
// this callback will be automatically removed when unloading the extension
- globalEvents.addEventCallback(InstanceTickEvent.class, callback);
+ globalEvents.addListener(InstanceTickEvent.class, callback);
// this one too
- globalEvents.addEventCallback(InstanceTickEvent.class, e -> ticked2 = true);
+ globalEvents.addListener(InstanceTickEvent.class, e -> ticked2 = true);
Instance instance = MinecraftServer.getInstanceManager().getInstances().stream().findFirst().orElseThrow();
// add an event callback on an instance
- instance.addEventCallback(InstanceTickEvent.class, e -> instanceTicked = true);
+ globalEvents.addListener(InstanceTickEvent.class, e -> instanceTicked = true);
instance.loadChunk(0, 0);
// add an event callback on an entity
EntityCreature zombie = new EntityCreature(EntityType.ZOMBIE);
- zombie.addEventCallback(EntityTickEvent.class, e -> {
- zombieTicked = true;
+ globalEvents.addListener(EntityTickEvent.class, entityTickEvent -> {
+ if (entityTickEvent.getEntity() == zombie) {
+ zombieTicked = true;
+ }
});
zombie.setInstance(instance, new Vec(8, 64, 8) /* middle of chunk */);