Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package net.tardis.mod.common.entities;
- import net.minecraft.client.model.ModelBase;
- import net.minecraft.entity.*;
- import net.minecraft.entity.ai.*;
- import net.minecraft.entity.player.EntityPlayer;
- import net.minecraft.inventory.IInventory;
- import net.minecraft.item.ItemStack;
- import net.minecraft.nbt.NBTBase;
- import net.minecraft.nbt.NBTTagCompound;
- import net.minecraft.nbt.NBTTagList;
- import net.minecraft.network.datasync.DataParameter;
- import net.minecraft.network.datasync.DataSerializers;
- import net.minecraft.network.datasync.EntityDataManager;
- import net.minecraft.tileentity.TileEntity;
- import net.minecraft.util.NonNullList;
- import net.minecraft.util.ResourceLocation;
- import net.minecraft.util.text.ITextComponent;
- import net.minecraft.util.text.TextComponentString;
- import net.minecraft.world.World;
- import net.minecraftforge.common.util.Constants;
- import net.minecraftforge.fml.relauncher.Side;
- import net.minecraftforge.fml.relauncher.SideOnly;
- import net.tardis.mod.Tardis;
- import net.tardis.mod.common.dimensions.TDimensions;
- import net.tardis.mod.common.tileentity.TileEntityTardis;
- import java.util.UUID;
- public class EntityRaider extends EntityCreature {
- public static final DataParameter<Boolean> SITTING = EntityDataManager.createKey(EntityRaider.class, DataSerializers.BOOLEAN);
- public static final DataParameter<String> TYPE = EntityDataManager.createKey(EntityRaider.class, DataSerializers.STRING);
- UUID player;
- private NonNullList<ItemStack> inv = NonNullList.withSize(27, ItemStack.EMPTY);
- public EntityRaider(World worldIn) {
- super(worldIn);
- this.stepHeight = 1;
- }
- @Override
- protected void initEntityAI() {
- super.initEntityAI();
- this.tasks.addTask(3, new EntityAIWander(this, 0.5D));
- this.tasks.addTask(0, new EntityAIWatchClosest(this, EntityPlayer.class, 30));
- this.tasks.addTask(0, new EntityAISwimming(this));
- }
- @Override
- protected void applyEntityAttributes() {
- super.applyEntityAttributes();
- }
- @Override
- protected void entityInit() {
- super.entityInit();
- this.getDataManager().register(SITTING, false);
- this.getDataManager().register(TYPE, EntityRaider.EnumRaiderType.values()[rand.nextInt(EntityRaider.EnumRaiderType.values().length - 1)].name());
- }
- @Override
- public void onUpdate() {
- super.onUpdate();
- if (!world.isRemote && this.dimension == TDimensions.TARDIS_ID && world.getWorldTime() % 20 == 0) {
- TileEntityTardis tardis = null;
- for (TileEntity te : world.loadedTileEntityList) {
- if (te instanceof TileEntityTardis && te.getPos().distanceSq(this.getPosition()) < Math.pow(16, 2)) {
- tardis = (TileEntityTardis) te;
- break;
- }
- }
- }
- if (this.isWrongSize()) {
- this.setSize(this.getType().size[0], this.getType().size[1]);
- }
- }
- @Override
- protected boolean canDespawn() {
- return false;
- }
- public EntityRaider.EnumRaiderType getType() {
- return Enum.valueOf(EntityRaider.EnumRaiderType.class, this.getDataManager().get(TYPE));
- }
- public void setType(EntityRaider.EnumRaiderType type) {
- this.getDataManager().set(TYPE, type.name());
- }
- @Override
- public ITextComponent getDisplayName() {
- return new TextComponentString(this.getType().getName());
- }
- @Override
- public NBTTagCompound writeToNBT(NBTTagCompound compound) {
- NBTTagList list = new NBTTagList();
- for (ItemStack stack : inv) {
- list.appendTag(stack.writeToNBT(new NBTTagCompound()));
- }
- compound.setTag("inv", list);
- compound.setString("type", this.getType().name());
- return super.writeToNBT(compound);
- }
- @Override
- public void readFromNBT(NBTTagCompound compound) {
- super.readFromNBT(compound);
- int id = 0;
- NBTTagList list = compound.getTagList("inv", Constants.NBT.TAG_COMPOUND);
- for (NBTBase base : list) {
- inv.set(id, new ItemStack((NBTTagCompound) base));
- ++id;
- }
- if (!compound.getString("owner").isEmpty()) player = UUID.fromString(compound.getString("owner"));
- if (compound.getString("type") != null && !compound.getString("type").isEmpty())
- this.setType(Enum.valueOf(EntityRaider.EnumRaiderType.class, compound.getString("type")));
- }
- @Override
- public boolean getAlwaysRenderNameTag() {
- return false;
- }
- public boolean isWrongSize() {
- float[] size = this.getType().size;
- return this.width != size[0] || this.height != size[1];
- }
- public boolean getSit() {
- return this.getDataManager().get(SITTING);
- }
- public void setSit(boolean sit) {
- this.getDataManager().set(SITTING, sit);
- }
- @Override
- public boolean isChild() {
- return false;
- }
- public enum EnumRaiderType {
- RICHARD("richard", "Richard"),
- MATT("matt", "Matt"),
- STEVEN("steven", "Steven"),
- JESSIE("jessie", "Jessie");
- @SideOnly(Side.CLIENT)
- public ModelBase model;
- ResourceLocation skin;
- String formattedName = "";
- float[] size = {0.95F, 1.75F};
- EnumRaiderType(String name, String formatName) {
- skin = new ResourceLocation(Tardis.MODID, "textures/entity/raider/" + name + ".png");
- formattedName = formatName;
- }
- EnumRaiderType(String name, String formattedName, float[] size) {
- this(name, formattedName);
- this.size = size;
- }
- public ResourceLocation getTexture() {
- return this.skin;
- }
- public String getName() {
- return this.formattedName;
- }
- @SideOnly(Side.CLIENT)
- public ModelBase getModel() {
- model.isChild = false;
- return model;
- }
- @SideOnly(Side.CLIENT)
- public void setModel(ModelBase model) {
- this.model = model;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement