Use entity (!)
клиент шлет этот пакет только при использовании пр.кнопки мыши
This commit is contained in:
@@ -62,6 +62,13 @@ public class InMemoryPlayerManager implements PlayerManager, Runnable {
|
|||||||
.findFirst();
|
.findFirst();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<Player> getPlayerById(final int id) {
|
||||||
|
return players.stream()
|
||||||
|
.filter(player -> player.getId() == id)
|
||||||
|
.findFirst();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Player> getPlayers() {
|
public List<Player> getPlayers() {
|
||||||
return players.stream().filter(Player::isOnline).collect(Collectors.toList());
|
return players.stream().filter(Player::isOnline).collect(Collectors.toList());
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ public interface PlayerManager {
|
|||||||
void joinServer(Player player);
|
void joinServer(Player player);
|
||||||
void leftServer(Player player);
|
void leftServer(Player player);
|
||||||
Optional<Player> getPlayer(String name);
|
Optional<Player> getPlayer(String name);
|
||||||
|
Optional<Player> getPlayerById(int id);
|
||||||
List<Player> getPlayers();
|
List<Player> getPlayers();
|
||||||
int getCountOnlinePlayers();
|
int getCountOnlinePlayers();
|
||||||
NetChannel getBroadcastChannel();
|
NetChannel getBroadcastChannel();
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ public class PacketManager {
|
|||||||
.put(0x03, ChatMessagePacket.class)
|
.put(0x03, ChatMessagePacket.class)
|
||||||
.put(0x04, TimeUpdatePacket.class)
|
.put(0x04, TimeUpdatePacket.class)
|
||||||
.put(0x06, SpawnPositionPacket.class)
|
.put(0x06, SpawnPositionPacket.class)
|
||||||
|
.put(0x07, UseEntityPacket.class)
|
||||||
.put(0x0B, PlayerPositionPacket.class)
|
.put(0x0B, PlayerPositionPacket.class)
|
||||||
.put(0x0C, PlayerLookPacket.class)
|
.put(0x0C, PlayerLookPacket.class)
|
||||||
.put(0x0D, PositionAndLookPacket.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);
|
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