mirror of
https://github.com/Minestom/Minestom.git
synced 2024-10-01 07:57:41 +02:00
Villagers and Ageable
This commit is contained in:
parent
2a55ed654d
commit
ca3d36ac0c
@ -1,6 +1,8 @@
|
|||||||
package net.minestom.server.entity;
|
package net.minestom.server.entity;
|
||||||
|
|
||||||
import net.minestom.server.entity.type.ambient.EntityBat;
|
import net.minestom.server.entity.type.ambient.EntityBat;
|
||||||
|
import net.minestom.server.entity.type.ambient.EntityVillager;
|
||||||
|
import net.minestom.server.entity.type.ambient.EntityWanderingTrader;
|
||||||
import net.minestom.server.entity.type.animal.*;
|
import net.minestom.server.entity.type.animal.*;
|
||||||
import net.minestom.server.entity.type.decoration.EntityArmorStand;
|
import net.minestom.server.entity.type.decoration.EntityArmorStand;
|
||||||
import net.minestom.server.entity.type.monster.*;
|
import net.minestom.server.entity.type.monster.*;
|
||||||
|
12
src/main/java/net/minestom/server/entity/type/Ageable.java
Normal file
12
src/main/java/net/minestom/server/entity/type/Ageable.java
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
package net.minestom.server.entity.type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by k.shandurenko on 23.02.2021
|
||||||
|
*/
|
||||||
|
public interface Ageable {
|
||||||
|
|
||||||
|
boolean isBaby();
|
||||||
|
|
||||||
|
void setBaby(boolean value);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
package net.minestom.server.entity.type;
|
||||||
|
|
||||||
|
import net.minestom.server.entity.EntityCreature;
|
||||||
|
import net.minestom.server.entity.EntityType;
|
||||||
|
import net.minestom.server.entity.Metadata;
|
||||||
|
import net.minestom.server.instance.Instance;
|
||||||
|
import net.minestom.server.utils.Position;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by k.shandurenko on 23.02.2021
|
||||||
|
*/
|
||||||
|
public class AgeableCreature extends EntityCreature implements Ageable {
|
||||||
|
|
||||||
|
protected AgeableCreature(@NotNull EntityType entityType, @NotNull Position spawnPosition) {
|
||||||
|
super(entityType, spawnPosition);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected AgeableCreature(@NotNull EntityType entityType, @NotNull Position spawnPosition, @Nullable Instance instance) {
|
||||||
|
super(entityType, spawnPosition, instance);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isBaby() {
|
||||||
|
return this.metadata.getIndex((byte) 15, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setBaby(boolean value) {
|
||||||
|
this.metadata.setIndex((byte) 15, Metadata.Boolean(value));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getEyeHeight() {
|
||||||
|
return isBaby() ? super.getEyeHeight() / 2 : super.getEyeHeight();
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package net.minestom.server.entity.type;
|
package net.minestom.server.entity.type;
|
||||||
|
|
||||||
public interface Animal {
|
public interface Animal extends Ageable {
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,32 @@
|
|||||||
|
package net.minestom.server.entity.type.ambient;
|
||||||
|
|
||||||
|
import net.minestom.server.entity.EntityType;
|
||||||
|
import net.minestom.server.entity.Metadata;
|
||||||
|
import net.minestom.server.entity.type.AgeableCreature;
|
||||||
|
import net.minestom.server.instance.Instance;
|
||||||
|
import net.minestom.server.utils.Position;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by k.shandurenko on 23.02.2021
|
||||||
|
*/
|
||||||
|
public class EntityAbstractVillager extends AgeableCreature {
|
||||||
|
|
||||||
|
EntityAbstractVillager(@NotNull EntityType entityType, @NotNull Position spawnPosition) {
|
||||||
|
super(entityType, spawnPosition);
|
||||||
|
}
|
||||||
|
|
||||||
|
EntityAbstractVillager(@NotNull EntityType entityType, @NotNull Position spawnPosition, @Nullable Instance instance) {
|
||||||
|
super(entityType, spawnPosition, instance);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getHeadShakeTimer() {
|
||||||
|
return this.metadata.getIndex((byte) 16, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHeadShakeTimer(int value) {
|
||||||
|
this.metadata.setIndex((byte) 16, Metadata.VarInt(value));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,12 +1,12 @@
|
|||||||
package net.minestom.server.entity.type.ambient;
|
package net.minestom.server.entity.type.ambient;
|
||||||
|
|
||||||
import net.minestom.server.entity.EntityCreature;
|
|
||||||
import net.minestom.server.entity.EntityType;
|
import net.minestom.server.entity.EntityType;
|
||||||
import net.minestom.server.entity.Metadata;
|
import net.minestom.server.entity.Metadata;
|
||||||
|
import net.minestom.server.entity.type.AgeableCreature;
|
||||||
import net.minestom.server.entity.type.Animal;
|
import net.minestom.server.entity.type.Animal;
|
||||||
import net.minestom.server.utils.Position;
|
import net.minestom.server.utils.Position;
|
||||||
|
|
||||||
public class EntityBat extends EntityCreature implements Animal {
|
public class EntityBat extends AgeableCreature implements Animal {
|
||||||
|
|
||||||
public EntityBat(Position spawnPosition) {
|
public EntityBat(Position spawnPosition) {
|
||||||
super(EntityType.BAT, spawnPosition);
|
super(EntityType.BAT, spawnPosition);
|
||||||
|
@ -0,0 +1,131 @@
|
|||||||
|
package net.minestom.server.entity.type.ambient;
|
||||||
|
|
||||||
|
import net.minestom.server.entity.EntityType;
|
||||||
|
import net.minestom.server.entity.Metadata;
|
||||||
|
import net.minestom.server.entity.type.AgeableCreature;
|
||||||
|
import net.minestom.server.instance.Instance;
|
||||||
|
import net.minestom.server.utils.Position;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by k.shandurenko on 23.02.2021
|
||||||
|
*/
|
||||||
|
public class EntityVillager extends EntityAbstractVillager {
|
||||||
|
|
||||||
|
public EntityVillager(@NotNull Position spawnPosition) {
|
||||||
|
this(EntityType.VILLAGER, spawnPosition);
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityVillager(@NotNull Position spawnPosition, @Nullable Instance instance) {
|
||||||
|
this(EntityType.VILLAGER, spawnPosition, instance);
|
||||||
|
}
|
||||||
|
|
||||||
|
EntityVillager(@NotNull EntityType entityType, @NotNull Position spawnPosition) {
|
||||||
|
super(entityType, spawnPosition);
|
||||||
|
}
|
||||||
|
|
||||||
|
EntityVillager(@NotNull EntityType entityType, @NotNull Position spawnPosition, @Nullable Instance instance) {
|
||||||
|
super(entityType, spawnPosition, instance);
|
||||||
|
}
|
||||||
|
|
||||||
|
public VillagerData getVillagerData() {
|
||||||
|
int[] data = this.metadata.getIndex((byte) 17, null);
|
||||||
|
if (data == null) {
|
||||||
|
return new VillagerData(Type.PLAINS, Profession.NONE, Level.NOVICE);
|
||||||
|
}
|
||||||
|
return new VillagerData(Type.VALUES[data[0]], Profession.VALUES[data[1]], Level.VALUES[data[2] - 1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVillagerData(VillagerData data) {
|
||||||
|
this.metadata.setIndex((byte) 17, Metadata.VillagerData(
|
||||||
|
data.type.ordinal(),
|
||||||
|
data.profession.ordinal(),
|
||||||
|
data.level.ordinal() + 1
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class VillagerData {
|
||||||
|
|
||||||
|
private Type type;
|
||||||
|
private Profession profession;
|
||||||
|
private Level level;
|
||||||
|
|
||||||
|
public VillagerData(@NotNull Type type, @NotNull Profession profession, @NotNull Level level) {
|
||||||
|
this.type = type;
|
||||||
|
this.profession = profession;
|
||||||
|
this.level = level;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public Type getType() {
|
||||||
|
return this.type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setType(@NotNull Type type) {
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public Profession getProfession() {
|
||||||
|
return this.profession;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProfession(@NotNull Profession profession) {
|
||||||
|
this.profession = profession;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public Level getLevel() {
|
||||||
|
return level;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLevel(@NotNull Level level) {
|
||||||
|
this.level = level;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum Type {
|
||||||
|
DESERT,
|
||||||
|
JUNGLE,
|
||||||
|
PLAINS,
|
||||||
|
SAVANNA,
|
||||||
|
SNOW,
|
||||||
|
SWAMP,
|
||||||
|
TAIGA;
|
||||||
|
|
||||||
|
public final static Type[] VALUES = values();
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum Profession {
|
||||||
|
NONE,
|
||||||
|
ARMORER,
|
||||||
|
BUTCHER,
|
||||||
|
CARTOGRAPHER,
|
||||||
|
CLERIC,
|
||||||
|
FARMER,
|
||||||
|
FISHERMAN,
|
||||||
|
FLETCHER,
|
||||||
|
LEATHERWORKER,
|
||||||
|
LIBRARIAN,
|
||||||
|
NITWIT,
|
||||||
|
UNEMPLOYED,
|
||||||
|
MASON,
|
||||||
|
SHEPHERD,
|
||||||
|
TOOLSMITH,
|
||||||
|
WEAPONSMITH;
|
||||||
|
|
||||||
|
public final static Profession[] VALUES = values();
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum Level {
|
||||||
|
NOVICE,
|
||||||
|
APPRENTICE,
|
||||||
|
JOURNEYMAN,
|
||||||
|
EXPERT,
|
||||||
|
MASTER;
|
||||||
|
|
||||||
|
public final static Level[] VALUES = values();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
package net.minestom.server.entity.type.ambient;
|
||||||
|
|
||||||
|
import net.minestom.server.entity.EntityType;
|
||||||
|
import net.minestom.server.instance.Instance;
|
||||||
|
import net.minestom.server.utils.Position;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by k.shandurenko on 23.02.2021
|
||||||
|
*/
|
||||||
|
public class EntityWanderingTrader extends EntityAbstractVillager {
|
||||||
|
|
||||||
|
public EntityWanderingTrader(@NotNull Position spawnPosition) {
|
||||||
|
super(EntityType.WANDERING_TRADER, spawnPosition);
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityWanderingTrader(@NotNull Position spawnPosition, @Nullable Instance instance) {
|
||||||
|
super(EntityType.WANDERING_TRADER, spawnPosition, instance);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,8 +1,8 @@
|
|||||||
package net.minestom.server.entity.type.animal;
|
package net.minestom.server.entity.type.animal;
|
||||||
|
|
||||||
import net.minestom.server.entity.EntityCreature;
|
|
||||||
import net.minestom.server.entity.EntityType;
|
import net.minestom.server.entity.EntityType;
|
||||||
import net.minestom.server.entity.Metadata;
|
import net.minestom.server.entity.Metadata;
|
||||||
|
import net.minestom.server.entity.type.AgeableCreature;
|
||||||
import net.minestom.server.entity.type.Animal;
|
import net.minestom.server.entity.type.Animal;
|
||||||
import net.minestom.server.instance.Instance;
|
import net.minestom.server.instance.Instance;
|
||||||
import net.minestom.server.utils.Position;
|
import net.minestom.server.utils.Position;
|
||||||
@ -14,7 +14,7 @@ import java.util.UUID;
|
|||||||
/**
|
/**
|
||||||
* Created by k.shandurenko on 23.02.2021
|
* Created by k.shandurenko on 23.02.2021
|
||||||
*/
|
*/
|
||||||
public class EntityAbstractHorse extends EntityCreature implements Animal {
|
public class EntityAbstractHorse extends AgeableCreature implements Animal {
|
||||||
|
|
||||||
private final static byte TAMED_BIT = 0x02;
|
private final static byte TAMED_BIT = 0x02;
|
||||||
private final static byte SADDLED_BIT = 0x04;
|
private final static byte SADDLED_BIT = 0x04;
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
package net.minestom.server.entity.type.animal;
|
package net.minestom.server.entity.type.animal;
|
||||||
|
|
||||||
import net.minestom.server.entity.EntityCreature;
|
|
||||||
import net.minestom.server.entity.EntityType;
|
import net.minestom.server.entity.EntityType;
|
||||||
|
import net.minestom.server.entity.type.AgeableCreature;
|
||||||
import net.minestom.server.entity.type.Animal;
|
import net.minestom.server.entity.type.Animal;
|
||||||
import net.minestom.server.utils.Position;
|
import net.minestom.server.utils.Position;
|
||||||
|
|
||||||
public class EntityBee extends EntityCreature implements Animal {
|
public class EntityBee extends AgeableCreature implements Animal {
|
||||||
public EntityBee(Position spawnPosition) {
|
public EntityBee(Position spawnPosition) {
|
||||||
super(EntityType.BEE, spawnPosition);
|
super(EntityType.BEE, spawnPosition);
|
||||||
setBoundingBox(0.7f,0.6f,0.7f);
|
setBoundingBox(0.7f, 0.6f, 0.7f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
package net.minestom.server.entity.type.animal;
|
package net.minestom.server.entity.type.animal;
|
||||||
|
|
||||||
import net.minestom.server.entity.EntityCreature;
|
|
||||||
import net.minestom.server.entity.EntityType;
|
import net.minestom.server.entity.EntityType;
|
||||||
|
import net.minestom.server.entity.type.AgeableCreature;
|
||||||
import net.minestom.server.entity.type.Animal;
|
import net.minestom.server.entity.type.Animal;
|
||||||
import net.minestom.server.utils.Position;
|
import net.minestom.server.utils.Position;
|
||||||
|
|
||||||
public class EntityChicken extends EntityCreature implements Animal {
|
public class EntityChicken extends AgeableCreature implements Animal {
|
||||||
public EntityChicken(Position spawnPosition) {
|
public EntityChicken(Position spawnPosition) {
|
||||||
super(EntityType.CHICKEN, spawnPosition);
|
super(EntityType.CHICKEN, spawnPosition);
|
||||||
setBoundingBox(0.4f, 0.7f, 0.4f);
|
setBoundingBox(0.4f, 0.7f, 0.4f);
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
package net.minestom.server.entity.type.animal;
|
package net.minestom.server.entity.type.animal;
|
||||||
|
|
||||||
import net.minestom.server.entity.EntityCreature;
|
|
||||||
import net.minestom.server.entity.EntityType;
|
import net.minestom.server.entity.EntityType;
|
||||||
|
import net.minestom.server.entity.type.AgeableCreature;
|
||||||
import net.minestom.server.entity.type.Animal;
|
import net.minestom.server.entity.type.Animal;
|
||||||
import net.minestom.server.utils.Position;
|
import net.minestom.server.utils.Position;
|
||||||
|
|
||||||
public class EntityCow extends EntityCreature implements Animal {
|
public class EntityCow extends AgeableCreature implements Animal {
|
||||||
public EntityCow(Position spawnPosition) {
|
public EntityCow(Position spawnPosition) {
|
||||||
super(EntityType.COW, spawnPosition);
|
super(EntityType.COW, spawnPosition);
|
||||||
setBoundingBox(0.9f, 1.4f, 0.9f);
|
setBoundingBox(0.9f, 1.4f, 0.9f);
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
package net.minestom.server.entity.type.animal;
|
package net.minestom.server.entity.type.animal;
|
||||||
|
|
||||||
import net.minestom.server.entity.EntityCreature;
|
|
||||||
import net.minestom.server.entity.EntityType;
|
import net.minestom.server.entity.EntityType;
|
||||||
|
import net.minestom.server.entity.type.AgeableCreature;
|
||||||
import net.minestom.server.entity.type.Animal;
|
import net.minestom.server.entity.type.Animal;
|
||||||
import net.minestom.server.utils.Position;
|
import net.minestom.server.utils.Position;
|
||||||
|
|
||||||
public class EntityDolphin extends EntityCreature implements Animal {
|
public class EntityDolphin extends AgeableCreature implements Animal {
|
||||||
public EntityDolphin(Position spawnPosition) {
|
public EntityDolphin(Position spawnPosition) {
|
||||||
super(EntityType.DOLPHIN, spawnPosition);
|
super(EntityType.DOLPHIN, spawnPosition);
|
||||||
setBoundingBox(0.9f,0.6f,0.9f);
|
setBoundingBox(0.9f, 0.6f, 0.9f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
package net.minestom.server.entity.type.animal;
|
package net.minestom.server.entity.type.animal;
|
||||||
|
|
||||||
import net.minestom.server.entity.EntityCreature;
|
|
||||||
import net.minestom.server.entity.EntityType;
|
import net.minestom.server.entity.EntityType;
|
||||||
|
import net.minestom.server.entity.type.AgeableCreature;
|
||||||
import net.minestom.server.entity.type.Animal;
|
import net.minestom.server.entity.type.Animal;
|
||||||
import net.minestom.server.utils.Position;
|
import net.minestom.server.utils.Position;
|
||||||
|
|
||||||
public class EntityFox extends EntityCreature implements Animal {
|
public class EntityFox extends AgeableCreature implements Animal {
|
||||||
public EntityFox(Position spawnPosition) {
|
public EntityFox(Position spawnPosition) {
|
||||||
super(EntityType.FOX, spawnPosition);
|
super(EntityType.FOX, spawnPosition);
|
||||||
setBoundingBox(0.6f, 0.7f, 0.6f);
|
setBoundingBox(0.6f, 0.7f, 0.6f);
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
package net.minestom.server.entity.type.animal;
|
package net.minestom.server.entity.type.animal;
|
||||||
|
|
||||||
import net.minestom.server.entity.EntityCreature;
|
|
||||||
import net.minestom.server.entity.EntityType;
|
import net.minestom.server.entity.EntityType;
|
||||||
import net.minestom.server.entity.Metadata;
|
import net.minestom.server.entity.Metadata;
|
||||||
|
import net.minestom.server.entity.type.AgeableCreature;
|
||||||
import net.minestom.server.entity.type.Animal;
|
import net.minestom.server.entity.type.Animal;
|
||||||
import net.minestom.server.utils.Position;
|
import net.minestom.server.utils.Position;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
public class EntityMooshroom extends EntityCreature implements Animal {
|
public class EntityMooshroom extends AgeableCreature implements Animal {
|
||||||
|
|
||||||
public EntityMooshroom(Position spawnPosition) {
|
public EntityMooshroom(Position spawnPosition) {
|
||||||
super(EntityType.MOOSHROOM, spawnPosition);
|
super(EntityType.MOOSHROOM, spawnPosition);
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
package net.minestom.server.entity.type.animal;
|
package net.minestom.server.entity.type.animal;
|
||||||
|
|
||||||
import net.minestom.server.entity.EntityCreature;
|
|
||||||
import net.minestom.server.entity.EntityType;
|
import net.minestom.server.entity.EntityType;
|
||||||
|
import net.minestom.server.entity.type.AgeableCreature;
|
||||||
import net.minestom.server.entity.type.Animal;
|
import net.minestom.server.entity.type.Animal;
|
||||||
import net.minestom.server.utils.Position;
|
import net.minestom.server.utils.Position;
|
||||||
|
|
||||||
public class EntityOcelot extends EntityCreature implements Animal {
|
public class EntityOcelot extends AgeableCreature implements Animal {
|
||||||
public EntityOcelot(Position spawnPosition) {
|
public EntityOcelot(Position spawnPosition) {
|
||||||
super(EntityType.OCELOT, spawnPosition);
|
super(EntityType.OCELOT, spawnPosition);
|
||||||
setBoundingBox(0.6f, 0.7f, 0.6f);
|
setBoundingBox(0.6f, 0.7f, 0.6f);
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
package net.minestom.server.entity.type.animal;
|
package net.minestom.server.entity.type.animal;
|
||||||
|
|
||||||
import net.minestom.server.entity.EntityCreature;
|
|
||||||
import net.minestom.server.entity.EntityType;
|
import net.minestom.server.entity.EntityType;
|
||||||
|
import net.minestom.server.entity.type.AgeableCreature;
|
||||||
import net.minestom.server.entity.type.Animal;
|
import net.minestom.server.entity.type.Animal;
|
||||||
import net.minestom.server.utils.Position;
|
import net.minestom.server.utils.Position;
|
||||||
|
|
||||||
public class EntityPanda extends EntityCreature implements Animal {
|
public class EntityPanda extends AgeableCreature implements Animal {
|
||||||
public EntityPanda(Position spawnPosition) {
|
public EntityPanda(Position spawnPosition) {
|
||||||
super(EntityType.PANDA, spawnPosition);
|
super(EntityType.PANDA, spawnPosition);
|
||||||
setBoundingBox(1.3f, 1.25f, 1.3f);
|
setBoundingBox(1.3f, 1.25f, 1.3f);
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
package net.minestom.server.entity.type.animal;
|
package net.minestom.server.entity.type.animal;
|
||||||
|
|
||||||
import net.minestom.server.entity.EntityCreature;
|
|
||||||
import net.minestom.server.entity.EntityType;
|
import net.minestom.server.entity.EntityType;
|
||||||
import net.minestom.server.entity.Metadata;
|
import net.minestom.server.entity.Metadata;
|
||||||
|
import net.minestom.server.entity.type.AgeableCreature;
|
||||||
import net.minestom.server.entity.type.Animal;
|
import net.minestom.server.entity.type.Animal;
|
||||||
import net.minestom.server.utils.Position;
|
import net.minestom.server.utils.Position;
|
||||||
|
|
||||||
public class EntityPig extends EntityCreature implements Animal {
|
public class EntityPig extends AgeableCreature implements Animal {
|
||||||
|
|
||||||
public EntityPig(Position spawnPosition) {
|
public EntityPig(Position spawnPosition) {
|
||||||
super(EntityType.PIG, spawnPosition);
|
super(EntityType.PIG, spawnPosition);
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
package net.minestom.server.entity.type.animal;
|
package net.minestom.server.entity.type.animal;
|
||||||
|
|
||||||
import net.minestom.server.entity.EntityCreature;
|
|
||||||
import net.minestom.server.entity.EntityType;
|
import net.minestom.server.entity.EntityType;
|
||||||
import net.minestom.server.entity.Metadata;
|
import net.minestom.server.entity.Metadata;
|
||||||
|
import net.minestom.server.entity.type.AgeableCreature;
|
||||||
import net.minestom.server.entity.type.Animal;
|
import net.minestom.server.entity.type.Animal;
|
||||||
import net.minestom.server.utils.Position;
|
import net.minestom.server.utils.Position;
|
||||||
|
|
||||||
public class EntityPolarBear extends EntityCreature implements Animal {
|
public class EntityPolarBear extends AgeableCreature implements Animal {
|
||||||
|
|
||||||
public EntityPolarBear(Position spawnPosition) {
|
public EntityPolarBear(Position spawnPosition) {
|
||||||
super(EntityType.POLAR_BEAR, spawnPosition);
|
super(EntityType.POLAR_BEAR, spawnPosition);
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
package net.minestom.server.entity.type.animal;
|
package net.minestom.server.entity.type.animal;
|
||||||
|
|
||||||
import net.minestom.server.entity.EntityCreature;
|
|
||||||
import net.minestom.server.entity.EntityType;
|
import net.minestom.server.entity.EntityType;
|
||||||
import net.minestom.server.entity.Metadata;
|
import net.minestom.server.entity.Metadata;
|
||||||
|
import net.minestom.server.entity.type.AgeableCreature;
|
||||||
import net.minestom.server.entity.type.Animal;
|
import net.minestom.server.entity.type.Animal;
|
||||||
import net.minestom.server.utils.Position;
|
import net.minestom.server.utils.Position;
|
||||||
|
|
||||||
public class EntityRabbit extends EntityCreature implements Animal {
|
public class EntityRabbit extends AgeableCreature implements Animal {
|
||||||
|
|
||||||
public EntityRabbit(Position spawnPosition) {
|
public EntityRabbit(Position spawnPosition) {
|
||||||
super(EntityType.RABBIT, spawnPosition);
|
super(EntityType.RABBIT, spawnPosition);
|
||||||
|
@ -2,6 +2,7 @@ package net.minestom.server.entity.type.monster;
|
|||||||
|
|
||||||
import net.minestom.server.entity.EntityType;
|
import net.minestom.server.entity.EntityType;
|
||||||
import net.minestom.server.entity.Metadata;
|
import net.minestom.server.entity.Metadata;
|
||||||
|
import net.minestom.server.entity.type.ambient.EntityAbstractVillager;
|
||||||
import net.minestom.server.utils.Position;
|
import net.minestom.server.utils.Position;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
@ -22,12 +23,20 @@ public class EntityZombieVillager extends EntityZombie {
|
|||||||
this.metadata.setIndex((byte) 18, Metadata.Boolean(value));
|
this.metadata.setIndex((byte) 18, Metadata.Boolean(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
public int[] getVillagerData() {
|
public EntityAbstractVillager.VillagerData getVillagerData() {
|
||||||
return this.metadata.getIndex((byte) 19, new int[]{});
|
int[] data = this.metadata.getIndex((byte) 17, null);
|
||||||
|
if (data == null) {
|
||||||
|
return new EntityAbstractVillager.VillagerData(EntityAbstractVillager.Type.PLAINS, EntityAbstractVillager.Profession.NONE, EntityAbstractVillager.Level.NOVICE);
|
||||||
|
}
|
||||||
|
return new EntityAbstractVillager.VillagerData(EntityAbstractVillager.Type.VALUES[data[0]], EntityAbstractVillager.Profession.VALUES[data[1]], EntityAbstractVillager.Level.VALUES[data[2] - 1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setVillagerData(int[] value) {
|
public void setVillagerData(EntityAbstractVillager.VillagerData data) {
|
||||||
this.metadata.setIndex((byte) 19, Metadata.VillagerData(value[0], value[1], value[2]));
|
this.metadata.setIndex((byte) 17, Metadata.VillagerData(
|
||||||
|
data.getType().ordinal(),
|
||||||
|
data.getProfession().ordinal(),
|
||||||
|
data.getLevel().ordinal() + 1
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user