remove PacketHandler.java (handle packets in Packets classes)

This commit is contained in:
Bixilon 2020-12-14 20:35:01 +01:00
parent 1aecd27657
commit 90476fecb3
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
109 changed files with 769 additions and 1383 deletions

View File

@ -45,7 +45,6 @@ import java.util.concurrent.atomic.AtomicBoolean;
public class Connection {
public static int lastConnectionId;
private final Network network = Network.getNetworkInstance(this);
private final PacketHandler handler = new PacketHandler(this);
private final PacketSender sender = new PacketSender(this);
private final LinkedBlockingQueue<ClientboundPacket> handlingQueue = new LinkedBlockingQueue<>();
private final VelocityHandler velocityHandler = new VelocityHandler(this);
@ -159,10 +158,6 @@ public class Connection {
}
}
public PacketHandler getHandler() {
return this.handler;
}
public void handle(ClientboundPacket p) {
this.handlingQueue.add(p);
}
@ -213,7 +208,7 @@ public class Connection {
if (fireEvent(event)) {
continue;
}
packet.handle(getHandler());
packet.handle(this);
} catch (Throwable e) {
Log.printException(e, LogLevels.PROTOCOL);
}

View File

@ -19,7 +19,7 @@ import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.network.Network;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.packets.ServerboundPacket;
import de.bixilon.minosoft.protocol.packets.clientbound.interfaces.PacketCompressionInterface;
import de.bixilon.minosoft.protocol.packets.clientbound.interfaces.CompressionThresholdChange;
import de.bixilon.minosoft.protocol.packets.clientbound.login.PacketEncryptionRequest;
import de.bixilon.minosoft.protocol.packets.clientbound.login.PacketLoginSuccess;
import de.bixilon.minosoft.protocol.packets.serverbound.login.PacketEncryptionResponse;
@ -210,7 +210,7 @@ public class SocketNetwork implements Network {
// set special settings to avoid miss timing issues
if (packetInstance instanceof PacketLoginSuccess) {
this.connection.setConnectionState(ConnectionStates.PLAY);
} else if (packetInstance instanceof PacketCompressionInterface compressionPacket) {
} else if (packetInstance instanceof CompressionThresholdChange compressionPacket) {
this.compressionThreshold = compressionPacket.getThreshold();
} else if (packetInstance instanceof PacketEncryptionRequest) {
// wait until response is ready

View File

@ -13,12 +13,12 @@
package de.bixilon.minosoft.protocol.packets;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
// packet to send to client
public interface ClientboundPacket extends Packet {
boolean read(InByteBuffer buffer) throws Exception;
public abstract class ClientboundPacket implements Packet {
public abstract boolean read(InByteBuffer buffer) throws Exception;
void handle(PacketHandler h);
public void handle(Connection connection) {
}
}

View File

@ -15,6 +15,6 @@ package de.bixilon.minosoft.protocol.packets.clientbound.interfaces;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
public interface PacketCompressionInterface extends ClientboundPacket {
int getThreshold();
public abstract class CompressionThresholdChange extends ClientboundPacket {
public abstract int getThreshold();
}

View File

@ -14,11 +14,17 @@
package de.bixilon.minosoft.protocol.packets.clientbound.login;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.packets.serverbound.login.PacketEncryptionResponse;
import de.bixilon.minosoft.protocol.protocol.CryptManager;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketEncryptionRequest implements ClientboundPacket {
import javax.crypto.SecretKey;
import java.math.BigInteger;
import java.security.PublicKey;
public class PacketEncryptionRequest extends ClientboundPacket {
String serverId; // normally empty
byte[] publicKey;
@ -33,8 +39,12 @@ public class PacketEncryptionRequest implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
SecretKey secretKey = CryptManager.createNewSharedKey();
PublicKey publicKey = CryptManager.decodePublicKey(getPublicKey());
String serverHash = new BigInteger(CryptManager.getServerHash(getServerId(), publicKey, secretKey)).toString(16);
connection.getPlayer().getAccount().join(serverHash);
connection.sendPacket(new PacketEncryptionResponse(secretKey, getVerifyToken(), publicKey));
}
@Override

View File

@ -15,11 +15,12 @@ package de.bixilon.minosoft.protocol.packets.clientbound.login;
import de.bixilon.minosoft.data.text.ChatComponent;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.LoginDisconnectEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketLoginDisconnect implements ClientboundPacket {
public class PacketLoginDisconnect extends ClientboundPacket {
ChatComponent reason;
@Override
@ -29,8 +30,10 @@ public class PacketLoginDisconnect implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
connection.fireEvent(new LoginDisconnectEvent(connection, getReason()));
Log.info(String.format("Disconnecting from server (reason=%s)", getReason().getANSIColoredMessage()));
connection.disconnect();
}
@Override

View File

@ -14,12 +14,12 @@
package de.bixilon.minosoft.protocol.packets.clientbound.login;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.LoginPluginMessageRequestEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketLoginPluginRequest implements ClientboundPacket {
public class PacketLoginPluginRequest extends ClientboundPacket {
int messageId;
String channel;
byte[] data;
@ -35,8 +35,8 @@ public class PacketLoginPluginRequest implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
connection.fireEvent(new LoginPluginMessageRequestEvent(this.connection, this));
}
@Override

View File

@ -14,11 +14,10 @@
package de.bixilon.minosoft.protocol.packets.clientbound.login;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.clientbound.interfaces.PacketCompressionInterface;
import de.bixilon.minosoft.protocol.packets.clientbound.interfaces.CompressionThresholdChange;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketLoginSetCompression implements PacketCompressionInterface {
public class PacketLoginSetCompression extends CompressionThresholdChange {
int threshold;
@Override
@ -27,11 +26,6 @@ public class PacketLoginSetCompression implements PacketCompressionInterface {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Received set compression packet (threshold=%d)", this.threshold));

View File

@ -16,12 +16,11 @@ package de.bixilon.minosoft.protocol.packets.clientbound.login;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import de.bixilon.minosoft.util.Util;
import java.util.UUID;
public class PacketLoginSuccess implements ClientboundPacket {
public class PacketLoginSuccess extends ClientboundPacket {
UUID uuid;
String username;
@ -37,11 +36,6 @@ public class PacketLoginSuccess implements ClientboundPacket {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Receiving login success packet (username=%s, UUID=%s)", this.username, this.uuid));

View File

@ -19,9 +19,8 @@ import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.packets.serverbound.play.PacketPlayerDigging;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketAcknowledgePlayerDigging implements ClientboundPacket {
public class PacketAcknowledgePlayerDigging extends ClientboundPacket {
BlockPosition position;
Block block;
PacketPlayerDigging.DiggingStatus status;
@ -36,11 +35,6 @@ public class PacketAcknowledgePlayerDigging implements ClientboundPacket {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Received acknowledge digging packet (position=%s, block=%s, status=%s, successful=%s)", this.position, this.block, this.status, this.successful));

View File

@ -22,13 +22,12 @@ import de.bixilon.minosoft.data.text.ChatComponent;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import de.bixilon.minosoft.util.BitByte;
import java.util.ArrayList;
import java.util.HashMap;
public class PacketAdvancements implements ClientboundPacket {
public class PacketAdvancements extends ClientboundPacket {
final HashMap<String, Advancement> advancements = new HashMap<>();
final HashMap<String, AdvancementProgress> progresses = new HashMap<>();
boolean reset;
@ -101,11 +100,6 @@ public class PacketAdvancements implements ClientboundPacket {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Receiving advancements (reset=%s, advancements=%s, progresses=%s)", this.reset, this.advancements.size(), this.progresses.size()));

View File

@ -13,12 +13,13 @@
package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.entities.entities.Entity;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketAttachEntity implements ClientboundPacket {
public class PacketAttachEntity extends ClientboundPacket {
int entityId;
int vehicleId;
boolean leash;
@ -36,8 +37,14 @@ public class PacketAttachEntity implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
Entity entity = connection.getPlayer().getWorld().getEntity(getEntityId());
if (entity == null) {
// thanks mojang
return;
}
entity.attachTo(getVehicleId());
// ToDo leash support
}
@Override

View File

@ -17,11 +17,12 @@ import de.bixilon.minosoft.data.mappings.BlockId;
import de.bixilon.minosoft.data.mappings.blocks.actions.*;
import de.bixilon.minosoft.data.world.BlockPosition;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.BlockActionEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketBlockAction implements ClientboundPacket {
public class PacketBlockAction extends ClientboundPacket {
BlockPosition position;
BlockAction data;
@ -58,8 +59,11 @@ public class PacketBlockAction implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
BlockActionEvent event = new BlockActionEvent(connection, this);
if (connection.fireEvent(event)) {
return;
}
}
@Override

View File

@ -15,11 +15,12 @@ package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.world.BlockPosition;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.BlockBreakAnimationEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketBlockBreakAnimation implements ClientboundPacket {
public class PacketBlockBreakAnimation extends ClientboundPacket {
int entityId;
BlockPosition position;
byte stage;
@ -38,8 +39,11 @@ public class PacketBlockBreakAnimation implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
BlockBreakAnimationEvent event = new BlockBreakAnimationEvent(connection, this);
if (connection.fireEvent(event)) {
return;
}
}
@Override

View File

@ -15,12 +15,14 @@ package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.mappings.blocks.Block;
import de.bixilon.minosoft.data.world.BlockPosition;
import de.bixilon.minosoft.data.world.Chunk;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.BlockChangeEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketBlockChange implements ClientboundPacket {
public class PacketBlockChange extends ClientboundPacket {
BlockPosition position;
Block block;
@ -38,8 +40,15 @@ public class PacketBlockChange implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
Chunk chunk = connection.getPlayer().getWorld().getChunk(getPosition().getChunkLocation());
if (chunk == null) {
// thanks mojang
return;
}
connection.fireEvent(new BlockChangeEvent(connection, this));
chunk.setBlock(getPosition().getInChunkLocation(), getBlock());
}
@Override

View File

@ -18,12 +18,13 @@ import de.bixilon.minosoft.data.VersionValueMap;
import de.bixilon.minosoft.data.entities.block.BlockEntityMetaData;
import de.bixilon.minosoft.data.world.BlockPosition;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.BlockEntityMetaDataChangeEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import de.bixilon.minosoft.util.nbt.tag.CompoundTag;
public class PacketBlockEntityMetadata implements ClientboundPacket {
public class PacketBlockEntityMetadata extends ClientboundPacket {
BlockPosition position;
BlockEntityActions action;
BlockEntityMetaData data;
@ -43,8 +44,9 @@ public class PacketBlockEntityMetadata implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
connection.fireEvent(new BlockEntityMetaDataChangeEvent(connection, this));
connection.getPlayer().getWorld().setBlockEntityData(getPosition(), getData());
}
@Override

View File

@ -15,14 +15,15 @@ package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.text.ChatComponent;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.BossBarChangeEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import de.bixilon.minosoft.util.BitByte;
import java.util.UUID;
public class PacketBossBar implements ClientboundPacket {
public class PacketBossBar extends ClientboundPacket {
UUID uuid;
BossBarActions action;
@ -57,8 +58,11 @@ public class PacketBossBar implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
BossBarChangeEvent event = new BossBarChangeEvent(connection, this);
if (connection.fireEvent(event)) {
return;
}
}
@Override

View File

@ -16,9 +16,8 @@ package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketCamera implements ClientboundPacket {
public class PacketCamera extends ClientboundPacket {
int entityId;
@Override
@ -27,11 +26,6 @@ public class PacketCamera implements ClientboundPacket {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Receiving camera packet (entityId=%d)", this.entityId));

View File

@ -13,14 +13,16 @@
package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.GameModes;
import de.bixilon.minosoft.data.MapSet;
import de.bixilon.minosoft.data.VersionValueMap;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.ChangeGameStateEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketChangeGameState implements ClientboundPacket {
public class PacketChangeGameState extends ClientboundPacket {
Reason reason;
float value;
@ -32,8 +34,24 @@ public class PacketChangeGameState implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
ChangeGameStateEvent event = new ChangeGameStateEvent(connection, this);
if (connection.fireEvent(event)) {
return;
}
Log.game(switch (getReason()) {
case START_RAINING -> "Received weather packet: Starting rain...";
case STOP_RAINING -> "Received weather packet: Stopping rain...";
case CHANGE_GAMEMODE -> String.format("Received game mode change: Now in %s", GameModes.byId(getIntValue()));
default -> "";
});
switch (getReason()) {
case STOP_RAINING -> connection.getPlayer().getWorld().setRaining(false);
case START_RAINING -> connection.getPlayer().getWorld().setRaining(true);
case CHANGE_GAMEMODE -> connection.getPlayer().setGameMode(GameModes.byId(getIntValue()));
}
}
@Override

View File

@ -16,13 +16,14 @@ package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.ChatTextPositions;
import de.bixilon.minosoft.data.text.ChatComponent;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.ChatMessageReceivingEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import java.util.UUID;
public class PacketChatMessageReceiving implements ClientboundPacket {
public class PacketChatMessageReceiving extends ClientboundPacket {
ChatComponent message;
ChatTextPositions position;
UUID sender;
@ -42,8 +43,16 @@ public class PacketChatMessageReceiving implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
ChatMessageReceivingEvent event = new ChatMessageReceivingEvent(connection, this);
if (connection.fireEvent(event)) {
return;
}
Log.game(switch (getPosition()) {
case SYSTEM_MESSAGE -> "[SYSTEM] ";
case ABOVE_HOTBAR -> "[HOTBAR] ";
default -> "[CHAT] ";
} + event.getMessage());
}
@Override

View File

@ -16,15 +16,16 @@ package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.world.Chunk;
import de.bixilon.minosoft.data.world.ChunkLocation;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.ChunkDataChangeEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import de.bixilon.minosoft.util.ChunkUtil;
import de.bixilon.minosoft.util.Util;
import java.util.HashMap;
public class PacketChunkBulk implements ClientboundPacket {
public class PacketChunkBulk extends ClientboundPacket {
final HashMap<ChunkLocation, Chunk> chunks = new HashMap<>();
@Override
@ -73,8 +74,10 @@ public class PacketChunkBulk implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
getChunks().forEach(((location, chunk) -> connection.fireEvent(new ChunkDataChangeEvent(connection, location, chunk))));
connection.getPlayer().getWorld().setChunks(getChunks());
}
@Override

View File

@ -18,16 +18,18 @@ import de.bixilon.minosoft.data.world.BlockPosition;
import de.bixilon.minosoft.data.world.Chunk;
import de.bixilon.minosoft.data.world.ChunkLocation;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.BlockEntityMetaDataChangeEvent;
import de.bixilon.minosoft.modding.event.events.ChunkDataChangeEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import de.bixilon.minosoft.util.ChunkUtil;
import de.bixilon.minosoft.util.Util;
import de.bixilon.minosoft.util.nbt.tag.CompoundTag;
import java.util.HashMap;
public class PacketChunkData implements ClientboundPacket {
public class PacketChunkData extends ClientboundPacket {
final HashMap<BlockPosition, BlockEntityMetaData> blockEntities = new HashMap<>();
ChunkLocation location;
Chunk chunk;
@ -117,8 +119,12 @@ public class PacketChunkData implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
getBlockEntities().forEach(((position, compoundTag) -> connection.fireEvent(new BlockEntityMetaDataChangeEvent(connection, position, null, compoundTag))));
connection.fireEvent(new ChunkDataChangeEvent(connection, this));
connection.getPlayer().getWorld().setChunk(getLocation(), getChunk());
connection.getPlayer().getWorld().setBlockEntityData(getBlockEntities());
}
@Override

View File

@ -14,11 +14,12 @@
package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.CloseWindowEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketCloseWindowReceiving implements ClientboundPacket {
public class PacketCloseWindowReceiving extends ClientboundPacket {
byte windowId;
@Override
@ -28,8 +29,13 @@ public class PacketCloseWindowReceiving implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
CloseWindowEvent event = new CloseWindowEvent(connection, this);
if (connection.fireEvent(event)) {
return;
}
connection.getPlayer().deleteInventory(getWindowId());
}
@Override

View File

@ -14,11 +14,12 @@
package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.CollectItemAnimationEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketCollectItem implements ClientboundPacket {
public class PacketCollectItem extends ClientboundPacket {
int itemEntityId;
int collectorEntityId;
int count;
@ -38,8 +39,11 @@ public class PacketCollectItem implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
if (connection.fireEvent(new CollectItemAnimationEvent(connection, this))) {
return;
}
// ToDo
}
@Override

View File

@ -17,9 +17,8 @@ import de.bixilon.minosoft.data.text.ChatComponent;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketCombatEvent implements ClientboundPacket {
public class PacketCombatEvent extends ClientboundPacket {
CombatEvents action;
int duration;
@ -44,11 +43,6 @@ public class PacketCombatEvent implements ClientboundPacket {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
switch (this.action) {

View File

@ -16,9 +16,8 @@ package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketConfirmTransactionReceiving implements ClientboundPacket {
public class PacketConfirmTransactionReceiving extends ClientboundPacket {
byte windowId;
short actionNumber;
boolean accepted;
@ -31,11 +30,6 @@ public class PacketConfirmTransactionReceiving implements ClientboundPacket {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Closing inventory (windowId=%d)", this.windowId));

View File

@ -16,9 +16,8 @@ package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketCraftRecipeResponse implements ClientboundPacket {
public class PacketCraftRecipeResponse extends ClientboundPacket {
byte windowId;
int recipeId;
String recipeName;
@ -35,11 +34,6 @@ public class PacketCraftRecipeResponse implements ClientboundPacket {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Received Crafting recipe response (windowId=%d, recipeId=%d)", this.windowId, this.recipeId));

View File

@ -15,12 +15,13 @@ package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.commands.CommandNode;
import de.bixilon.minosoft.data.commands.CommandRootNode;
import de.bixilon.minosoft.data.commands.parser.exceptions.CommandParseException;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketDeclareCommands implements ClientboundPacket {
public class PacketDeclareCommands extends ClientboundPacket {
private CommandRootNode rootNode;
@Override
@ -35,8 +36,31 @@ public class PacketDeclareCommands implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
connection.setCommandRootNode(getRootNode());
// ToDo: Remove these dummy commands
String[] commands = {
"msg Bixilon TestReason 2Paramter 3 4 asd asd",
"msg @a[name=Bixilon, level=23, gamemode=!survival] trest asd 12312 sad123123213",
"help",
"team list",
"tasdasda",
"msg @a[ name = \"Bixilon\" ] asd",
"msg @a[ name = Bixilon ] asd asdsadasd",
"msg @a[ name = Bixilon ,team= ] asd asdsadasd",
"msg @a[ name = Bixilon , team =!] asd asdsadasd",
"give Bixilon minecraft:acacia_boat",
"give Bixilon minecraft:acacia_boat{asd:12}",
};
for (String command : commands) {
try {
getRootNode().isSyntaxCorrect(connection, command);
Log.game("Command \"%s\" is valid", command);
} catch (CommandParseException e) {
Log.game("Command \"%s\" is invalid, %s: %s", command, e.getClass().getSimpleName(), e.getErrorMessage());
e.printStackTrace();
}
}
}
@Override

View File

@ -20,11 +20,11 @@ import de.bixilon.minosoft.data.mappings.recipes.Ingredient;
import de.bixilon.minosoft.data.mappings.recipes.Recipe;
import de.bixilon.minosoft.data.mappings.recipes.RecipeTypes;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketDeclareRecipes implements ClientboundPacket {
public class PacketDeclareRecipes extends ClientboundPacket {
private final HashBiMap<ModIdentifier, Recipe> recipes = HashBiMap.create();
@Override
@ -85,8 +85,8 @@ public class PacketDeclareRecipes implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
connection.getRecipes().registerCustomRecipes(getRecipes());
}
@Override

View File

@ -14,13 +14,14 @@
package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.EntityDespawnEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import java.util.Arrays;
public class PacketDestroyEntity implements ClientboundPacket {
public class PacketDestroyEntity extends ClientboundPacket {
int[] entityIds;
@Override
@ -38,8 +39,12 @@ public class PacketDestroyEntity implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
connection.fireEvent(new EntityDespawnEvent(connection, this));
for (int entityId : getEntityIds()) {
connection.getPlayer().getWorld().removeEntity(entityId);
}
}
@Override

View File

@ -15,11 +15,12 @@ package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.text.ChatComponent;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.LoginDisconnectEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketDisconnect implements ClientboundPacket {
public class PacketDisconnect extends ClientboundPacket {
ChatComponent reason;
@Override
@ -29,8 +30,10 @@ public class PacketDisconnect implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
connection.fireEvent(new LoginDisconnectEvent(connection, this));
// got kicked
connection.disconnect();
}
@Override

View File

@ -17,11 +17,12 @@ import de.bixilon.minosoft.data.MapSet;
import de.bixilon.minosoft.data.VersionValueMap;
import de.bixilon.minosoft.data.world.BlockPosition;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.EffectEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketEffect implements ClientboundPacket {
public class PacketEffect extends ClientboundPacket {
EffectEffects effect;
BlockPosition position;
int data;
@ -41,8 +42,10 @@ public class PacketEffect implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
if (connection.fireEvent(new EffectEvent(connection, this))) {
return;
}
}
@Override

View File

@ -18,9 +18,8 @@ import de.bixilon.minosoft.data.VersionValueMap;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketEntityAnimation implements ClientboundPacket {
public class PacketEntityAnimation extends ClientboundPacket {
int entityId;
EntityAnimations animation;
@ -31,11 +30,6 @@ public class PacketEntityAnimation implements ClientboundPacket {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Play entity animation (entityId=%d, animation=%s)", this.entityId, this.animation));

View File

@ -14,13 +14,14 @@
package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.entities.StatusEffect;
import de.bixilon.minosoft.data.entities.entities.Entity;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import de.bixilon.minosoft.util.BitByte;
public class PacketEntityEffect implements ClientboundPacket {
public class PacketEntityEffect extends ClientboundPacket {
int entityId;
StatusEffect effect;
boolean isAmbient;
@ -51,8 +52,13 @@ public class PacketEntityEffect implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
Entity entity = connection.getPlayer().getWorld().getEntity(getEntityId());
if (entity == null) {
// thanks mojang
return;
}
entity.addEffect(getEffect());
}
@Override

View File

@ -13,17 +13,19 @@
package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.entities.entities.Entity;
import de.bixilon.minosoft.data.inventory.InventorySlots;
import de.bixilon.minosoft.data.inventory.Slot;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.EntityEquipmentChangeEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import java.util.HashMap;
import java.util.Map;
public class PacketEntityEquipment implements ClientboundPacket {
public class PacketEntityEquipment extends ClientboundPacket {
final HashMap<InventorySlots.EntityInventorySlots, Slot> slots = new HashMap<>();
int entityId;
@ -51,8 +53,15 @@ public class PacketEntityEquipment implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
connection.fireEvent(new EntityEquipmentChangeEvent(connection, this));
Entity entity = connection.getPlayer().getWorld().getEntity(getEntityId());
if (entity == null) {
// thanks mojang
return;
}
entity.setEquipment(getSlots());
}
@Override

View File

@ -16,9 +16,8 @@ package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketEntityEvent implements ClientboundPacket {
public class PacketEntityEvent extends ClientboundPacket {
int entityId;
byte eventId;
@ -29,11 +28,6 @@ public class PacketEntityEvent implements ClientboundPacket {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Entity status: (entityId=%d, eventId=%s)", this.entityId, this.eventId));

View File

@ -13,12 +13,13 @@
package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.entities.entities.Entity;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketEntityHeadRotation implements ClientboundPacket {
public class PacketEntityHeadRotation extends ClientboundPacket {
int entityId;
short headYaw;
@ -31,8 +32,13 @@ public class PacketEntityHeadRotation implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
Entity entity = connection.getPlayer().getWorld().getEntity(getEntityId());
if (entity == null) {
// thanks mojang
return;
}
entity.setHeadRotation(getHeadYaw());
}
@Override

View File

@ -16,9 +16,8 @@ package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketEntityInitialisation implements ClientboundPacket {
public class PacketEntityInitialisation extends ClientboundPacket {
int entityId;
@Override
@ -27,11 +26,6 @@ public class PacketEntityInitialisation implements ClientboundPacket {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Initialising entity (entityId=%d)", this.entityId));

View File

@ -14,12 +14,13 @@
package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.entities.EntityMetaData;
import de.bixilon.minosoft.data.entities.entities.Entity;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketEntityMetadata implements ClientboundPacket {
public class PacketEntityMetadata extends ClientboundPacket {
int entityId;
EntityMetaData entityMetaData;
@ -31,8 +32,13 @@ public class PacketEntityMetadata implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
Entity entity = connection.getPlayer().getWorld().getEntity(getEntityId());
if (entity == null) {
// thanks mojang
return;
}
entity.setMetaData(getEntityData());
}
@Override

View File

@ -14,12 +14,13 @@
package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.entities.RelativeLocation;
import de.bixilon.minosoft.data.entities.entities.Entity;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketEntityMovement implements ClientboundPacket {
public class PacketEntityMovement extends ClientboundPacket {
int entityId;
RelativeLocation location;
boolean onGround;
@ -39,8 +40,13 @@ public class PacketEntityMovement implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
Entity entity = connection.getPlayer().getWorld().getEntity(getEntityId());
if (entity == null) {
// thanks mojang
return;
}
entity.setLocation(getRelativeLocation());
}
@Override

View File

@ -14,12 +14,13 @@
package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.entities.RelativeLocation;
import de.bixilon.minosoft.data.entities.entities.Entity;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketEntityMovementAndRotation implements ClientboundPacket {
public class PacketEntityMovementAndRotation extends ClientboundPacket {
int entityId;
RelativeLocation location;
short yaw;
@ -44,8 +45,14 @@ public class PacketEntityMovementAndRotation implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
Entity entity = connection.getPlayer().getWorld().getEntity(getEntityId());
if (entity == null) {
// thanks mojang
return;
}
entity.setLocation(getRelativeLocation());
entity.setRotation(getYaw(), getPitch());
}
@Override

View File

@ -18,12 +18,11 @@ import de.bixilon.minosoft.data.entities.EntityPropertyKeys;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import java.util.HashMap;
import java.util.UUID;
public class PacketEntityProperties implements ClientboundPacket {
public class PacketEntityProperties extends ClientboundPacket {
final HashMap<EntityPropertyKeys, EntityProperty> properties = new HashMap<>();
int entityId;
@ -62,11 +61,6 @@ public class PacketEntityProperties implements ClientboundPacket {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Received entity properties (entityId=%d)", this.entityId));

View File

@ -13,12 +13,13 @@
package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.entities.entities.Entity;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketEntityRotation implements ClientboundPacket {
public class PacketEntityRotation extends ClientboundPacket {
int entityId;
short yaw;
short pitch;
@ -38,8 +39,13 @@ public class PacketEntityRotation implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
Entity entity = connection.getPlayer().getWorld().getEntity(getEntityId());
if (entity == null) {
// thanks mojang
return;
}
entity.setRotation(getYaw(), getPitch());
}
@Override

View File

@ -17,9 +17,8 @@ import de.bixilon.minosoft.data.SoundCategories;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketEntitySoundEffect implements ClientboundPacket {
public class PacketEntitySoundEffect extends ClientboundPacket {
int soundId;
SoundCategories category;
int entityId;
@ -36,11 +35,6 @@ public class PacketEntitySoundEffect implements ClientboundPacket {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Play sound entity effect (soundId=%d, category=%s, entityId=%d, volume=%s, pitch=%s)", this.soundId, this.category, this.entityId, this.volume, this.pitch));

View File

@ -14,12 +14,13 @@
package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.entities.Location;
import de.bixilon.minosoft.data.entities.entities.Entity;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketEntityTeleport implements ClientboundPacket {
public class PacketEntityTeleport extends ClientboundPacket {
int entityId;
Location location;
short yaw;
@ -45,8 +46,14 @@ public class PacketEntityTeleport implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
Entity entity = connection.getPlayer().getWorld().getEntity(getEntityId());
if (entity == null) {
// thanks mojang
return;
}
entity.setLocation(getRelativeLocation());
entity.setRotation(getYaw(), getPitch());
}
@Override

View File

@ -14,12 +14,13 @@
package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.entities.Velocity;
import de.bixilon.minosoft.data.entities.entities.Entity;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketEntityVelocity implements ClientboundPacket {
public class PacketEntityVelocity extends ClientboundPacket {
int entityId;
Velocity velocity;
@ -32,8 +33,14 @@ public class PacketEntityVelocity implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
Entity entity = connection.getPlayer().getWorld().getEntity(getEntityId());
if (entity == null) {
// thanks mojang
return;
}
connection.getVelocityHandler().handleVelocity(entity, getVelocity());
}
@Override

View File

@ -14,12 +14,13 @@
package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.entities.Location;
import de.bixilon.minosoft.data.world.BlockPosition;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketExplosion implements ClientboundPacket {
public class PacketExplosion extends ClientboundPacket {
Location location;
float radius;
byte[][] records;
@ -49,8 +50,16 @@ public class PacketExplosion implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
// remove all blocks set by explosion
for (byte[] record : getRecords()) {
int x = ((int) getLocation().getX()) + record[0];
int y = ((int) getLocation().getY()) + record[1];
int z = ((int) getLocation().getZ()) + record[2];
BlockPosition blockPosition = new BlockPosition(x, (short) y, z);
connection.getPlayer().getWorld().setBlock(blockPosition, null);
}
// ToDo: motion support
}
@Override

View File

@ -17,9 +17,8 @@ import de.bixilon.minosoft.data.entities.Location;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketFacePlayer implements ClientboundPacket {
public class PacketFacePlayer extends ClientboundPacket {
PlayerFaces face;
Location location;
int entityId = -1;
@ -37,11 +36,6 @@ public class PacketFacePlayer implements ClientboundPacket {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Received face player packet (face=%s, location=%s, entityId=%d, entityFace=%s)", this.face, this.location, this.entityId, this.entityFace));

View File

@ -14,11 +14,11 @@
package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketHeldItemChangeReceiving implements ClientboundPacket {
public class PacketHeldItemChangeReceiving extends ClientboundPacket {
byte slot;
@Override
@ -28,8 +28,8 @@ public class PacketHeldItemChangeReceiving implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
connection.getPlayer().setSelectedSlot(getSlot());
}
@Override

View File

@ -17,11 +17,13 @@ import com.google.common.collect.HashBiMap;
import de.bixilon.minosoft.data.Difficulties;
import de.bixilon.minosoft.data.GameModes;
import de.bixilon.minosoft.data.LevelTypes;
import de.bixilon.minosoft.data.entities.entities.player.PlayerEntity;
import de.bixilon.minosoft.data.mappings.Dimension;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.JoinGameEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition;
import de.bixilon.minosoft.util.BitByte;
import de.bixilon.minosoft.util.nbt.tag.CompoundTag;
@ -30,7 +32,7 @@ import de.bixilon.minosoft.util.nbt.tag.NBTTag;
import java.util.HashMap;
public class PacketJoinGame implements ClientboundPacket {
public class PacketJoinGame extends ClientboundPacket {
int entityId;
boolean hardcore;
GameModes gameMode;
@ -140,8 +142,19 @@ public class PacketJoinGame implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
if (connection.fireEvent(new JoinGameEvent(connection, this))) {
return;
}
connection.getPlayer().setGameMode(getGameMode());
connection.getPlayer().getWorld().setHardcore(isHardcore());
connection.getMapping().setDimensions(getDimensions());
connection.getPlayer().getWorld().setDimension(getDimension());
PlayerEntity entity = new PlayerEntity(connection, getEntityId(), connection.getPlayer().getPlayerUUID(), null, null, connection.getPlayer().getPlayerName(), null, null);
connection.getPlayer().setEntity(entity);
connection.getPlayer().getWorld().addEntity(entity);
connection.getSender().sendChatMessage("I am alive! ~ Minosoft");
}
private HashMap<String, HashBiMap<String, Dimension>> parseDimensionCodec(NBTTag nbt, int versionId) {

View File

@ -14,12 +14,13 @@
package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.packets.serverbound.play.PacketKeepAliveResponse;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketKeepAlive implements ClientboundPacket {
long id;
public class PacketKeepAlive extends ClientboundPacket {
private long id;
@Override
public boolean read(InByteBuffer buffer) {
@ -36,8 +37,8 @@ public class PacketKeepAlive implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
connection.sendPacket(new PacketKeepAliveResponse(getId()));
}
@Override

View File

@ -17,11 +17,10 @@ import de.bixilon.minosoft.data.text.ChatComponent;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import java.util.ArrayList;
public class PacketMapData implements ClientboundPacket {
public class PacketMapData extends ClientboundPacket {
int mapId;
PacketMapDataDataActions dataData;
@ -119,11 +118,6 @@ public class PacketMapData implements ClientboundPacket {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Received map meta data (mapId=%d)", this.mapId));

View File

@ -14,16 +14,18 @@
package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.mappings.blocks.Block;
import de.bixilon.minosoft.data.world.Chunk;
import de.bixilon.minosoft.data.world.ChunkLocation;
import de.bixilon.minosoft.data.world.InChunkLocation;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.MultiBlockChangeEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import java.util.HashMap;
public class PacketMultiBlockChange implements ClientboundPacket {
public class PacketMultiBlockChange extends ClientboundPacket {
final HashMap<InChunkLocation, Block> blocks = new HashMap<>();
ChunkLocation location;
@ -74,8 +76,14 @@ public class PacketMultiBlockChange implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
Chunk chunk = connection.getPlayer().getWorld().getChunk(getLocation());
if (chunk == null) {
// thanks mojang
return;
}
connection.fireEvent(new MultiBlockChangeEvent(connection, this));
chunk.setBlocks(getBlocks());
}
@Override

View File

@ -16,10 +16,9 @@ package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import de.bixilon.minosoft.util.nbt.tag.CompoundTag;
public class PacketNBTQueryResponse implements ClientboundPacket {
public class PacketNBTQueryResponse extends ClientboundPacket {
int transactionId;
CompoundTag tag;
@ -30,11 +29,6 @@ public class PacketNBTQueryResponse implements ClientboundPacket {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Received nbt response (transactionId=%d, nbt=%s)", this.transactionId, this.tag.toString()));

View File

@ -18,10 +18,9 @@ import de.bixilon.minosoft.data.entities.Location;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition;
public class PacketNamedSoundEffect implements ClientboundPacket {
public class PacketNamedSoundEffect extends ClientboundPacket {
Location location;
String sound;
float volume;
@ -58,10 +57,6 @@ public class PacketNamedSoundEffect implements ClientboundPacket {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {

View File

@ -17,9 +17,8 @@ import de.bixilon.minosoft.data.player.Hands;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketOpenBook implements ClientboundPacket {
public class PacketOpenBook extends ClientboundPacket {
Hands hand;
@Override
@ -32,11 +31,6 @@ public class PacketOpenBook implements ClientboundPacket {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Received open book packet (hand=%s)", this.hand));

View File

@ -16,9 +16,8 @@ package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketOpenHorseWindow implements ClientboundPacket {
public class PacketOpenHorseWindow extends ClientboundPacket {
byte windowId;
int slotCount;
int entityId;
@ -31,11 +30,6 @@ public class PacketOpenHorseWindow implements ClientboundPacket {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Received open horse window packet (windowId=%d, slotCount=%d, entityId=%s)", this.windowId, this.slotCount, this.entityId));

View File

@ -15,11 +15,12 @@ package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.world.BlockPosition;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.OpenSignEditorEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketOpenSignEditor implements ClientboundPacket {
public class PacketOpenSignEditor extends ClientboundPacket {
BlockPosition position;
@Override
@ -33,8 +34,11 @@ public class PacketOpenSignEditor implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
OpenSignEditorEvent event = new OpenSignEditorEvent(connection, this);
if (connection.fireEvent(event)) {
return;
}
}
@Override

View File

@ -17,11 +17,11 @@ import de.bixilon.minosoft.data.inventory.InventoryProperties;
import de.bixilon.minosoft.data.inventory.InventoryTypes;
import de.bixilon.minosoft.data.text.ChatComponent;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketOpenWindow implements ClientboundPacket {
public class PacketOpenWindow extends ClientboundPacket {
byte windowId;
InventoryTypes type;
ChatComponent title;
@ -55,8 +55,8 @@ public class PacketOpenWindow implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
connection.getPlayer().createInventory(getInventoryProperties());
}
@Override

View File

@ -17,11 +17,12 @@ import de.bixilon.minosoft.data.entities.Location;
import de.bixilon.minosoft.data.mappings.particle.Particle;
import de.bixilon.minosoft.data.mappings.particle.data.ParticleData;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.ParticleSpawnEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketParticle implements ClientboundPacket {
public class PacketParticle extends ClientboundPacket {
Particle particleType;
ParticleData particleData;
boolean longDistance;
@ -71,8 +72,10 @@ public class PacketParticle implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
if (connection.fireEvent(new ParticleSpawnEvent(connection, this))) {
return;
}
}
@Override

View File

@ -16,10 +16,9 @@ package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import de.bixilon.minosoft.util.BitByte;
public class PacketPlayerAbilitiesReceiving implements ClientboundPacket {
public class PacketPlayerAbilitiesReceiving extends ClientboundPacket {
boolean creative; // is this needed? receiving the gameMode in change Game state
boolean flying;
boolean canFly;
@ -49,11 +48,6 @@ public class PacketPlayerAbilitiesReceiving implements ClientboundPacket {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Received player abilities packet: (creative=%s, flying=%s, canFly=%s, godMode=%s, flyingSpeed=%s, walkingSpeed=%s)", this.creative, this.flying, this.canFly, this.godMode, this.flyingSpeed, this.walkingSpeed));

View File

@ -14,20 +14,22 @@
package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.GameModes;
import de.bixilon.minosoft.data.player.PlayerListItem;
import de.bixilon.minosoft.data.player.PlayerListItemBulk;
import de.bixilon.minosoft.data.player.PlayerProperties;
import de.bixilon.minosoft.data.player.PlayerProperty;
import de.bixilon.minosoft.data.text.ChatComponent;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.PlayerListItemChangeEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.UUID;
public class PacketPlayerListItem implements ClientboundPacket {
public class PacketPlayerListItem extends ClientboundPacket {
final ArrayList<PlayerListItemBulk> playerList = new ArrayList<>();
@Override
@ -76,8 +78,48 @@ public class PacketPlayerListItem implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
if (connection.fireEvent(new PlayerListItemChangeEvent(connection, this))) {
return;
}
for (PlayerListItemBulk bulk : getPlayerList()) {
PlayerListItem item = connection.getPlayer().getPlayerList().get(bulk.getUUID());
if (item == null && !bulk.isLegacy()) {
// Aaaaah. Fuck this shit. The server sends us bullshit!
continue;
}
switch (bulk.getAction()) {
case ADD -> connection.getPlayer().getPlayerList().put(bulk.getUUID(), new PlayerListItem(bulk.getUUID(), bulk.getName(), bulk.getPing(), bulk.getGameMode(), bulk.getDisplayName(), bulk.getProperties()));
case UPDATE_LATENCY -> {
if (bulk.isLegacy()) {
// add or update
if (item == null) {
// create
UUID uuid = UUID.randomUUID();
connection.getPlayer().getPlayerList().put(uuid, new PlayerListItem(uuid, bulk.getName(), bulk.getPing()));
} else {
// update ping
item.setPing(bulk.getPing());
}
continue;
}
connection.getPlayer().getPlayerList().get(bulk.getUUID()).setPing(bulk.getPing());
}
case REMOVE_PLAYER -> {
if (bulk.isLegacy()) {
if (item == null) {
// not initialized yet
continue;
}
connection.getPlayer().getPlayerList().remove(connection.getPlayer().getPlayerListItem(bulk.getName()).getUUID());
continue;
}
connection.getPlayer().getPlayerList().remove(bulk.getUUID());
}
case UPDATE_GAMEMODE -> item.setGameMode(bulk.getGameMode());
case UPDATE_DISPLAY_NAME -> item.setDisplayName(bulk.getDisplayName());
}
}
}
@Override

View File

@ -16,11 +16,13 @@ package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.entities.EntityRotation;
import de.bixilon.minosoft.data.entities.Location;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.packets.serverbound.play.PacketConfirmTeleport;
import de.bixilon.minosoft.protocol.packets.serverbound.play.PacketPlayerPositionAndRotationSending;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketPlayerPositionAndRotation implements ClientboundPacket {
public class PacketPlayerPositionAndRotation extends ClientboundPacket {
Location location;
EntityRotation rotation;
boolean onGround;
@ -45,8 +47,14 @@ public class PacketPlayerPositionAndRotation implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
// ToDo: GUI should do this
connection.getPlayer().getEntity().setLocation(getLocation());
if (connection.getVersion().getVersionId() >= 79) {
connection.sendPacket(new PacketConfirmTeleport(getTeleportId()));
} else {
connection.sendPacket(new PacketPlayerPositionAndRotationSending(getLocation(), getRotation(), isOnGround()));
}
}
@Override

View File

@ -13,13 +13,17 @@
package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.Minosoft;
import de.bixilon.minosoft.config.ConfigurationPaths;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.channels.DefaultPluginChannels;
import de.bixilon.minosoft.modding.event.events.PluginMessageReceiveEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import de.bixilon.minosoft.protocol.protocol.OutByteBuffer;
public class PacketPluginMessageReceiving implements ClientboundPacket {
public class PacketPluginMessageReceiving extends ClientboundPacket {
String channel;
byte[] data;
Connection connection;
@ -39,8 +43,37 @@ public class PacketPluginMessageReceiving implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
if (getChannel().equals(DefaultPluginChannels.MC_BRAND.getChangeableIdentifier().get(connection.getVersion().getVersionId()))) {
InByteBuffer data = getDataAsBuffer();
String serverVersion;
String clientVersion = (Minosoft.getConfig().getBoolean(ConfigurationPaths.BooleanPaths.NETWORK_FAKE_CLIENT_BRAND) ? "vanilla" : "Minosoft");
OutByteBuffer toSend = new OutByteBuffer(connection);
if (connection.getVersion().getVersionId() < 29) {
// no length prefix
serverVersion = new String(data.getBytes());
toSend.writeBytes(clientVersion.getBytes());
} else {
// length prefix
serverVersion = data.readString();
toSend.writeString(clientVersion);
}
Log.info(String.format("Server is running \"%s\", connected with %s", serverVersion, connection.getVersion().getVersionName()));
connection.getSender().sendPluginMessageData(DefaultPluginChannels.MC_BRAND.getChangeableIdentifier().get(connection.getVersion().getVersionId()), toSend);
return;
}
// MC|StopSound
if (getChannel().equals(DefaultPluginChannels.MC_BRAND.getChangeableIdentifier().get(connection.getVersion().getVersionId()))) {
// it is basically a packet, handle it like a packet:
PacketStopSound packet = new PacketStopSound();
packet.read(getDataAsBuffer());
packet.handle(connection);
return;
}
connection.fireEvent(new PluginMessageReceiveEvent(connection, this));
}
@Override

View File

@ -13,13 +13,14 @@
package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.entities.entities.Entity;
import de.bixilon.minosoft.data.mappings.MobEffect;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketRemoveEntityEffect implements ClientboundPacket {
public class PacketRemoveEntityEffect extends ClientboundPacket {
int entityId;
MobEffect effect;
@ -32,8 +33,13 @@ public class PacketRemoveEntityEffect implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
Entity entity = connection.getPlayer().getWorld().getEntity(getEntityId());
if (entity == null) {
// thanks mojang
return;
}
entity.removeEffect(getEffect());
}
@Override

View File

@ -14,11 +14,12 @@
package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.ResourcePackChangeEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketResourcePackSend implements ClientboundPacket {
public class PacketResourcePackSend extends ClientboundPacket {
String url;
String hash;
boolean forced;
@ -34,8 +35,11 @@ public class PacketResourcePackSend implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
ResourcePackChangeEvent event = new ResourcePackChangeEvent(connection, this);
if (connection.fireEvent(event)) {
return;
}
}
@Override

View File

@ -18,12 +18,13 @@ import de.bixilon.minosoft.data.GameModes;
import de.bixilon.minosoft.data.LevelTypes;
import de.bixilon.minosoft.data.mappings.Dimension;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.RespawnEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import de.bixilon.minosoft.util.nbt.tag.CompoundTag;
public class PacketRespawn implements ClientboundPacket {
public class PacketRespawn extends ClientboundPacket {
Dimension dimension;
Difficulties difficulty;
GameModes gameMode;
@ -76,8 +77,16 @@ public class PacketRespawn implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
if (connection.fireEvent(new RespawnEvent(connection, this))) {
return;
}
// clear all chunks
connection.getPlayer().getWorld().getAllChunks().clear();
connection.getPlayer().getWorld().setDimension(getDimension());
connection.getPlayer().setSpawnConfirmed(false);
connection.getPlayer().setGameMode(getGameMode());
}
@Override

View File

@ -16,9 +16,8 @@ package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketScoreboardDisplayScoreboard implements ClientboundPacket {
public class PacketScoreboardDisplayScoreboard extends ClientboundPacket {
ScoreboardAnimations action;
String scoreName;
@ -29,11 +28,6 @@ public class PacketScoreboardDisplayScoreboard implements ClientboundPacket {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Received display scoreboard packet (position=%s, scoreName=\"%s\"", this.action, this.scoreName));

View File

@ -13,13 +13,14 @@
package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.scoreboard.ScoreboardObjective;
import de.bixilon.minosoft.data.text.ChatComponent;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketScoreboardObjective implements ClientboundPacket {
public class PacketScoreboardObjective extends ClientboundPacket {
String name;
ChatComponent value;
ScoreboardObjectiveActions action;
@ -52,8 +53,12 @@ public class PacketScoreboardObjective implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
switch (getAction()) {
case CREATE -> connection.getPlayer().getScoreboardManager().addObjective(new ScoreboardObjective(getName(), getValue()));
case UPDATE -> connection.getPlayer().getScoreboardManager().getObjective(getName()).setValue(getValue());
case REMOVE -> connection.getPlayer().getScoreboardManager().removeObjective(getName());
}
}
@Override

View File

@ -13,12 +13,14 @@
package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.scoreboard.ScoreboardObjective;
import de.bixilon.minosoft.data.scoreboard.ScoreboardScore;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketScoreboardUpdateScore implements ClientboundPacket {
public class PacketScoreboardUpdateScore extends ClientboundPacket {
String itemName;
ScoreboardUpdateScoreActions action;
String scoreName;
@ -48,8 +50,17 @@ public class PacketScoreboardUpdateScore implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
switch (getAction()) {
case CREATE_UPDATE -> connection.getPlayer().getScoreboardManager().getObjective(getScoreName()).addScore(new ScoreboardScore(getItemName(), getScoreName(), getScoreValue()));
case REMOVE -> {
ScoreboardObjective objective = connection.getPlayer().getScoreboardManager().getObjective(getScoreName());
if (objective != null) {
// thanks mojang
objective.removeScore(getItemName());
}
}
}
}
@Override

View File

@ -17,9 +17,8 @@ import de.bixilon.minosoft.data.ChangeableIdentifier;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketSelectAdvancementTab implements ClientboundPacket {
public class PacketSelectAdvancementTab extends ClientboundPacket {
AdvancementTabs tab;
@Override
@ -30,11 +29,6 @@ public class PacketSelectAdvancementTab implements ClientboundPacket {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Received select advancement tab (tab=%s)", this.tab));

View File

@ -17,9 +17,8 @@ import de.bixilon.minosoft.data.Difficulties;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketServerDifficulty implements ClientboundPacket {
public class PacketServerDifficulty extends ClientboundPacket {
Difficulties difficulty;
boolean locked;
@ -32,11 +31,6 @@ public class PacketServerDifficulty implements ClientboundPacket {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Received server difficulty (difficulty=%s)", this.difficulty));

View File

@ -14,11 +14,10 @@
package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.clientbound.interfaces.PacketCompressionInterface;
import de.bixilon.minosoft.protocol.packets.clientbound.interfaces.CompressionThresholdChange;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketSetCompression implements PacketCompressionInterface {
public class PacketSetCompression extends CompressionThresholdChange {
int threshold;
@Override
@ -27,11 +26,6 @@ public class PacketSetCompression implements PacketCompressionInterface {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Received set compression packet (threshold=%d)", this.threshold));

View File

@ -16,9 +16,8 @@ package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketSetCooldown implements ClientboundPacket {
public class PacketSetCooldown extends ClientboundPacket {
int item;
int cooldownTicks;
@ -30,11 +29,6 @@ public class PacketSetCooldown implements ClientboundPacket {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Receiving item cooldown (item=%s, coolDown=%dt)", this.item, this.cooldownTicks));

View File

@ -14,11 +14,12 @@
package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.ExperienceChangeEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketSetExperience implements ClientboundPacket {
public class PacketSetExperience extends ClientboundPacket {
float bar;
int level;
int total;
@ -37,8 +38,13 @@ public class PacketSetExperience implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
if (connection.fireEvent(new ExperienceChangeEvent(connection, this))) {
return;
}
connection.getPlayer().setLevel(getLevel());
connection.getPlayer().setTotalExperience(getTotal());
}
@Override

View File

@ -16,9 +16,8 @@ package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketSetPassenger implements ClientboundPacket {
public class PacketSetPassenger extends ClientboundPacket {
int vehicleId;
int[] entityIds;
@ -32,11 +31,6 @@ public class PacketSetPassenger implements ClientboundPacket {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Attaching %d entities (vehicleId=%d)", this.entityIds.length, this.vehicleId));

View File

@ -15,11 +15,12 @@ package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.inventory.Slot;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.SingleSlotChangeEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketSetSlot implements ClientboundPacket {
public class PacketSetSlot extends ClientboundPacket {
byte windowId;
short slotId;
Slot slot; // ToDo use enum Slots
@ -33,8 +34,15 @@ public class PacketSetSlot implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
connection.fireEvent(new SingleSlotChangeEvent(connection, this));
if (getWindowId() == -1) {
// thanks mojang
// ToDo: what is windowId -1
return;
}
connection.getPlayer().setSlot(getWindowId(), getSlotId(), getSlot());
}
@Override

View File

@ -18,10 +18,9 @@ import de.bixilon.minosoft.data.entities.Location;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition;
public class PacketSoundEffect implements ClientboundPacket {
public class PacketSoundEffect extends ClientboundPacket {
Location location;
SoundCategories category;
int soundId;
@ -52,11 +51,6 @@ public class PacketSoundEffect implements ClientboundPacket {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Play sound effect (soundId=%d, category=%s, volume=%s, pitch=%s, location=%s)", this.soundId, this.category, this.volume, this.pitch, this.location));

View File

@ -16,11 +16,12 @@ package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.entities.Location;
import de.bixilon.minosoft.data.entities.entities.ExperienceOrb;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.EntitySpawnEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketSpawnExperienceOrb implements ClientboundPacket {
public class PacketSpawnExperienceOrb extends ClientboundPacket {
ExperienceOrb entity;
@Override
@ -38,8 +39,10 @@ public class PacketSpawnExperienceOrb implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
connection.fireEvent(new EntitySpawnEvent(connection, this));
connection.getPlayer().getWorld().addEntity(getEntity());
}
@Override

View File

@ -15,11 +15,12 @@ package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.world.BlockPosition;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.SpawnLocationChangeEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketSpawnLocation implements ClientboundPacket {
public class PacketSpawnLocation extends ClientboundPacket {
BlockPosition location;
@Override
@ -33,8 +34,9 @@ public class PacketSpawnLocation implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
connection.fireEvent(new SpawnLocationChangeEvent(connection, this));
connection.getPlayer().setSpawnLocation(getSpawnLocation());
}
@Override

View File

@ -21,15 +21,15 @@ import de.bixilon.minosoft.data.entities.entities.Entity;
import de.bixilon.minosoft.data.entities.entities.UnknownEntityException;
import de.bixilon.minosoft.data.mappings.VersionTweaker;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.EntitySpawnEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import java.lang.reflect.InvocationTargetException;
import java.util.UUID;
public class PacketSpawnMob implements ClientboundPacket {
public class PacketSpawnMob extends ClientboundPacket {
Entity entity;
Velocity velocity;
@ -79,8 +79,11 @@ public class PacketSpawnMob implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
connection.fireEvent(new EntitySpawnEvent(connection, this));
connection.getPlayer().getWorld().addEntity(getEntity());
connection.getVelocityHandler().handleVelocity(getEntity(), getVelocity());
}
@Override

View File

@ -21,15 +21,15 @@ import de.bixilon.minosoft.data.entities.entities.Entity;
import de.bixilon.minosoft.data.entities.entities.UnknownEntityException;
import de.bixilon.minosoft.data.mappings.VersionTweaker;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.EntitySpawnEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import java.lang.reflect.InvocationTargetException;
import java.util.UUID;
public class PacketSpawnObject implements ClientboundPacket {
public class PacketSpawnObject extends ClientboundPacket {
Entity entity;
Velocity velocity;
@ -89,8 +89,11 @@ public class PacketSpawnObject implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
connection.fireEvent(new EntitySpawnEvent(connection, this));
connection.getPlayer().getWorld().addEntity(getEntity());
connection.getVelocityHandler().handleVelocity(getEntity(), getVelocity());
}
@Override

View File

@ -18,13 +18,14 @@ import de.bixilon.minosoft.data.entities.entities.decoration.Painting;
import de.bixilon.minosoft.data.mappings.Motive;
import de.bixilon.minosoft.data.world.BlockPosition;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.EntitySpawnEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import java.util.UUID;
public class PacketSpawnPainting implements ClientboundPacket {
public class PacketSpawnPainting extends ClientboundPacket {
Painting entity;
@Override
@ -54,8 +55,10 @@ public class PacketSpawnPainting implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
connection.fireEvent(new EntitySpawnEvent(connection, this));
connection.getPlayer().getWorld().addEntity(getEntity());
}
@Override

View File

@ -21,14 +21,15 @@ import de.bixilon.minosoft.data.entities.Velocity;
import de.bixilon.minosoft.data.entities.entities.player.PlayerEntity;
import de.bixilon.minosoft.data.mappings.Item;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.EntitySpawnEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import java.util.HashSet;
import java.util.UUID;
public class PacketSpawnPlayer implements ClientboundPacket {
public class PacketSpawnPlayer extends ClientboundPacket {
PlayerEntity entity;
Velocity velocity;
@ -74,8 +75,11 @@ public class PacketSpawnPlayer implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
connection.fireEvent(new EntitySpawnEvent(connection, this));
connection.getPlayer().getWorld().addEntity(getEntity());
connection.getVelocityHandler().handleVelocity(getEntity(), getVelocity());
}
@Override

View File

@ -16,11 +16,13 @@ package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.entities.Location;
import de.bixilon.minosoft.data.entities.entities.LightningBolt;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.EntitySpawnEvent;
import de.bixilon.minosoft.modding.event.events.LightningBoltSpawnEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketSpawnWeatherEntity implements ClientboundPacket {
public class PacketSpawnWeatherEntity extends ClientboundPacket {
LightningBolt entity;
@Override
@ -38,8 +40,9 @@ public class PacketSpawnWeatherEntity implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
connection.fireEvent(new EntitySpawnEvent(connection, this));
connection.fireEvent(new LightningBoltSpawnEvent(connection, this));
}
@Override

View File

@ -18,11 +18,10 @@ import de.bixilon.minosoft.data.mappings.statistics.StatisticCategories;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import java.util.HashMap;
public class PacketStatistics implements ClientboundPacket {
public class PacketStatistics extends ClientboundPacket {
final HashMap<Statistic, Integer> statistics = new HashMap<>();
@Override
@ -39,11 +38,6 @@ public class PacketStatistics implements ClientboundPacket {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Received player statistics (count=%d)", this.statistics.size()));

View File

@ -18,10 +18,9 @@ import de.bixilon.minosoft.data.mappings.ModIdentifier;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import de.bixilon.minosoft.util.BitByte;
public class PacketStopSound implements ClientboundPacket {
public class PacketStopSound extends ClientboundPacket {
SoundCategories category;
ModIdentifier soundIdentifier;
@ -42,11 +41,6 @@ public class PacketStopSound implements ClientboundPacket {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Received stop sound (category=%s, soundIdentifier=%s)", this.category, this.soundIdentifier));

View File

@ -16,9 +16,8 @@ package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketTabCompleteReceiving implements ClientboundPacket {
public class PacketTabCompleteReceiving extends ClientboundPacket {
int count;
String[] match;
@ -41,11 +40,6 @@ public class PacketTabCompleteReceiving implements ClientboundPacket {
return false;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Received tab complete for message(count=%d)", this.count));

View File

@ -15,11 +15,12 @@ package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.text.ChatComponent;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.PlayerListInfoChangeEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketTabHeaderAndFooter implements ClientboundPacket {
public class PacketTabHeaderAndFooter extends ClientboundPacket {
ChatComponent header;
ChatComponent footer;
@ -31,8 +32,13 @@ public class PacketTabHeaderAndFooter implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
if (connection.fireEvent(new PlayerListInfoChangeEvent(connection, this))) {
return;
}
connection.getPlayer().setTabHeader(getHeader());
connection.getPlayer().setTabFooter(getFooter());
}
@Override

View File

@ -17,9 +17,8 @@ import de.bixilon.minosoft.data.Tag;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketTags implements ClientboundPacket {
public class PacketTags extends ClientboundPacket {
Tag[] blockTags;
Tag[] itemTags;
Tag[] fluidTags;
@ -44,11 +43,6 @@ public class PacketTags implements ClientboundPacket {
return ret;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Received tags (blockLength=%d, itemLength=%d, fluidLength=%d, entityLength=%d)", this.blockTags.length, this.itemTags.length, this.fluidTags.length, ((this.entityTags == null) ? 0 : this.entityTags.length)));

View File

@ -13,16 +13,19 @@
package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.scoreboard.Team;
import de.bixilon.minosoft.data.text.ChatCode;
import de.bixilon.minosoft.data.text.ChatColors;
import de.bixilon.minosoft.data.text.ChatComponent;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import de.bixilon.minosoft.util.BitByte;
public class PacketTeams implements ClientboundPacket {
import java.util.Arrays;
public class PacketTeams extends ClientboundPacket {
String name;
TeamActions action;
ChatComponent displayName;
@ -84,8 +87,14 @@ public class PacketTeams implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
switch (getAction()) {
case CREATE -> connection.getPlayer().getScoreboardManager().addTeam(new Team(getName(), getDisplayName(), getPrefix(), getSuffix(), isFriendlyFireEnabled(), isSeeingFriendlyInvisibles(), getPlayerNames()));
case INFORMATION_UPDATE -> connection.getPlayer().getScoreboardManager().getTeam(getName()).updateInformation(getDisplayName(), getPrefix(), getSuffix(), isFriendlyFireEnabled(), isSeeingFriendlyInvisibles());
case REMOVE -> connection.getPlayer().getScoreboardManager().removeTeam(getName());
case PLAYER_ADD -> connection.getPlayer().getScoreboardManager().getTeam(getName()).addPlayers(Arrays.asList(getPlayerNames()));
case PLAYER_REMOVE -> connection.getPlayer().getScoreboardManager().getTeam(getName()).removePlayers(Arrays.asList(getPlayerNames()));
}
}
private void setFriendlyFireByLegacy(byte raw) {

View File

@ -14,11 +14,12 @@
package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.TimeChangeEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketTimeUpdate implements ClientboundPacket {
public class PacketTimeUpdate extends ClientboundPacket {
long worldAge;
long timeOfDay;
@ -30,8 +31,10 @@ public class PacketTimeUpdate implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
if (connection.fireEvent(new TimeChangeEvent(connection, this))) {
return;
}
}
@Override

View File

@ -18,11 +18,12 @@ import de.bixilon.minosoft.data.VersionValueMap;
import de.bixilon.minosoft.data.mappings.versions.Versions;
import de.bixilon.minosoft.data.text.ChatComponent;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.TitleChangeEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketTitle implements ClientboundPacket {
public class PacketTitle extends ClientboundPacket {
TitleActions action;
// fields depend on action
@ -48,8 +49,10 @@ public class PacketTitle implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
if (connection.fireEvent(new TitleChangeEvent(connection, this))) {
return;
}
}
@Override

View File

@ -19,9 +19,8 @@ import de.bixilon.minosoft.data.inventory.Slot;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketTradeList implements ClientboundPacket {
public class PacketTradeList extends ClientboundPacket {
int windowId;
Trade[] trades;
VillagerData.VillagerLevels level;
@ -61,11 +60,6 @@ public class PacketTradeList implements ClientboundPacket {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Received select trade packet (windowId=%d, tradeLength=%d, level=%s, experience=%d, regularVillager=%s, canRestock=%s)", this.windowId, this.trades.length, this.level, this.experience, this.isRegularVillager, this.canRestock));

View File

@ -15,11 +15,11 @@ package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.world.ChunkLocation;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketUnloadChunk implements ClientboundPacket {
public class PacketUnloadChunk extends ClientboundPacket {
ChunkLocation location;
@Override
@ -29,8 +29,8 @@ public class PacketUnloadChunk implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
connection.getPlayer().getWorld().unloadChunk(getLocation());
}
@Override

View File

@ -17,9 +17,8 @@ import de.bixilon.minosoft.data.mappings.recipes.Recipe;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketUnlockRecipes implements ClientboundPacket {
public class PacketUnlockRecipes extends ClientboundPacket {
private UnlockRecipeActions action;
private boolean isCraftingBookOpen;
private boolean isSmeltingBookOpen;
@ -72,11 +71,6 @@ public class PacketUnlockRecipes implements ClientboundPacket {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Received unlock crafting recipe packet (action=%s, isCraftingBookOpen=%s, isFilteringActive=%s, isSmeltingBookOpen=%s, isSmeltingFilteringActive=%s listedLength=%d, taggedLength=%s)", this.action, this.isCraftingBookOpen, this.isCraftingFilteringActive, this.isSmeltingBookOpen, this.isSmeltingFilteringActive, this.listed.length, ((this.tagged == null) ? 0 : this.tagged.length)));

View File

@ -14,11 +14,12 @@
package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.modding.event.events.UpdateHealthEvent;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketUpdateHealth implements ClientboundPacket {
public class PacketUpdateHealth extends ClientboundPacket {
float health;
int food;
float saturation;
@ -36,8 +37,16 @@ public class PacketUpdateHealth implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
connection.fireEvent(new UpdateHealthEvent(connection, this));
connection.getPlayer().setFood(getFood());
connection.getPlayer().setHealth(getHealth());
connection.getPlayer().setSaturation(getSaturation());
if (getHealth() <= 0.0F) {
// do respawn
connection.getSender().respawn();
}
}
@Override

View File

@ -17,10 +17,9 @@ import de.bixilon.minosoft.data.world.ChunkLocation;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import de.bixilon.minosoft.util.ChunkUtil;
public class PacketUpdateLight implements ClientboundPacket {
public class PacketUpdateLight extends ClientboundPacket {
ChunkLocation location;
@Override
@ -38,11 +37,6 @@ public class PacketUpdateLight implements ClientboundPacket {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Received light update (location=%s)", this.location));

View File

@ -16,11 +16,13 @@ package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.data.text.ChatComponent;
import de.bixilon.minosoft.data.world.BlockPosition;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.network.Connection;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import de.bixilon.minosoft.util.nbt.tag.CompoundTag;
import de.bixilon.minosoft.util.nbt.tag.StringTag;
public class PacketUpdateSignReceiving implements ClientboundPacket {
public class PacketUpdateSignReceiving extends ClientboundPacket {
final ChatComponent[] lines = new ChatComponent[4];
BlockPosition position;
@ -38,8 +40,14 @@ public class PacketUpdateSignReceiving implements ClientboundPacket {
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
public void handle(Connection connection) {
CompoundTag nbt = new CompoundTag();
nbt.writeBlockPosition(getPosition());
nbt.writeTag("id", new StringTag("minecraft:sign"));
for (int i = 0; i < 4; i++) {
nbt.writeTag(String.format("Text%d", (i + 1)), new StringTag(getLines()[i].getLegacyText()));
}
// ToDo: handle sign updates
}
@Override

View File

@ -16,9 +16,8 @@ package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InByteBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
public class PacketUpdateViewDistance implements ClientboundPacket {
public class PacketUpdateViewDistance extends ClientboundPacket {
int viewDistance;
@Override
@ -27,11 +26,6 @@ public class PacketUpdateViewDistance implements ClientboundPacket {
return true;
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
@Override
public void log() {
Log.protocol(String.format("[IN] Received view distance update (viewDistance=%s)", this.viewDistance));

Some files were not shown because too many files have changed in this diff Show More