- 137
- 7
- 37
Всем привет, сделал предмет огнестрельного оружия, сделал EntityThrowable пули, проверяю в ClientTickEvent нажатие лкм и отправляю пакет, который должен спавнить пулю, но ничего не спавнится
Всем заранее спасибо за помощь
ClientTickEvent:
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void leftClickEvent(ClientTickEvent event) {
if (Mouse.isButtonDown(0)) {
Main.INSTANCE.sendToServer(new FireMessage(1));
}
}
Пакет:
public class FireMessage implements IMessage {
private int value;
public FireMessage() {
this.value = 0;
}
public FireMessage(int number) {
this.value = number;
}
public void fromBytes(ByteBuf buf) {
this.value = buf.readInt();
}
public void toBytes(ByteBuf buf) {
buf.writeInt(this.value);
}
public static class Handler implements IMessageHandler<FireMessage, IMessage> {
public IMessage onMessage(FireMessage message, MessageContext ctx) {
EntityPlayerMP player = ctx.getServerHandler().playerEntity;
World world = player.worldObj;
if (player.getHeldItem().getItem() != null && player.getHeldItem().getItem() == Main.akm) {
ctx.getServerHandler().playerEntity.worldObj.spawnEntityInWorld(new EntityBullet(world, player));
}
return null;
}
}
}
Регистрация пакета и эвента:
INSTANCE.registerMessage(FireMessage.Handler.class, FireMessage.class, 0, Side.SERVER);
MinecraftForge.EVENT_BUS.register(new ShootEvent());