Java源码示例:net.minecraft.network.play.client.CPacketPlayerTryUseItemOnBlock
示例1
private void place (BlockPos pos, EnumFacing direction) {
final Block block = mc.world.getBlockState(pos).getBlock();
final boolean activated = block.onBlockActivated(mc.world, pos, mc.world.getBlockState(pos), mc.player, EnumHand.MAIN_HAND, direction, 0, 0, 0);
if (activated) {
mc.player.connection.sendPacket(new CPacketEntityAction(mc.player, CPacketEntityAction.Action.START_SNEAKING));
}
this.mc.player.connection.sendPacket(new CPacketPlayerTryUseItemOnBlock(pos, direction, EnumHand.MAIN_HAND, 0.0F, 0.0F, 0.0F));
if (activated) {
mc.player.connection.sendPacket(new CPacketEntityAction(mc.player, CPacketEntityAction.Action.STOP_SNEAKING));
}
}
示例2
@Listener
public void sendPacket(EventSendPacket event) {
if (event.getStage() == EventStageable.EventStage.PRE) {
if (event.getPacket() instanceof CPacketPlayerTryUseItemOnBlock) {
if (this.clicked) {
this.clicked = false;
return;
}
final CPacketPlayerTryUseItemOnBlock packet = (CPacketPlayerTryUseItemOnBlock) event.getPacket();
final Minecraft mc = Minecraft.getMinecraft();
if (mc.currentScreen == null) {
final Block block = mc.world.getBlockState(packet.getPos()).getBlock();
if (block.onBlockActivated(mc.world, packet.getPos(), mc.world.getBlockState(packet.getPos()), mc.player, packet.getHand(), packet.getDirection(), packet.getFacingX(), packet.getFacingY(), packet.getFacingZ())) {
return;
}
final BlockPos usable = findUsableBlock(packet.getHand(), packet.getDirection(), packet.getFacingX(), packet.getFacingY(), packet.getFacingZ());
if (usable != null) {
mc.player.swingArm(packet.getHand());
mc.player.connection.sendPacket(new CPacketPlayerTryUseItemOnBlock(usable, packet.getDirection(), packet.getHand(), packet.getFacingX(), packet.getFacingY(), packet.getFacingZ()));
this.clicked = true;
}else{
final Entity usableEntity = findUsableEntity(packet.getHand());
if(usableEntity != null) {
mc.player.connection.sendPacket(new CPacketUseEntity(usableEntity, packet.getHand()));
this.clicked = true;
}
}
}
}
}
}
示例3
@Listener
public void sendPacket(EventSendPacket event) {
if (event.getStage() == EventStageable.EventStage.PRE) {
if (event.getPacket() instanceof CPacketPlayerTryUseItemOnBlock && !Minecraft.getMinecraft().player.isSneaking()) {
Minecraft.getMinecraft().player.connection.sendPacket(new CPacketEntityAction(Minecraft.getMinecraft().player, CPacketEntityAction.Action.STOP_SNEAKING));
}
}
}
示例4
@Listener
public void sendPacket(EventSendPacket event) {
if(event.getStage() == EventStageable.EventStage.PRE) {
if(event.getPacket() instanceof CPacketPlayerTryUseItemOnBlock) {
final CPacketPlayerTryUseItemOnBlock packet = (CPacketPlayerTryUseItemOnBlock) event.getPacket();
if(packet.getPos().getY() >= 255 && packet.getDirection() == EnumFacing.UP) {
packet.placedBlockDirection = EnumFacing.DOWN;
}
}
}
}
示例5
@Override
public void onTick() {
if (counter++ % (TPS * MULTIPLIER) == 0) {
if (isPlaced()) {
getNetworkManager()
.sendPacket(
new CPacketPlayerDigging(
CPacketPlayerDigging.Action.START_DESTROY_BLOCK,
getBlockBelow(),
EnumFacing.UP));
swingHand();
return;
}
LocalPlayerInventory.InvItem item =
LocalPlayerInventory.getHotbarInventory()
.stream()
.filter(itm -> itm.getItemStack().getItem() instanceof ItemRedstone)
.findAny()
.orElse(LocalPlayerInventory.InvItem.EMPTY);
if (item.isNull()) {
return;
}
RayTraceResult result = getTraceBelow();
if (result == null) {
return;
}
if (!Blocks.REDSTONE_WIRE.canPlaceBlockAt(getWorld(), result.getBlockPos())) {
return; // can't place block
}
ResetFunction func = LocalPlayerInventory.setSelected(item);
LocalPlayerInventory.syncSelected();
getNetworkManager()
.sendPacket(
new CPacketPlayerTryUseItemOnBlock(
result.getBlockPos(),
EnumFacing.UP,
EnumHand.MAIN_HAND,
(float) (result.hitVec.x - result.getBlockPos().getX()),
(float) (result.hitVec.y - result.getBlockPos().getY()),
(float) (result.hitVec.z - result.getBlockPos().getZ())));
swingHand();
func.revert();
}
}