заведи метод handleClient и handleServer. Вызывай их из главного через Invoke.@JustAGod Зря ты не завез из коробки исключения из валидации... Например: у меня есть пакет, который использует методы которые вырезаются на клиенте, но не на сервере... При этом я сам метод хандлера вырезать не могу, т.к. он переопределяющий =0
Не имею привычки по пустякам добавлять лишние зависимости.Используй пакетную систему CCL
Звучит как костыль = Pзаведи метод handleClient и handleServer. Вызывай их из главного через Invoke.
Звучит как безопасный код.Звучит как костыль = P
Абсолютно всегда так делаю. Намного проще вырезать: повесил на handleServer аннотацию и все серверные пакеты вырезались.Звучит как костыль = P
я... наверное совсем охренел, но можно пример? я не до конца понимаю в чем соль... типа сделать отдельный класс, который будет реализовывать IMessageHandler<[CLASS], IMessage>?Абсолютно всегда так делаю.
public static class Handler implements IMessageHandler<YouPacket, IMessage> {
@Override
public IMessage onMessage(YouPacket packet, MessageContext ctx) {
if(ctx.side.isClient()) {
act(packet);
} else {
act(ctx.getServerHandler().playerEntity , packet);
}
return null;
}
@GradleSideOnly(GradleSide.CLIENT)
private void act(YouPacket packet) {
}
@GradleSideOnly(GradleSide.SERVER)
private void act(EntityPlayerMP player, YouPacket packet) {
}
}
Вот в этом и проблема, что валидатор начинает мозгу любить, мол метода нет...вызывай свои подметоды.
@Mod.EventHandler
public void preinit(FMLPreInitializationEvent event) {
if (event.getSide().isServer()) serverPreInt(event); <- указывает сюда
}
@GradleSideOnly(GradleSide.SERVER)
@SideOnly(Side.SERVER)
private void serverPreInt(FMLPreInitializationEvent event) {
<код>
}
Cannot find method ru.will0376.ob.OB.serverPreInt(Lnet/minecraftforge/fml/common/event/FMLPreInitializationEvent;)V
Может стоит упомянуть в "обзоре" на это?есть Invoke.server и Invoke.client
initializeDefault
. Теперь она принимает 2 параметра (back compatibility осталась конечно). Написал об этом в описании.