Сделанный полёт не работает на сервере

Версия Minecraft
1.12.2
6
0
Хочу сделать свои крылья, сделал небольшую часть, проверил на сервере, а он ругается пишет то что полёты на сервере отключены.
Что я сделал неправильно ?:confused:
package com.demik.flyy;

import java.awt.event.InputEvent;

import net.minecraft.client.Minecraft;
import net.minecraft.entity.Entity;


import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.Vec3d;
import net.minecraft.util.text.TextComponentString;
import net.minecraftforge.event.entity.living.LivingEvent.LivingJumpEvent;
import net.minecraftforge.event.entity.living.LivingFallEvent;
import net.minecraftforge.event.entity.player.PlayerInteractEvent.RightClickBlock;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.InputEvent.KeyInputEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import scala.Console;
import com.demik.flyy.keybinds;

public class EventsHandler
{
boolean fly=false,acc=true;

@SubscribeEvent
public void fall(LivingFallEvent event)
{
event.setCanceled(true);
}

@SubscribeEvent
public void Playerfly(TickEvent.PlayerTickEvent event)
{
if((event.player.isInWater()) || (event.player.isCreative()))fly=false;
if(fly)
{
Vec3d acvc=event.player.getLookVec();
double x=acvc.x;
double y=acvc.y;
double z=acvc.z;
if(acvc.y>1)
{
x=0;
y=1;
z=0;
}
if(!(acc) || ((event.player.getPosition().getY()>240) && (y>0))) event.player.setVelocity(event.player.motionX, 0, event.player.motionZ);
else event.player.addVelocity(x/40, y/40+0.039, z/40);
if((y>-0.15)&&(y<0.15))event.player.setVelocity(event.player.motionX, event.player.motionY/1.03, event.player.motionZ);
}
}

@SubscribeEvent
public void qweqwe(KeyInputEvent event)
{
if ((Minecraft.getMinecraft().inGameHasFocus) && !(Minecraft.getMinecraft().player.isCreative()))
{
acc=Minecraft.getMinecraft().gameSettings.keyBindForward.isKeyDown();
if((Minecraft.getMinecraft().gameSettings.keyBindJump.isKeyDown())&&!(Minecraft.getMinecraft().player.onGround)&&!(Minecraft.getMinecraft().player.isInWater()))
{
fly=!fly;
}
}
}
}
Зареганы события в главном файле мода в preinit
Я так понял, что сервер не понимает что игрок должен летать.
P.S с java работаю первый раз
 
Решение
Ты ведь в курсе что объект твоего мода создается и на клиенте и на сервере? Т.е. будет переменная EventsHandler#fly на клиенте, и EventsHandler#fly на сервере. KeyInputEvent срабатывает только на клиенте. Как по твоему измененная переменная попадет на сервер?

PS: И пожалуйста, не юзай спойлеры для кода. Для листинга есть отдельная кнопка.
А не проще все делать на Server Side only, при нажатии на кнопку в игре - отправлять пакет на сервер.
Хранилище - просто мапа String, boolean.
String - ник игрока, boolean - "fly".
 
Назад
Сверху