Пожалуйста используйте инструменты форматирования кода. Не вставляйте его как обычный текст. Если вы не стараетесь оформить ваш ответ, то никто не будет стараться его понять и помочь вам
package net.divinerpg.reducedrecoil;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.living.LivingAttackEvent;
@Mod(modid = KnockbackReducerMod.MODID, version = KnockbackReducerMod.VERSION, acceptableRemoteVersions = "*")
public class KnockbackReducerMod {
public static final String MODID = "knockbackmod";
public static final String VERSION = "1.0";
@Mod.EventHandler
public void init(FMLInitializationEvent event) {
// Регистрируем обработчик событий только на сервере
MinecraftForge.EVENT_BUS.register(new KnockbackEventHandler());
}
public static class KnockbackEventHandler {
// Уровень уменьшения отталкивания
private static final double KNOCKBACK_REDUCTION = 0.2; // уменьшение на 70% от стандартного
@SubscribeEvent
public void onEntityAttack(LivingAttackEvent event) {
// Проверяем, что атакуемая сущность — игрок
if (event.entity instanceof EntityPlayer && !event.entity.worldObj.isRemote) {
EntityPlayer player = (EntityPlayer) event.entity;
Entity attacker = event.source.getEntity();
// Если атакующий — сущность (например, другой игрок или моб)
if (attacker instanceof EntityLivingBase) {
// Уменьшаем силу отталкивания игрока
player.motionX *= KNOCKBACK_REDUCTION;
player.motionZ *= KNOCKBACK_REDUCTION;
// Обновляем движение игрока на сервере
player.velocityChanged = true;
}
}
}
}
}