diff --git a/core/src/main/java/mc/core/CoreEventListener.java b/core/src/main/java/mc/core/CoreEventListener.java index 40c5d23..25318ba 100644 --- a/core/src/main/java/mc/core/CoreEventListener.java +++ b/core/src/main/java/mc/core/CoreEventListener.java @@ -1,6 +1,8 @@ package mc.core; import lombok.extern.slf4j.Slf4j; +import mc.core.eventbus.EventBus; +import mc.core.eventbus.Subscriber; import mc.core.eventbus.events.CS_PlayerMoveEvent; import mc.core.eventbus.events.SC_ChunkLoadEvent; import mc.core.eventbus.events.SC_ChunkUnloadEvent; @@ -14,12 +16,11 @@ import java.util.Iterator; public class CoreEventListener { @PostConstruct public void registerEventHandlers() { -// EventBusGetter.getInstance().register(this); + EventBus.getInstance().registerSubscribes(this); } + @Subscriber public void handlerPlayerMoveEvent(CS_PlayerMoveEvent event) { - log.trace("(GameLoop) playerMoveEventHandler()"); - Chunk chunk; chunk = event.getPlayer().getWorld().getChunk(event.getOldLocation().toBlockLocation()); // Old chunk int ccX = chunk.getX(); @@ -47,7 +48,7 @@ public class CoreEventListener { } if (!eventChunkUnload.getNeedUnloadChunks().isEmpty()) { -// EventBusGetter.getInstance().post(eventChunkUnload); + EventBus.getInstance().post(eventChunkUnload); } SC_ChunkLoadEvent eventChunkLoad = new SC_ChunkLoadEvent(event.getPlayer()); @@ -64,7 +65,7 @@ public class CoreEventListener { } if (!eventChunkLoad.getNeedLoadChunks().isEmpty()) { -// EventBusGetter.getInstance().post(eventChunkLoad); + EventBus.getInstance().post(eventChunkLoad); } } diff --git a/core/src/main/java/mc/core/GameLoop.java b/core/src/main/java/mc/core/GameLoop.java index 4b5affc..7838fee 100644 --- a/core/src/main/java/mc/core/GameLoop.java +++ b/core/src/main/java/mc/core/GameLoop.java @@ -6,6 +6,7 @@ package mc.core; import lombok.Setter; import lombok.extern.slf4j.Slf4j; +import mc.core.eventbus.EventBus; import mc.core.player.PlayerManager; import mc.core.time.TimeProcessor; import org.springframework.beans.factory.annotation.Autowired; @@ -47,6 +48,8 @@ public class GameLoop extends Thread { /* --- --- --- */ + EventBus.getInstance().process(); + /* TODO нужно перенести этот функционал на Network */ playerManager.getBroadcastChannel().sendTimeUpdate( gameTimer.getGameTime(), diff --git a/core/src/main/java/mc/core/eventbus/EventBus.java b/core/src/main/java/mc/core/eventbus/EventBus.java index 08fac05..1a14331 100644 --- a/core/src/main/java/mc/core/eventbus/EventBus.java +++ b/core/src/main/java/mc/core/eventbus/EventBus.java @@ -17,7 +17,7 @@ import java.util.stream.Stream; @NoArgsConstructor(access = AccessLevel.PRIVATE) public class EventBus { @Getter - private static final EventBus insnance = new EventBus(); + private static final EventBus instance = new EventBus(); private Queue eventQueue = new ConcurrentLinkedQueue<>(); private Map, List>> subscribes = new HashMap<>(); diff --git a/core/src/test/java/mc/core/TestEventBus.java b/core/src/test/java/mc/core/TestEventBus.java index 511f9e4..beb19c8 100644 --- a/core/src/test/java/mc/core/TestEventBus.java +++ b/core/src/test/java/mc/core/TestEventBus.java @@ -26,21 +26,21 @@ class TestEventBus { @SuppressWarnings("unchecked") private Map, List>> getEventBusFieldSubscribes() { return (Map, List>>) - Whitebox.getInternalState(EventBus.getInsnance(), "subscribes"); + Whitebox.getInternalState(EventBus.getInstance(), "subscribes"); } @BeforeEach @SuppressWarnings("unchecked") void before() { getEventBusFieldSubscribes().clear(); - ((Queue) Whitebox.getInternalState(EventBus.getInsnance(), "eventQueue")).clear(); + ((Queue) Whitebox.getInternalState(EventBus.getInstance(), "eventQueue")).clear(); } @Test void testRegisterSubscribes() { DumbEventHandler handler = new DumbEventHandler(); - EventBus.getInsnance().registerSubscribes(handler); + EventBus.getInstance().registerSubscribes(handler); Map, List>> subscribes = getEventBusFieldSubscribes(); assertEquals(1, subscribes.size()); @@ -56,9 +56,9 @@ class TestEventBus { @Test void testUnregisterSubscribes() { DumbEventHandler handler = new DumbEventHandler(); - EventBus.getInsnance().registerSubscribes(handler); + EventBus.getInstance().registerSubscribes(handler); - EventBus.getInsnance().unregisterSubscribes(handler); + EventBus.getInstance().unregisterSubscribes(handler); Map, List>> subscribes = getEventBusFieldSubscribes(); assertEquals(0, subscribes.size()); @@ -67,21 +67,21 @@ class TestEventBus { @Test @SuppressWarnings("unchecked") void testPost() { - EventBus.getInsnance().post(new DumbEvent()); + EventBus.getInstance().post(new DumbEvent()); - Queue eventQueue = (Queue) Whitebox.getInternalState(EventBus.getInsnance(), "eventQueue"); + Queue eventQueue = (Queue) Whitebox.getInternalState(EventBus.getInstance(), "eventQueue"); assertEquals(1, eventQueue.size()); } @Test void testProcess() { Stream.of(new DumbEventHandler("D1 "), new DumbEventHandler("D2 ")) - .forEach(handler -> EventBus.getInsnance().registerSubscribes(handler)); + .forEach(handler -> EventBus.getInstance().registerSubscribes(handler)); Stream.of(new DumbEvent("message 1"), new DumbEvent("message 2")) - .forEach(event -> EventBus.getInsnance().post(event)); + .forEach(event -> EventBus.getInstance().post(event)); - EventBus.getInsnance().process(); + EventBus.getInstance().process(); assertEquals(4, resultList.size()); assertEquals("D1 message 1", resultList.get(0)); diff --git a/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/NettyServer.java b/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/NettyServer.java index f664e87..d17cba5 100644 --- a/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/NettyServer.java +++ b/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/NettyServer.java @@ -11,6 +11,7 @@ import io.netty.channel.socket.nio.NioServerSocketChannel; import io.netty.util.AttributeKey; import lombok.Setter; import lombok.extern.slf4j.Slf4j; +import mc.core.eventbus.EventBus; import mc.core.network.Server; import mc.core.network.StartServerException; import mc.core.network.proto_1_12_2.State; @@ -64,7 +65,7 @@ public class NettyServer implements Server { public void start() throws StartServerException { log.info("Use protocol {}", StatusResponsePacket.NAME); -// EventBusGetter.getInstance().register(new PlayerEventListener()); + EventBus.getInstance().registerSubscribes(new PlayerEventListener()); bossGroup = new NioEventLoopGroup(1); workerGroup = new NioEventLoopGroup(workerGroupCount); diff --git a/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/PlayerEventListener.java b/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/PlayerEventListener.java index eb59118..079ebf2 100644 --- a/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/PlayerEventListener.java +++ b/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/PlayerEventListener.java @@ -1,6 +1,7 @@ package mc.core.network.proto_1_12_2.netty; import lombok.extern.slf4j.Slf4j; +import mc.core.eventbus.Subscriber; import mc.core.eventbus.events.SC_ChunkLoadEvent; import mc.core.eventbus.events.SC_ChunkUnloadEvent; import mc.core.eventbus.events.SC_PlayerMoveEvent; @@ -12,7 +13,8 @@ import mc.core.utils.CompactedCoords; import mc.core.world.chunk.Chunk; @Slf4j -class PlayerEventListener { +public class PlayerEventListener { + @Subscriber public void playerMoveEventHandler(SC_PlayerMoveEvent event) { log.debug("(SC) playerMoveEventHandler()"); PlayerPositionAndLookPacket packet = new PlayerPositionAndLookPacket(); @@ -23,6 +25,7 @@ class PlayerEventListener { event.getPlayer().getChannel().writeAndFlush(packet); } + @Subscriber public void playerChunkLoadHandler(SC_ChunkLoadEvent event) { for(Integer compressXZ : event.getNeedLoadChunks()) { int[] xz = CompactedCoords.uncompressXZ(compressXZ); @@ -38,6 +41,7 @@ class PlayerEventListener { } } + @Subscriber public void playerChunkUnloadHandler(SC_ChunkUnloadEvent event) { for(Integer compressXZ : event.getNeedUnloadChunks()) { int[] xz = CompactedCoords.uncompressXZ(compressXZ); diff --git a/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/handlers/LoginHandler.java b/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/handlers/LoginHandler.java index 2f67167..8a677cd 100644 --- a/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/handlers/LoginHandler.java +++ b/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/handlers/LoginHandler.java @@ -2,6 +2,7 @@ package mc.core.network.proto_1_12_2.netty.handlers; import io.netty.channel.Channel; import io.netty.channel.ChannelFutureListener; +import mc.core.eventbus.EventBus; import mc.core.eventbus.events.CS_PlayerMoveEvent; import mc.core.network.proto_1_12_2.State; import mc.core.network.proto_1_12_2.TeleportManager; @@ -120,7 +121,7 @@ public class LoginHandler extends AbstractStateHandler implements LoginStateHand CS_PlayerMoveEvent event = new CS_PlayerMoveEvent(player, player.getLocation()); event.setNewLocation(player.getLocation()); event.setRecalcChunk(true); -// EventBusGetter.getInstance().post(event); + EventBus.getInstance().post(event); } } } diff --git a/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/handlers/PlayHandler.java b/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/handlers/PlayHandler.java index acf38b7..c1675ba 100644 --- a/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/handlers/PlayHandler.java +++ b/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/handlers/PlayHandler.java @@ -1,13 +1,10 @@ -/* - * DmitriyMX - * 2018-06-23 - */ package mc.core.network.proto_1_12_2.netty.handlers; import io.netty.channel.Channel; import lombok.extern.slf4j.Slf4j; import mc.core.EntityLocation; import mc.core.chat.ChatProcessor; +import mc.core.eventbus.EventBus; import mc.core.eventbus.events.CS_PlayerMoveEvent; import mc.core.network.proto_1_12_2.TeleportManager; import mc.core.network.proto_1_12_2.packets.*; @@ -82,7 +79,7 @@ public class PlayHandler extends AbstractStateHandler implements PlayStateHandle player.getLocation().getYaw(), player.getLocation().getPitch() )); -// EventBusGetter.getInstance().post(event); + EventBus.getInstance().post(event); } @Handler