Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
Не злооупотребляй ими. Тут и без них можно обойтись.Движение игрока - хук в MovementInputFromOptions#updatePlayerMoveState.
import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.client.settings.GameSettings;
import net.minecraft.util.MovementInputFromOptions;
import ru.rarescrap.weightapi.WeightRegistry;
/**
* Клиентский обработчик ввода, отключающий движение при перегрузе
*/
public class FreezeMovementInput extends MovementInputFromOptions {
private EntityPlayerSP player;
public FreezeMovementInput(EntityPlayerSP entityPlayerSP, GameSettings profile) {
super(profile);
this.player = entityPlayerSP;
}
@Override
public void updatePlayerMoveState() {
if (...) { // Твое условие. Если true - то игрок может двигаться
super.updatePlayerMoveState();
} else { // Иначе - отключаем движение
this.moveStrafe = 0.0F; // Обнуляем, дабы игрок не двигался по инерации после перегруза
this.moveForward = 0.0F;
}
}
public class EventHandler {
@SideOnly(Side.CLIENT)
public static FreezeMovementInput freezeMovementInput;
// Инициализируем обработчик движения игрока на клиенте
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onSetupPlayer(EntityJoinWorldEvent event) {
if (event.entity instanceof EntityPlayerSP) {
freezeMovementInput = new FreezeMovementInput((EntityPlayerSP) event.entity, Minecraft.getMinecraft().gameSettings);
}
}
}
// Для безопасности, т.к. клиент может хаками сменить MovementInput
@SubscribeEvent
public void onServerPlayerOverload(TickEvent.PlayerTickEvent event) {
if (!event.player.worldObj.isRemote
&& ...) { // Снова твое условие остановки движения
((EntityPlayerMP) event.player).setEntityActionState(0, 0, false, false);
}
}
Смотри проверку на серве в посте вышеА что, если челик просто вырежет проверку?
И все равно сможет перемещаться?
player.moveStrafe = 0F;
player.moveFormard = 0F;
EntityViewRenderEvent.CameraSetupНичего страшного ,глупо будет с его стороны вырезать эту проверку ,потому что я отключаю движение не ради защиты чего то )А что, если челик просто вырежет проверку?
Если челик додумался вырезать проверку, значит он и без мода сможет сделать спидхак и тд. Можно хукнуться в обработчик пакета ходьбы игрока и там добавить проверку, это будет на сервере и должно спасти от хака.@RareScrap А что, если челик просто вырежет проверку?
И все равно сможет перемещаться?
player.motionX = 0;
player.motionY = 0;
player.motionZ = 0;
player.swingingHand = false;
player.limbSwing = false;
@SubscribeEvent
public void freezeEvent(LivingUpdateEvent event)
{
if (event.getEntity() instanceof EntityPlayer)
{
EntityPlayer player = (EntityPlayer) e.getEntity();
event.setCanceled(true);
}
}
Она сказала чтобы камера не двигаласьТак ты его полностью заморозишь, не только движения.