1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите NMS Entity

Тема в разделе "Разработка плагинов для новичков", создана пользователем DarklingCodex, 17 янв 2019.

  1. Cool_boy

    Cool_boy Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Класс как в одном из туториалов выше. Заменяет интелект всем коровам (92) на сервере. (у меня были какие-то проблемы со спавном существ тогда) Могу на следующей неделе порыться в сорсах сервера, разобраться почему спавн из туториала у меня не работал.
    PHP:
    import net.minecraft.server.v1_12_R1.Entity;
    import net.minecraft.server.v1_12_R1.EntityCow;
    import net.minecraft.server.v1_12_R1.EntityTypes;
    import net.minecraft.server.v1_12_R1.MinecraftKey;
    import org.bukkit.entity.EntityType;


    public enum CustomEntities {

        COW("cow", 92, EntityType.COW, EntityCow.class, CustomCow.class); //сам класс

        private String name;
        private int id;
        private EntityType entityType;
        private Class<? extends EntitynmsClass;
        private Class<? extends 
    EntitycustomClass;
        private 
    MinecraftKey key;
        private 
    MinecraftKey oldKey;

        private 
    CustomEntities(String nameint idEntityType entityType, Class<? extends EntitynmsClass, Class<? extends EntitycustomClass) {
            
    this.name name;
            
    this.id id;
            
    this.entityType entityType;
            
    this.nmsClass nmsClass;
            
    this.customClass customClass;
            
    this.key = new MinecraftKey(name);
            
    this.oldKey EntityTypes.b.b(nmsClass);
        }

        public static 
    void registerEntities() { for (CustomEntities ce CustomEntities.values()) ce.register(); }
        public static 
    void unregisterEntities() { for (CustomEntities ce CustomEntities.values()) ce.unregister(); }

        private 
    void register() {
            
    EntityTypes.d.add(key);
            
    EntityTypes.b.a(idkeycustomClass);
        }

        private 
    void unregister() {
            
    EntityTypes.d.remove(key);
            
    EntityTypes.b.a(idoldKeynmsClass);
        }

        public 
    String getName() {
            return 
    name;
        }

        public 
    int getID() {
            return 
    id;
        }

        public 
    EntityType getEntityType() {
            return 
    entityType;
        }

        public Class<
    ?> getCustomClass() {
            return customClass;
        }
    }

    PHP:
    import java.util.LinkedHashSet;
    import net.minecraft.server.v1_12_R1.EntityCow;
    import net.minecraft.server.v1_12_R1.EntityCreeper;
    import net.minecraft.server.v1_12_R1.EntityInsentient;
    import net.minecraft.server.v1_12_R1.EntitySkeleton;
    import net.minecraft.server.v1_12_R1.EntityWolf;
    import net.minecraft.server.v1_12_R1.EntityZombie;
    import net.minecraft.server.v1_12_R1.GenericAttributes;
    import net.minecraft.server.v1_12_R1.IAttribute;
    import net.minecraft.server.v1_12_R1.NavigationAbstract;
    import net.minecraft.server.v1_12_R1.PathEntity;
    import net.minecraft.server.v1_12_R1.PathfinderGoalFloat;
    import net.minecraft.server.v1_12_R1.PathfinderGoalHurtByTarget;
    import net.minecraft.server.v1_12_R1.PathfinderGoalMeleeAttack;
    import net.minecraft.server.v1_12_R1.PathfinderGoalNearestAttackableTarget;
    import net.minecraft.server.v1_12_R1.PathfinderGoalRandomLookaround;
    import net.minecraft.server.v1_12_R1.PathfinderGoalSelector;
    import net.minecraft.server.v1_12_R1.World;
    import org.bukkit.Bukkit;
    import org.bukkit.Location;
    import org.bukkit.craftbukkit.v1_12_R1.CraftWorld;
    import static ua.Coolboy.ReflectionTest.Util.getPrivateField;

    public class 
    CustomCow extends EntityZombie {

        public 
    CustomCow(net.minecraft.server.v1_12_R1.World world) {
            
    super(world);
            
    //очистка PathfinderSelector'ов
            
    LinkedHashSet goalB = (LinkedHashSetgetPrivateField("b"PathfinderGoalSelector.class, goalSelector);
            
    goalB.clear();
            
    LinkedHashSet goalC = (LinkedHashSetgetPrivateField("c"PathfinderGoalSelector.class, goalSelector);
            
    goalC.clear();
            
    LinkedHashSet targetB = (LinkedHashSetgetPrivateField("b"PathfinderGoalSelector.class, targetSelector);
            
    targetB.clear();
            
    LinkedHashSet targetC = (LinkedHashSetgetPrivateField("c"PathfinderGoalSelector.class, targetSelector);
            
    targetC.clear();
           
    //Свой интелект
            
    this.goalSelector.a(0, new PathfinderGoalFloat(this));
            
    this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget(thisEntityZombie.class, true));
            
    this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget(thisEntityCreeper.class, true));
            
    this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget(thisEntitySkeleton.class, true));
            
    this.targetSelector.a(1, new PathfinderGoalHurtByTarget(thistrue));
            
    this.goalSelector.a(8, new PathfinderGoalRandomLookaround(this));
            
    this.goalSelector.a(0, new PathfinderGoalMeleeAttack(this1.0Dfalse));
           
    //кастомный PathfinderGoal, кажется тоже был в туториале
            
    this.goalSelector.a(2, new PathfinderGoalWalkToLoc(this, new Location(Bukkit.getWorld("world"),0,72,-24), 2));
        }

        @
    Override
        
    protected void initAttributes() {
            
    //Уже не помню зачем это. Кажется коровки не хотели никого бить
            
    super.initAttributes();
            
    //getAttributeMap().b(GenericAttributes.ATTACK_DAMAGE);
            
    getAttributeInstance(GenericAttributes.ATTACK_DAMAGE).setValue(5.0);
        }
       
    //просто метод чтобы управлять Entity
        
    public void walkToLoc(Location locdouble speed) {
            
    EntityInsentient entity this;
            
    NavigationAbstract navigation entity.getNavigation();
            
    PathEntity path navigation.a(loc.getX(), loc.getY(), loc.getZ());
            
    navigation.a(pathspeed);
        }

    }

     
  2. Автор темы
    DarklingCodex

    DarklingCodex Активный участник Пользователь

    Баллы:
    61
    A method spawna?
     

Поделиться этой страницей