- Баллы
- 173
Туториал
Мой кастомный зомби:
Если раскомментировать goal/target selectors (Entity AI tasks), то зомби не атакуют игроков.
А в таком виде как сейчас они атакуют игроков, но GenericAttributes (Shared monster attributes) работают только на зомби, которые заспавнены яйцом спавна. Чтоthe fuck не так?
Регистратор кастомных существ: мало ли пригодится
Мой кастомный зомби:
Java:
package ru.onlymc.OnlyMZ;
//import java.lang.reflect.Field;
//import org.bukkit.craftbukkit.v1_7_R4.util.UnsafeList;
//import net.minecraft.entity.player.EntityPlayer;//import net.minecraft.server.v1_7_R4.EntityHuman;
import net.minecraft.entity.monster.EntityZombie;//import net.minecraft.server.v1_7_R4.EntityZombie;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.SharedMonsterAttributes;//import net.minecraft.server.v1_7_R4.GenericAttributes;
//import net.minecraft.entity.ai.EntityAISwimming;//import net.minecraft.server.v1_7_R4.PathfinderGoalFloat;
//import net.minecraft.entity.ai.EntityAIHurtByTarget;//import net.minecraft.server.v1_7_R4.PathfinderGoalHurtByTarget;
//import net.minecraft.entity.ai.EntityAIWatchClosest;//import net.minecraft.server.v1_7_R4.PathfinderGoalLookAtPlayer;
//import net.minecraft.entity.ai.EntityAIAttackOnCollide;//import net.minecraft.server.v1_7_R4.PathfinderGoalMeleeAttack;
//import net.minecraft.entity.ai.EntityAIMoveThroughVillage;//import net.minecraft.server.v1_7_R4.PathfinderGoalMoveThroughVillage;
//import net.minecraft.entity.ai.EntityAIMoveTowardsRestriction;//import net.minecraft.server.v1_7_R4.PathfinderGoalMoveTowardsRestriction;
//import net.minecraft.entity.ai.EntityAINearestAttackableTarget;//import net.minecraft.server.v1_7_R4.PathfinderGoalNearestAttackableTarget;
//import net.minecraft.entity.ai.EntityAILookIdle;//import net.minecraft.server.v1_7_R4.PathfinderGoalRandomLookaround;
//import net.minecraft.entity.ai.EntityAIWander;//import net.minecraft.server.v1_7_R4.PathfinderGoalRandomStroll;
//import net.minecraft.entity.ai.EntityAITasks;//import net.minecraft.server.v1_7_R4.PathfinderGoalSelector;
import net.minecraft.world.World;//import net.minecraft.server.v1_7_R4.World;
public class CustomEntityZombie extends EntityZombie {
public CustomEntityZombie(World world) {
super(world);
((EntityLiving)this).getNavigator().setBreakDoors(false);
((EntityLiving)this).getNavigator().setAvoidSun(false);
((EntityLiving)this).getNavigator().setCanSwim(true);
/*try {
Field bField = EntityAITasks.class.getDeclaredField("b");
bField.setAccessible(true);
Field cField = EntityAITasks.class.getDeclaredField("c");
cField.setAccessible(true);
bField.set(((EntityLiving)this).tasks, new UnsafeList<EntityAITasks>());//goalSelector - tasks
bField.set(((EntityLiving)this).targetTasks, new UnsafeList<EntityAITasks>());//targetSelector - targetTasks
cField.set(((EntityLiving)this).tasks, new UnsafeList<EntityAITasks>());//goalSelector - tasks
cField.set(((EntityLiving)this).targetTasks, new UnsafeList<EntityAITasks>());//targetSelector - targetTasks
} catch (Exception exc) {
exc.printStackTrace();
}*/
//a - addTask
/*((EntityLiving)this).tasks.addTask(0, new EntityAISwimming(this));
((EntityLiving)this).tasks.addTask(2, new EntityAIAttackOnCollide(this, EntityPlayer.class, 1.0D, false));
//((EntityLiving)this).tasks.addTask(4, new EntityAIAttackOnCollide(this, EntityVillager.class, 1.0D, true));
((EntityLiving)this).tasks.addTask(5, new EntityAIMoveTowardsRestriction(this, 1.0D));
((EntityLiving)this).tasks.addTask(6, new EntityAIMoveThroughVillage(this, 1.0D, false));
((EntityLiving)this).tasks.addTask(7, new EntityAIWander(this, 1.0D));
((EntityLiving)this).tasks.addTask(8, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F));
((EntityLiving)this).tasks.addTask(8, new EntityAILookIdle(this));
((EntityLiving)this).tasks.addTask(1, new EntityAIHurtByTarget(this, true));
((EntityLiving)this).tasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityPlayer.class, 0, true));
//((EntityLiving)this).tasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityVillager.class, 0, false));*/
}
protected void aD() {
super.applyEntityAttributes();
((EntityLivingBase)this).getEntityAttribute(SharedMonsterAttributes.followRange).setBaseValue(40.0D);
((EntityLivingBase)this).getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.39D);// d - movementSpeed, 0.2300000041723251D
((EntityLivingBase)this).getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(3.0D);
}
}
Если раскомментировать goal/target selectors (Entity AI tasks), то зомби не атакуют игроков.
А в таком виде как сейчас они атакуют игроков, но GenericAttributes (Shared monster attributes) работают только на зомби, которые заспавнены яйцом спавна. Что
Регистратор кастомных существ: мало ли пригодится
