Use entity (!)
клиент шлет этот пакет только при использовании пр.кнопки мыши
This commit is contained in:
@@ -62,6 +62,13 @@ public class InMemoryPlayerManager implements PlayerManager, Runnable {
|
||||
.findFirst();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<Player> getPlayerById(final int id) {
|
||||
return players.stream()
|
||||
.filter(player -> player.getId() == id)
|
||||
.findFirst();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Player> getPlayers() {
|
||||
return players.stream().filter(Player::isOnline).collect(Collectors.toList());
|
||||
|
||||
@@ -15,6 +15,7 @@ public interface PlayerManager {
|
||||
void joinServer(Player player);
|
||||
void leftServer(Player player);
|
||||
Optional<Player> getPlayer(String name);
|
||||
Optional<Player> getPlayerById(int id);
|
||||
List<Player> getPlayers();
|
||||
int getCountOnlinePlayers();
|
||||
NetChannel getBroadcastChannel();
|
||||
|
||||
@@ -17,6 +17,7 @@ public class PacketManager {
|
||||
.put(0x03, ChatMessagePacket.class)
|
||||
.put(0x04, TimeUpdatePacket.class)
|
||||
.put(0x06, SpawnPositionPacket.class)
|
||||
.put(0x07, UseEntityPacket.class)
|
||||
.put(0x0B, PlayerPositionPacket.class)
|
||||
.put(0x0C, PlayerLookPacket.class)
|
||||
.put(0x0D, PositionAndLookPacket.class)
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
* DmitriyMX <dimon550@gmail.com>
|
||||
* 2018-05-23
|
||||
*/
|
||||
package mc.core.network.proto_125.packets;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.ToString;
|
||||
import mc.core.network.CSPacket;
|
||||
import mc.core.network.NetStream;
|
||||
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Getter
|
||||
@ToString
|
||||
public class UseEntityPacket implements CSPacket {
|
||||
private int playerId;
|
||||
private int targetId;
|
||||
private boolean leftMouseButton;
|
||||
|
||||
@Override
|
||||
public void readSelf(NetStream netStream) {
|
||||
playerId = netStream.readInt();
|
||||
targetId = netStream.readInt();
|
||||
leftMouseButton = netStream.readBoolean();
|
||||
}
|
||||
}
|
||||
@@ -292,4 +292,22 @@ public class PacketHandler extends SimpleChannelInboundHandler<CSPacket> {
|
||||
pl.getChannel().writeAndFlush(packet);
|
||||
});
|
||||
}
|
||||
|
||||
private void onUseEntityPacket(Channel channel, UseEntityPacket packet) {
|
||||
Optional<Player> optPlayer = playerManager.getPlayerById(packet.getPlayerId());
|
||||
if (!optPlayer.isPresent()) {
|
||||
log.debug("Player id {} not found");
|
||||
return;
|
||||
}
|
||||
Player player = optPlayer.get();
|
||||
|
||||
optPlayer = playerManager.getPlayerById(packet.getTargetId());
|
||||
if (!optPlayer.isPresent()) {
|
||||
log.debug("Target id {} not found");
|
||||
return;
|
||||
}
|
||||
Player target = optPlayer.get();
|
||||
|
||||
log.info("<{}> {} clicked <{}>", player.getName(), (packet.isLeftMouseButton() ? "left" : "right"), target.getName());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user