Jump to content

[1.8] Layers and bounding box sizes aren't switching


NovaViper

Recommended Posts

I've been trying to get the layers and the bounding box sizes of my entities to switch based on entity. For the layers, the other sets of layers in the class switch but this one part of it doesn't switch when it checks for the entity's gender and within that, the tamed state. And for the bounding box size, the smaller box renders but the larger one doesn't based on the entity's evolution state.

 

For Layers:

package common.zeroquest.client.render.layers;

import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.entity.layers.LayerRenderer;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.passive.EntitySheep;
import net.minecraft.item.EnumDyeColor;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import common.zeroquest.client.render.zertum.RenderZertum;
import common.zeroquest.entity.zertum.EntityZertum;
import common.zeroquest.lib.Constants;
import common.zeroquest.lib.DataValues;
import common.zeroquest.util.ResourceReference;

@SideOnly(Side.CLIENT)
public class LayersZertum implements LayerRenderer {

private final RenderZertum renderer;

public LayersZertum(RenderZertum p_177145_1_) {
	this.renderer = p_177145_1_;
}

public void func_177145_a(EntityZertum entity, float par1, float par2, float par3, float par4, float par5, float par6, float par7) {
	if (!entity.isInvisible()) {
		if (!entity.hasEvolved() && !entity.inFinalStage()) {
			if (entity.isTamed()) {
				this.renderer.bindTexture(ResourceReference.getZLayers("collar"));
				EnumDyeColor enumdyecolor = EnumDyeColor.byMetadata(entity.getCollarColor().getMetadata());
				float[] afloat = EntitySheep.func_175513_a(enumdyecolor);
				GlStateManager.color(afloat[0], afloat[1], afloat[2]);
				this.renderer.getMainModel().render(entity, par1, par2, par4, par5, par6, par7);
			}
			if (entity.isTamed() && entity.getHealth() <= Constants.lowHP) {
				this.renderer.bindTexture(ResourceReference.getZLayers("dying"));
				GlStateManager.color(1f, 1f, 1f);
				this.renderer.getMainModel().render(entity, par1, par2, par4, par5, par6, par7);
			}
			if (entity.isTamed() && entity.isSaddled()) {
				this.renderer.bindTexture(ResourceReference.getZLayers("saddle"));
				GlStateManager.color(1f, 1f, 1f);
				this.renderer.getMainModel().render(entity, par1, par2, par4, par5, par6, par7);
			}
			if (entity.getGender() == true) { <<<<Here is where the gender is checked
				if (entity.isTamed()) {
					this.renderer.bindTexture(ResourceReference.getZMaleTameLayers("")); <<<<Switches to this in tamed
					GlStateManager.color(1f, 1f, 1f);
					this.renderer.getMainModel().render(entity, par1, par2, par4, par5, par6, par7);
				}
				else if(!entity.isTamed()){
					this.renderer.bindTexture(ResourceReference.getZMaleLayers("")); <<<<<But never switches to this when not tamed
					GlStateManager.color(1f, 1f, 1f);
					this.renderer.getMainModel().render(entity, par1, par2, par4, par5, par6, par7);
				}
			}
		}
		else if (entity.hasEvolved() && !entity.inFinalStage()) {
			if (entity.isTamed()) {
				this.renderer.bindTexture(ResourceReference.getZELayers("collar"));
				EnumDyeColor enumdyecolor = EnumDyeColor.byMetadata(entity.getCollarColor().getMetadata());
				float[] afloat = EntitySheep.func_175513_a(enumdyecolor);
				GlStateManager.color(afloat[0], afloat[1], afloat[2]);
				this.renderer.getMainModel().render(entity, par1, par2, par4, par5, par6, par7);
			}

			if (entity.isTamed() && entity.getHealth() <= Constants.lowHP) {
				this.renderer.bindTexture(ResourceReference.getZELayers("dying"));
				GlStateManager.color(1f, 1f, 1f);
				this.renderer.getMainModel().render(entity, par1, par2, par4, par5, par6, par7);
			}

			if (entity.isTamed() && entity.isSaddled()) {
				this.renderer.bindTexture(ResourceReference.getZELayers("saddle"));
				GlStateManager.color(1f, 1f, 1f);
				this.renderer.getMainModel().render(entity, par1, par2, par4, par5, par6, par7);
			}
			if (entity.getGender() == true) {
				if (entity.isTamed()) {
					this.renderer.bindTexture(ResourceReference.getZEMaleLayers(""));
					GlStateManager.color(1f, 1f, 1f);
					this.renderer.getMainModel().render(entity, par1, par2, par4, par5, par6, par7);
				}
			}
		}
		else if (entity.hasEvolved() && entity.inFinalStage()) {
			if (entity.isTamed()) {
				this.renderer.bindTexture(ResourceReference.getZFinalLayers("collar"));
				EnumDyeColor enumdyecolor = EnumDyeColor.byMetadata(entity.getCollarColor().getMetadata());
				float[] afloat = EntitySheep.func_175513_a(enumdyecolor);
				GlStateManager.color(afloat[0], afloat[1], afloat[2]);
				this.renderer.getMainModel().render(entity, par1, par2, par4, par5, par6, par7);
			}

			if (entity.isTamed() && entity.getHealth() <= Constants.lowHP) {
				this.renderer.bindTexture(ResourceReference.getZFinalLayers("dying"));
				GlStateManager.color(1f, 1f, 1f);
				this.renderer.getMainModel().render(entity, par1, par2, par4, par5, par6, par7);
			}

			if (entity.isTamed() && entity.isSaddled()) {
				this.renderer.bindTexture(ResourceReference.getZFinalLayers("saddle"));
				GlStateManager.color(1f, 1f, 1f);
				this.renderer.getMainModel().render(entity, par1, par2, par4, par5, par6, par7);
			}
			if (entity.getGender() == true) {
				this.renderer.bindTexture(ResourceReference.getZFinalMaleLayers(""));
				GlStateManager.color(1f, 1f, 1f);
				this.renderer.getMainModel().render(entity, par1, par2, par4, par5, par6, par7);
			}
		}
	}
}

@Override
public boolean shouldCombineTextures() {
	return true;
}

@Override
public void doRenderLayer(EntityLivingBase entity, float par1, float par2, float par3, float par4, float par5, float par6, float par7) {
	this.func_177145_a((EntityZertum) entity, par1, par2, par3, par4, par5, par6, par7);
}
}

 

For Bounding Box:

		if (!this.hasEvolved() && !this.inFinalStage()) {
		this.setSize(0.6F, 1.5F); <<<Starts as this
	}
	else if (this.hasEvolved() && this.inFinalStage()) {
		this.setSize(16F, 16F); <<<But never turns into this when condition is met
	}

Main Developer and Owner of Zero Quest

Visit the Wiki for more information

If I helped anyone, please give me a applaud and a thank you!

Link to comment
Share on other sites

I could be remembering incorrectly, but I thought when you change the variable there was a method to tell the datawatcher to update.  I'll have to look when I get home to see what I was remembering.

Long time Bukkit & Forge Programmer

Happy to try and help

Link to comment
Share on other sites

for your bounding box, I don't see you handling the situation of

 

if (this.hasEvolved() && !this.inFinalStage()) {

 

I might be misunderstanding what you are doing, but it looks like that is a valid situation and is covered for the skins, but not in your bounding box.

 

 

On your render, if I understood what you said above, its not rendering correctly when its not a male or (entity.getGender() == false).  I don't see where you are setting a skin for that situation.  Is it just your default?

Long time Bukkit & Forge Programmer

Happy to try and help

Link to comment
Share on other sites

The bounding box isn't changing but everything else I have does work

 

package common.zeroquest.entity.zertum;

import java.util.HashMap;
import java.util.Map;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.ai.EntityAIAttackOnCollide;
import net.minecraft.entity.ai.EntityAIHurtByTarget;
import net.minecraft.entity.ai.EntityAILeapAtTarget;
import net.minecraft.entity.ai.EntityAILookIdle;
import net.minecraft.entity.ai.EntityAIMate;
import net.minecraft.entity.ai.EntityAISwimming;
import net.minecraft.entity.ai.EntityAIWander;
import net.minecraft.entity.ai.EntityAIWatchClosest;
import net.minecraft.entity.monster.EntityCreeper;
import net.minecraft.entity.monster.EntityGhast;
import net.minecraft.entity.monster.EntityZombie;
import net.minecraft.entity.passive.EntityAnimal;
import net.minecraft.entity.passive.EntityHorse;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.projectile.EntityArrow;
import net.minecraft.init.Items;
import net.minecraft.item.EnumDyeColor;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBow;
import net.minecraft.item.ItemFood;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemSword;
import net.minecraft.item.ItemTool;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.pathfinding.PathNavigateGround;
import net.minecraft.potion.PotionEffect;
import net.minecraft.util.BlockPos;
import net.minecraft.util.DamageSource;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.EnumParticleTypes;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

import common.zeroquest.ModAchievements;
import common.zeroquest.ModItems;
import common.zeroquest.api.ZeroQuestAPI;
import common.zeroquest.core.helper.ChatHelper;
import common.zeroquest.entity.EntityCustomTameable;
import common.zeroquest.entity.ai.EntityAIBeg;
import common.zeroquest.entity.ai.EntityAIFetchToy;
import common.zeroquest.entity.ai.EntityAIFollowOwner;
import common.zeroquest.entity.ai.EntityAIModeAttackTarget;
import common.zeroquest.entity.ai.EntityAIOwnerHurtByTarget;
import common.zeroquest.entity.ai.EntityAIOwnerHurtTarget;
import common.zeroquest.entity.ai.EntityAIRoundUp;
import common.zeroquest.entity.zertum.util.LevelUtil;
import common.zeroquest.entity.zertum.util.ModeUtil;
import common.zeroquest.entity.zertum.util.ModeUtil.EnumMode;
import common.zeroquest.entity.zertum.util.TalentHelper;
import common.zeroquest.entity.zertum.util.TalentUtil;
import common.zeroquest.inventory.InventoryPack;
import common.zeroquest.lib.Constants;
import common.zeroquest.lib.DataValues;
import common.zeroquest.lib.Sound;

public abstract class EntityZertumEntity extends EntityCustomTameable {

protected EntityAILeapAtTarget aiLeap = new EntityAILeapAtTarget(this, 0.4F);
public EntityAIWatchClosest aiStareAtPlayer = new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F);
public EntityAIWatchClosest aiGlareAtCreeper = new EntityAIWatchClosest(this, EntityCreeper.class, this.talents.getLevel("creeperspotter") * 6);
public EntityAIFetchToy aiFetchBone;

private float timeDogBegging;
private float prevTimeDogBegging;
public float headRotationCourse;
public float headRotationCourseOld;
public boolean isWet;
public boolean isShaking;
public float timeWolfIsShaking;
public float prevTimeWolfIsShaking;
private int hungerTick;
private int prevHungerTick;
private int healingTick;
private int prevHealingTick;
private int regenerationTick;
private int prevRegenerationTick;
public TalentUtil talents;
public LevelUtil levels;
public ModeUtil mode;
public Map<String, Object> objects;
private boolean hasToy;
private float timeWolfIsHappy;
private float prevTimeWolfIsHappy;
private boolean isWolfHappy;
public boolean hiyaMaster;
private float mouthOpenness;
private float prevMouthOpenness;
private int openMouthCounter;

public EntityZertumEntity(World worldIn) {
	super(worldIn);
	if (!this.hasEvolved() && !this.inFinalStage()) {
		this.setSize(0.6F, 1.5F);
	}
	else if (this.hasEvolved() && this.inFinalStage()) {
		this.setSize(16F, 16F);
	}

	this.objects = new HashMap<String, Object>();
	((PathNavigateGround) this.getNavigator()).setAvoidsWater(true);
	this.tasks.addTask(1, new EntityAISwimming(this));
	this.tasks.addTask(2, this.aiSit);
	this.tasks.addTask(3, this.aiLeap);
	this.tasks.addTask(4, new EntityAIAttackOnCollide(this, 1.0D, true));
	this.tasks.addTask(5, new EntityAIFollowOwner(this, 1.0D, 10.0F, 2.0F));
	this.tasks.addTask(6, this.aiFetchBone = new EntityAIFetchToy(this, 1.0D, 0.5F, 20.0F));
	this.tasks.addTask(7, new EntityAIMate(this, 1.0D));
	this.tasks.addTask(8, new EntityAIWander(this, 1.0D));
	this.tasks.addTask(9, new EntityAIBeg(this, 8.0F));
	this.tasks.addTask(10, aiStareAtPlayer);
	this.tasks.addTask(10, new EntityAILookIdle(this));
	this.targetTasks.addTask(1, new EntityAIOwnerHurtByTarget(this));
	this.targetTasks.addTask(2, new EntityAIOwnerHurtTarget(this));
	this.targetTasks.addTask(3, new EntityAIModeAttackTarget(this));
	this.targetTasks.addTask(4, new EntityAIHurtByTarget(this, true));
	this.setTamed(false);
	this.setEvolved(false);
	this.inventory = new InventoryPack(this);
	this.targetTasks.addTask(6, new EntityAIRoundUp(this, EntityAnimal.class, 0, false));
	TalentHelper.onClassCreation(this);
}

@Override
public void applyEntityAttributes() {
	super.applyEntityAttributes();
	this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.30000001192092896);
	this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.wildHealth());
	this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(this.wildDamage());
	this.updateEntityAttributes();
}

public void updateEntityAttributes() {
	if (this.isTamed()) {
		if (!this.isChild() && !this.hasEvolved()) {
			this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.tamedHealth() + this.effectiveLevel());
			this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(this.tamedDamage());
		}
		else if (!this.isChild() && this.hasEvolved()) {
			this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.evoHealth() + this.effectiveLevel());
		}
		else {
			this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.babyHealth());
			this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(this.babyDamage());
		}
	}
	else {
		if (this.isChild()) {
			this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.babyHealth());
			this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(this.babyDamage());
		}
	}
}

@Override
public void setTamed(boolean p_70903_1_) {
	super.setTamed(p_70903_1_);
	if (p_70903_1_) {
		if (!this.isChild() && !this.hasEvolved()) {
			this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.tamedHealth() + this.effectiveLevel());
			this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(this.tamedDamage());
		}
		else if (!this.isChild() && this.hasEvolved()) {
			this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.evoHealth());
		}
		else {
			this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.babyHealth());
			this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(this.babyDamage());
		}
	}
	else {
		if (this.isChild()) {
			this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.babyHealth());
			this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(this.babyDamage());
		}
	}
}

public double tamedHealth() {
	if (this instanceof EntityZertum || this instanceof EntityRedZertum) {
		return 35;
	}
	else if (this instanceof EntityMetalZertum || this instanceof EntityIceZertum || this instanceof EntityForisZertum || this instanceof EntityDestroZertum || this instanceof EntityDarkZertum) {
		return 40;
	}
	return 0;
}

public double tamedDamage() {
	if (this instanceof EntityZertum || this instanceof EntityRedZertum || this instanceof EntityMetalZertum || this instanceof EntityIceZertum || this instanceof EntityForisZertum) {
		return 8;
	}
	else if (this instanceof EntityDestroZertum) {
		return 10;
	}
	else if (this instanceof EntityDarkZertum) {
		return 12;
	}
	return 0;
}

public double evoHealth() {
	if (this instanceof EntityZertum || this instanceof EntityRedZertum || this instanceof EntityIceZertum) {
		return 45;
	}
	else if (this instanceof EntityMetalZertum || this instanceof EntityForisZertum || this instanceof EntityDestroZertum) {
		return 50;
	}
	else if (this instanceof EntityDarkZertum) {
		return 60;
	}
	return 0;
}

public double wildHealth() {
	if (this instanceof EntityZertum || this instanceof EntityRedZertum || this instanceof EntityForisZertum) {
		return 25;
	}
	else if (this instanceof EntityMetalZertum || this instanceof EntityDestroZertum || this instanceof EntityDarkZertum) {
		return 30;
	}
	else if (this instanceof EntityIceZertum) {
		return 35;
	}
	return 0;
}

public double wildDamage() {
	if (this instanceof EntityZertum || this instanceof EntityRedZertum || this instanceof EntityMetalZertum || this instanceof EntityIceZertum || this instanceof EntityForisZertum) {
		return 6;
	}
	else if (this instanceof EntityDestroZertum) {
		return 8;
	}
	else if (this instanceof EntityDarkZertum) {
		return 10;
	}
	return 0;
}

public double babyHealth() {
	return 11;
}

public double babyDamage() {
	if (this instanceof EntityZertum || this instanceof EntityRedZertum || this instanceof EntityMetalZertum) {
		return 2;
	}
	else if (this instanceof EntityIceZertum || this instanceof EntityForisZertum || this instanceof EntityDarkZertum) {
		return 4;
	}
	else if (this instanceof EntityDestroZertum) {
		return 3;
	}
	return 0;
}

/**
 * Sets the active target the Task system uses for tracking
 */
@Override
public void setAttackTarget(EntityLivingBase p_70624_1_) {
	super.setAttackTarget(p_70624_1_);
	if (p_70624_1_ == null) {
		this.setAngry(false);
	}
	else if (!this.isTamed()) {
		this.setAngry(true);
	}
}

@Override
public String getCommandSenderName() {
	String name = this.getPetName();
	if (name != "" && this.isTamed()) {
		return name;
	}
	else {
		return super.getCommandSenderName();
	}
}

@Override
@SideOnly(Side.CLIENT)
public boolean getAlwaysRenderNameTagForRender() {
	return true;
}

//@formatter:off
@Override
protected void entityInit() {
	super.entityInit();
	this.talents = new TalentUtil(this);
	this.levels = new LevelUtil(this);
	this.mode = new ModeUtil(this);
	this.dataWatcher.addObject(DataValues.ownerName, new String("")); //Owner Name
	this.dataWatcher.addObject(DataValues.ownerID, new String("")); //Owner Id
	this.dataWatcher.addObject(DataValues.collarCollar, new Byte((byte) EnumDyeColor.RED.getMetadata())); //Collar
	this.dataWatcher.addObject(DataValues.dogName, new String("")); //Dog Name
	this.dataWatcher.addObject(DataValues.talentData, new String("")); //Talent Data
	this.dataWatcher.addObject(DataValues.hungerTicks, new Integer(Constants.hungerTicks)); //Dog Hunger
	this.dataWatcher.addObject(DataValues.levelData, new String("0:0")); //Level Data
	this.dataWatcher.addObject(DataValues.evolve, Byte.valueOf((byte)0)); //Evolution
	this.dataWatcher.addObject(DataValues.obeyOthers, new Integer(0)); //Obey Others
	this.dataWatcher.addObject(DataValues.zertumMode, new Integer(0)); //Zertum Mode
	this.dataWatcher.addObject(DataValues.mouth, Integer.valueOf(0)); //Mouth
	this.dataWatcher.addObject(DataValues.beg, new Byte((byte) 0)); //Begging
}
//@formatter:on
@Override
public void writeEntityToNBT(NBTTagCompound tagCompound) {
	super.writeEntityToNBT(tagCompound);
	tagCompound.setString("ownerId", this.getOwnerID());
	tagCompound.setString("ownerName", this.getOwnerName());
	tagCompound.setByte("collarColor", (byte) this.getCollarColor().getDyeDamage());
	tagCompound.setBoolean("evolve", this.hasEvolved());
	tagCompound.setBoolean("finalEvolve", this.inFinalStage());
	tagCompound.setString("version", Constants.version);
	tagCompound.setString("dogName", this.getPetName());
	tagCompound.setInteger("dogHunger", this.getZertumHunger());
	tagCompound.setBoolean("willObey", this.willObeyOthers());
	tagCompound.setBoolean("dogBeg", this.isBegging());

	this.talents.writeTalentsToNBT(tagCompound);
	this.levels.writeTalentsToNBT(tagCompound);
	this.mode.writeToNBT(tagCompound);
	TalentHelper.writeToNBT(this, tagCompound);
}

@Override
public void readEntityFromNBT(NBTTagCompound tagCompound) {
	super.readEntityFromNBT(tagCompound);
	this.saveOwnerID(tagCompound.getString("ownerId"));
	this.saveOwnerName(tagCompound.getString("ownerName"));
	if (tagCompound.hasKey("collarColor", 99)) {
		this.setCollarColor(EnumDyeColor.byDyeDamage(tagCompound.getByte("collarColor")));
	}
	this.setEvolved(tagCompound.getBoolean("evolve"));
	this.setFinalStage(tagCompound.getBoolean("finalEvolve"));
	String lastVersion = tagCompound.getString("version");
	this.setPetName(tagCompound.getString("dogName"));
	this.setZertumHunger(tagCompound.getInteger("dogHunger"));
	this.setWillObeyOthers(tagCompound.getBoolean("willObey"));
	this.setBegging(tagCompound.getBoolean("dogBeg"));

	this.talents.readTalentsFromNBT(tagCompound);
	this.levels.readTalentsFromNBT(tagCompound);
	this.mode.readFromNBT(tagCompound);
	TalentHelper.readFromNBT(this, tagCompound);
}

@Override
protected void playStepSound(BlockPos p_180429_1_, Block p_180429_2_) {
	this.playSound("mob.wolf.step", 0.15F, 1.0F);
}

/**
 * Returns the sound this mob makes while it's alive.
 */
@Override
protected String getLivingSound() {
	this.openMouth();
	String sound = TalentHelper.getLivingSound(this);
	if (!"".equals(sound)) {
		return sound;
	}

	// if(!this.inFinalStage()){
	return this.isAngry() ? "mob.wolf.growl" : this.wantToHowl ? Sound.ZertumHowl
			: (this.rand.nextInt(3) == 0
					? (this.isTamed() && this.getHealth() <= Constants.lowHP ? "mob.wolf.whine"
							: "mob.wolf.panting") : "mob.wolf.bark");
	// }else{ return Sound.; }
}

/**
 * Returns the sound this mob makes when it is hurt.
 */
@Override
protected String getHurtSound() {
	this.openMouth();
	return "mob.wolf.hurt";
}

/**
 * Returns the sound this mob makes on death.
 */
@Override
protected String getDeathSound() {
	this.openMouth();
	return "mob.wolf.death";
}

/**
 * Returns the volume for the sounds this mob makes.
 */
@Override
public float getSoundVolume() {
	return 1F;
}

/**
 * Gets the pitch of living sounds in living entities.
 */
@Override
public float getPitch() {
	if (!this.isChild()) {
		return super.getSoundPitch();
	}
	else {
		return super.getSoundPitch() * 1;
	}
}

/**
 * Get number of ticks, at least during which the living entity will be
 * silent.
 */
@Override
public int getTalkInterval() {
	int ticks = TalentHelper.getTalkInterval(this);
	if (ticks != 0) {
		return ticks;
	}
	else if (this.wantToHowl) {
		return 150;
	}
	else if (this.getHealth() <= Constants.lowHP) {
		return 20;
	}
	else {
		return 200;
	}
}

/**
 * Returns the item ID for the item the mob drops on death.
 */
@Override
protected void dropFewItems(boolean par1, int par2) {
	rare = rand.nextInt(20);
	{
		if (this.isBurning()) {
			this.dropItem(ModItems.zertumMeatCooked, 1);
		}
		else if (rare <= 12) {
			this.dropItem(ModItems.zertumMeatRaw, 1);
		}
		if (rare <= 6 && !this.isTamed() && !(this instanceof EntityDarkZertum)) {
			this.dropItem(ModItems.nileGrain, 1);
		}
		if (rare <= 6 && !this.isTamed() && (this instanceof EntityDarkZertum)) {
			this.dropItem(ModItems.darkGrain, 1);
		}
		if (this.isSaddled()) {
			this.dropItem(Items.saddle, 1);
		}
		else {

		}

	}
}

/**
 * Called frequently so the entity can update its state every tick as
 * required. For example, zombies and skeletons use this to react to
 * sunlight and start to burn.
 */
@Override
public void onLivingUpdate() // NAV: Living Updates
{
	super.onLivingUpdate();
	if (isServer() && this.isWet && !this.isShaking && !this.hasPath() && this.onGround) {
		this.isShaking = true;
		this.timeWolfIsShaking = 0.0F;
		this.prevTimeWolfIsShaking = 0.0F;
		this.worldObj.setEntityState(this, (byte) ;
	}

	if (Constants.DEF_IS_HUNGER_ON) {
		this.prevHungerTick = this.hungerTick;

		if (this.riddenByEntity == null && !this.isSitting()) {
			this.hungerTick += 1;
		}

		this.hungerTick += TalentHelper.onHungerTick(this, this.hungerTick - this.prevHungerTick);

		if (this.hungerTick > 400) {
			this.setZertumHunger(this.getZertumHunger() - 1);
			this.hungerTick -= 400;
		}
	}

	if (this.getHealth() != Constants.lowHP) {
		this.prevHealingTick = this.healingTick;
		this.healingTick += this.nourishment();

		if (this.healingTick >= 6000) {
			if (this.getHealth() < this.getMaxHealth()) {
				this.setHealth(this.getHealth() + 1);
			}

			this.healingTick = 0;
		}
	}

	if (this.getZertumHunger() == 0 && this.worldObj.getWorldInfo().getWorldTime() % 100L == 0L && this.getHealth() >= Constants.lowHP) {
		this.attackEntityFrom(DamageSource.generic, 1);
	}

	if (isServer() && this.getAttackTarget() == null && this.isAngry()) {
		this.setAngry(false);
	}

	if (Constants.DEF_HOWL == true) {
		if (this.isServer()) {
			if (this.worldObj.isDaytime() && this.isChild()) {
				wantToHowl = false;
			}
			else if (!this.isChild()) {
				wantToHowl = true;
			}
		}
	}
	TalentHelper.onLivingUpdate(this);
}

/**
 * Called to update the entity's position/logic.
 */
@Override
public void onUpdate() {
	super.onUpdate();
	this.prevTimeDogBegging = this.timeDogBegging;

	if (this.isBegging()) {
		this.timeDogBegging += (1.0F - this.timeDogBegging) * 0.4F;
	}
	else {
		this.timeDogBegging += (0.0F - this.timeDogBegging) * 0.4F;
	}

	if (this.openMouthCounter > 0 && ++this.openMouthCounter > 30) {
		this.openMouthCounter = 0;
		this.setHorseWatchableBoolean(128, false);
	}

	this.prevMouthOpenness = this.mouthOpenness;

	if (this.getHorseWatchableBoolean(128)) {
		this.mouthOpenness += (1.0F - this.mouthOpenness) * 0.7F + 0.05F;

		if (this.mouthOpenness > 1.0F) {
			this.mouthOpenness = 1.0F;
		}
	}
	else {
		this.mouthOpenness += (0.0F - this.mouthOpenness) * 0.7F - 0.05F;

		if (this.mouthOpenness < 0.0F) {
			this.mouthOpenness = 0.0F;
		}
	}
	this.headRotationCourseOld = this.headRotationCourse;

	if (this.isBegging()) {
		this.headRotationCourse += (1.0F - this.headRotationCourse) * 0.4F;
	}
	else {
		this.headRotationCourse += (0.0F - this.headRotationCourse) * 0.4F;
	}

	if (this.isWet()) {
		this.isWet = true;
		this.isShaking = false;
		this.timeWolfIsShaking = 0.0F;
		this.prevTimeWolfIsShaking = 0.0F;
	}
	else if ((this.isWet || this.isShaking) && this.isShaking) {
		if (this.timeWolfIsShaking == 0.0F) {
			this.playSound("mob.wolf.shake", this.getSoundVolume(), (this.rand.nextFloat() - this.rand.nextFloat()) * 0.2F + 1.0F);
		}

		this.prevTimeWolfIsShaking = this.timeWolfIsShaking;
		this.timeWolfIsShaking += 0.05F;

		if (this.prevTimeWolfIsShaking >= 2.0F) {
			if (this.rand.nextInt(15) < this.talents.getLevel("fishing") * 2) {
				if (this.rand.nextInt(15) < this.talents.getLevel("flamingelemental") * 2 && this instanceof EntityRedZertum) {
					if (isServer()) {
						dropItem(Items.cooked_fish, 1);
					}
				}
				else {
					if (isServer()) {
						dropItem(Items.fish, 1);
					}
				}
			}
			this.isWet = false;
			this.isShaking = false;
			this.prevTimeWolfIsShaking = 0.0F;
			this.timeWolfIsShaking = 0.0F;
		}

		if (this.timeWolfIsShaking > 0.4F) {
			float f = (float) this.getEntityBoundingBox().minY;
			int i = (int) (MathHelper.sin((this.timeWolfIsShaking - 0.4F) * (float) Math.PI) * 7.0F);

			for (int j = 0; j < i; ++j) {
				float f1 = (this.rand.nextFloat() * 2.0F - 1.0F) * this.width * 0.5F;
				float f2 = (this.rand.nextFloat() * 2.0F - 1.0F) * this.width * 0.5F;
				this.worldObj.spawnParticle(EnumParticleTypes.WATER_SPLASH, this.posX + f1, f + 0.8F, this.posZ + f2, this.motionX, this.motionY, this.motionZ, new int[0]);
			}
		}
	}

	if (this.rand.nextInt(200) == 0 && this.hasEvolved()) {
		this.hiyaMaster = true;
	}

	if (((this.isBegging()) || (this.hiyaMaster)) && (!this.isWolfHappy) && this.hasEvolved()) {
		this.isWolfHappy = true;
		this.timeWolfIsHappy = 0.0F;
		this.prevTimeWolfIsHappy = 0.0F;
	}
	else {
		hiyaMaster = false;
	}
	if (this.isWolfHappy) {
		if (this.timeWolfIsHappy % 1.0F == 0.0F) {
			if (!(this instanceof EntityMetalZertum)) {
				this.openMouth();
				this.worldObj.playSoundAtEntity(this, "mob.wolf.panting", this.getSoundVolume(), (this.rand.nextFloat() - this.rand.nextFloat()) * 0.2F + 1.0F);
			}
			else if (this instanceof EntityMetalZertum) {
				this.openMouth();
				this.worldObj.playSoundAtEntity(this, Sound.MetalZertumPant, this.getSoundVolume(), (this.rand.nextFloat() - this.rand.nextFloat()) * 0.2F + 1.0F);
			}
		}
		this.prevTimeWolfIsHappy = this.timeWolfIsHappy;
		this.timeWolfIsHappy += 0.05F;
		if (this.prevTimeWolfIsHappy >= 8.0F) {
			this.isWolfHappy = false;
			this.prevTimeWolfIsHappy = 0.0F;
			this.timeWolfIsHappy = 0.0F;
		}
	}

	if (this.isTamed()) {
		EntityPlayer player = (EntityPlayer) this.getOwner();

		if (player != null) {
			float distanceToOwner = player.getDistanceToEntity(this);

			if (distanceToOwner <= 2F && this.hasToy()) {
				if (isServer()) {
					this.entityDropItem(new ItemStack(ModItems.toy, 1, 1), 0.0F);
				}
				this.setHasToy(false);
			}
		}
	}

	TalentHelper.onUpdate(this);
}

public float getWagAngle(float f, float f1) {
	float f2 = (this.prevTimeWolfIsHappy + (this.timeWolfIsHappy - this.prevTimeWolfIsHappy) * f + f1) / 2.0F;
	if (f2 < 0.0F) {
		f2 = 0.0F;
	}
	else if (f2 > 2.0F) {
		f2 %= 2.0F;
	}
	return MathHelper.sin(f2 * (float) Math.PI * 5.0F) * 0.3F * (float) Math.PI;
}

@Override
public void moveEntityWithHeading(float strafe, float forward) {
	if (this.riddenByEntity instanceof EntityPlayer) {
		this.prevRotationYaw = this.rotationYaw = this.riddenByEntity.rotationYaw;
		this.rotationPitch = this.riddenByEntity.rotationPitch * 0.5F;
		this.setRotation(this.rotationYaw, this.rotationPitch);
		this.rotationYawHead = this.renderYawOffset = this.rotationYaw;
		strafe = ((EntityPlayer) this.riddenByEntity).moveStrafing * 0.5F;
		forward = ((EntityPlayer) this.riddenByEntity).moveForward;

		if (forward <= 0.0F) {
			forward *= 0.25F;
		}

		if (this.onGround) {
			if (forward > 0.0F) {
				float f2 = MathHelper.sin(this.rotationYaw * (float) Math.PI / 180.0F);
				float f3 = MathHelper.cos(this.rotationYaw * (float) Math.PI / 180.0F);
				this.motionX += -0.4F * f2 * 0.15F; // May change
				this.motionZ += 0.4F * f3 * 0.15F;
			}
		}

		this.stepHeight = 1.0F;
		this.jumpMovementFactor = this.getAIMoveSpeed() * 0.2F;

		if (isServer()) {
			this.setAIMoveSpeed((float) this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).getAttributeValue() / 4);
			super.moveEntityWithHeading(strafe, forward);
		}

		if (this.onGround) {
			// this.jumpPower = 0.0F;
			// this.setHorseJumping(false);
		}

		this.prevLimbSwingAmount = this.limbSwingAmount;
		double d0 = this.posX - this.prevPosX;
		double d1 = this.posZ - this.prevPosZ;
		float f4 = MathHelper.sqrt_double(d0 * d0 + d1 * d1) * 4.0F;

		if (f4 > 1.0F) {
			f4 = 1.0F;
		}

		this.limbSwingAmount += (f4 - this.limbSwingAmount) * 0.4F;
		this.limbSwing += this.limbSwingAmount;
	}
	else {
		this.stepHeight = 0.5F;
		this.jumpMovementFactor = 0.02F;
		super.moveEntityWithHeading(strafe, forward);
	}
}

@Override
public float getAIMoveSpeed() {
	double speed = this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).getAttributeValue();
	speed += TalentHelper.addToMoveSpeed(this);

	if ((!(this.getAttackTarget() instanceof EntityZertumEntity) && !(this.getAttackTarget() instanceof EntityPlayer)) || this.riddenByEntity instanceof EntityPlayer) {
		if (this.levels.getLevel() == Constants.stage2Level && this.hasEvolved()) {
			speed += 0.3D;
		}
		else if (this.hasEvolved() && this.levels.getLevel() != Constants.stage2Level) {
			speed += 0.3D;
		}
	}

	if (this.riddenByEntity instanceof EntityPlayer) {
		speed /= 4;
	}

	return (float) speed;
}

public float getAIAttackDamage() {
	double damage = this.getEntityAttribute(SharedMonsterAttributes.attackDamage).getAttributeValue();
	damage += TalentHelper.addToAttackDamage(this);

	if ((!(this.getAttackTarget() instanceof EntityZertumEntity) && !(this.getAttackTarget() instanceof EntityPlayer))) {
		if (this.levels.getLevel() == Constants.stage2Level && this.hasEvolved()) {
			damage += 1.0D;
		}
		else if (this.hasEvolved() && this.levels.getLevel() != Constants.stage2Level) {
			damage += 1.0D;
		}
		else if (this.levels.getLevel() == Constants.maxLevel && this.hasEvolved() && this.inFinalStage()) {
			damage += 3.0D;
		}
	}
	return (float) damage;
}

@Override
public void fall(float distance, float damageMultiplier) {
	if (distance > 1.0F) {
		this.playSound("game.neutral.hurt.fall.small", 0.4F, 1.0F);
	}

	int i = MathHelper.ceiling_float_int(((distance * 0.5F - 3.0F) - TalentHelper.fallProtection(this)) * damageMultiplier);

	if (i > 0 && !TalentHelper.isImmuneToFalls(this)) {
		this.attackEntityFrom(DamageSource.fall, i);

		if (this.riddenByEntity != null) {
			this.riddenByEntity.attackEntityFrom(DamageSource.fall, i);
		}

		Block block = this.worldObj.getBlockState(new BlockPos(this.posX, this.posY - 0.2D - this.prevRotationYaw, this.posZ)).getBlock();

		if (block.getMaterial() != Material.air && !this.isSilent()) {
			Block.SoundType soundtype = block.stepSound;
			this.worldObj.playSoundAtEntity(this, soundtype.getStepSound(), soundtype.getVolume() * 0.5F, soundtype.getFrequency() * 0.75F);
		}
	}
}

@SideOnly(Side.CLIENT)
public boolean isWolfWet() {
	return this.isWet;
}

@SideOnly(Side.CLIENT)
public float getShadingWhileWet(float p_70915_1_) {
	return 0.75F + (this.prevTimeWolfIsShaking + (this.timeWolfIsShaking - this.prevTimeWolfIsShaking) * p_70915_1_) / 2.0F * 0.25F;
}

@SideOnly(Side.CLIENT)
public float getShakeAngle(float p_70923_1_, float p_70923_2_) {
	float f2 = (this.prevTimeWolfIsShaking + (this.timeWolfIsShaking - this.prevTimeWolfIsShaking) * p_70923_1_ + p_70923_2_) / 1.8F;

	if (f2 < 0.0F) {
		f2 = 0.0F;
	}
	else if (f2 > 1.0F) {
		f2 = 1.0F;
	}

	return MathHelper.sin(f2 * (float) Math.PI) * MathHelper.sin(f2 * (float) Math.PI * 11.0F) * 0.15F * (float) Math.PI;
}

@SideOnly(Side.CLIENT)
public float getInterestedAngle(float partialTickTime) {
	return (this.prevTimeDogBegging + (this.timeDogBegging - this.prevTimeDogBegging) * partialTickTime) * 0.15F * (float) Math.PI;
}

@Override
public float getEyeHeight() {
	return this.height * 0.8F;
}

@Override
public int getVerticalFaceSpeed() {
	return this.isSitting() ? 20 : super.getVerticalFaceSpeed();
}

@Override
public boolean attackEntityFrom(DamageSource damageSource, float damage) {
	if (this.isEntityInvulnerable(damageSource)) {
		return false;
	}
	else {
		if (!TalentHelper.attackEntityFrom(this, damageSource, damage)) {
			return false;
		}

		Entity entity = damageSource.getEntity();
		this.aiSit.setSitting(false);

		if (entity != null && !(entity instanceof EntityPlayer) && !(entity instanceof EntityArrow)) {
			damage = (damage + 1.0F) / 2.0F;
		}

		return super.attackEntityFrom(damageSource, damage);
	}
}

@Override
public boolean attackEntityAsMob(Entity entity) {
	if (!TalentHelper.shouldDamageMob(this, entity)) {
		return false;
	}

	int damage = (int) (4 + (this.getEntityAttribute(SharedMonsterAttributes.attackDamage).getBaseValue()) / 2);
	damage = TalentHelper.attackEntityAsMob(this, entity, damage);

	if (entity instanceof EntityZombie) {
		((EntityZombie) entity).setAttackTarget(this);
	}

	return entity.attackEntityFrom(DamageSource.causeMobDamage(this), damage);
}

/**
 * Called when the mob's health reaches 0.
 */
@Override
public void onDeath(DamageSource par1DamageSource) {
	super.onDeath(par1DamageSource);

	if (par1DamageSource.getEntity() instanceof EntityPlayer) {
		EntityPlayer entityplayer = (EntityPlayer) par1DamageSource.getEntity();
		{
			entityplayer.triggerAchievement(ModAchievements.ZertKill);
			this.dropChestItems();

		}
	}
}

@Override
protected boolean isMovementBlocked() {
	return this.isPlayerSleeping() || this.ridingEntity != null || this.riddenByEntity instanceof EntityPlayer || super.isMovementBlocked();
}

@Override
public double getYOffset() {
	return this.ridingEntity instanceof EntityPlayer ? 0.5D : 0.0D;
}

@Override
public boolean isPotionApplicable(PotionEffect potionEffect) {
	if (this.getHealth() <= Constants.lowHP) {
		return false;
	}

	if (!TalentHelper.isPostionApplicable(this, potionEffect)) {
		return false;
	}

	return true;
}

@Override
public void setFire(int amount) {
	if (TalentHelper.setFire(this, amount)) {
		super.setFire(amount);
	}
}

public int foodValue(ItemStack stack) {
	if (stack == null || stack.getItem() == null) {
		return 0;
	}

	int foodValue = 0;

	Item item = stack.getItem();

	if (stack.getItem() != Items.rotten_flesh && item instanceof ItemFood) {
		ItemFood itemfood = (ItemFood) item;

		if (itemfood.isWolfsFavoriteMeat()) {
			foodValue = 40;
		}
	}

	foodValue = TalentHelper.changeFoodValue(this, stack, foodValue);

	return foodValue;
}

public int masterOrder() { // NAV: Master Order
	int order = 0;
	EntityPlayer player = (EntityPlayer) this.getOwner();

	if (player != null) {

		float distanceAway = player.getDistanceToEntity(this);
		ItemStack itemstack = player.inventory.getCurrentItem();

		if (itemstack != null && (itemstack.getItem() instanceof ItemTool) && distanceAway <= 20F) {
			order = 1;
		}

		if (itemstack != null && ((itemstack.getItem() instanceof ItemSword) || (itemstack.getItem() instanceof ItemBow))) {
			order = 2;
		}

		if (itemstack != null && itemstack.getItem() == Items.wheat) {
			order = 3;
		}

		if (itemstack != null && itemstack.getItem() == Items.bone) {
			order = 4;
		}
	}

	return order;
}

@Override
public boolean canBreatheUnderwater() {
	return TalentHelper.canBreatheUnderwater(this);
}

@Override
public boolean canInteract(EntityPlayer player) {
	return this.isOwner(player) || this.willObeyOthers();
}

public int nourishment() {
	int amount = 0;

	if (this.getZertumHunger() > 0) {
		amount = 40 + 4 * (this.effectiveLevel() + 1);

		if (isSitting() && this.talents.getLevel("rapidregen") == 5) {
			amount += 20 + 2 * (this.effectiveLevel() + 1);
		}

		if (!this.isSitting()) {
			amount *= 5 + this.talents.getLevel("rapidregen");
			amount /= 10;
		}
	}

	return amount;
}

public int effectiveLevel() {
	return (this.levels.getLevel()) / 10;
}

public String getPetName() {
	return this.dataWatcher.getWatchableObjectString(DataValues.dogName);
}

public void setPetName(String var1) {
	this.dataWatcher.updateObject(DataValues.dogName, var1);
}

public void setWillObeyOthers(boolean flag) {
	this.dataWatcher.updateObject(DataValues.obeyOthers, flag ? 1 : 0);
}

public boolean willObeyOthers() {
	return this.dataWatcher.getWatchableObjectInt(DataValues.obeyOthers) != 0;
}

public int points() {
	return this.levels.getLevel() + (this.getGrowingAge() < 0 ? 0 : Constants.startingPoints);
}

public int spendablePoints() {
	return this.points() - this.usedPoints();
}

public int usedPoints() {
	return TalentHelper.getUsedPoints(this);
}

public int getZertumHunger() {
	return this.dataWatcher.getWatchableObjectInt(DataValues.hungerTicks);
}

public void setZertumHunger(int par1) {
	this.dataWatcher.updateObject(DataValues.hungerTicks, MathHelper.clamp_int(par1, 0, Constants.hungerTicks));
}

@Override
public boolean func_142018_a(EntityLivingBase entityToAttack, EntityLivingBase owner) {
	if (TalentHelper.canAttackEntity(this, entityToAttack)) {
		return true;
	}

	if (!(entityToAttack instanceof EntityCreeper) && !(entityToAttack instanceof EntityGhast)) {
		if (entityToAttack instanceof EntityZertumEntity) {
			EntityZertumEntity entityZertum = (EntityZertumEntity) entityToAttack;

			if (entityZertum.isTamed() && entityZertum.getOwner() == owner) {
				return false;
			}
		}

		return entityToAttack instanceof EntityPlayer && owner instanceof EntityPlayer && !((EntityPlayer) owner).canAttackPlayer((EntityPlayer) entityToAttack)
				? false
				: !(entityToAttack instanceof EntityHorse) || !((EntityHorse) entityToAttack).isTame();
	}
	else {
		return false;
	}
}

@Override
public boolean canAttackClass(Class p_70686_1_) {
	if (TalentHelper.canAttackClass(this, p_70686_1_)) {
		return true;
	}

	return super.canAttackClass(p_70686_1_);
}

public void setHasToy(boolean hasBone) {
	this.hasToy = hasBone;
}

public boolean hasToy() {
	return this.hasToy;
}

@Override
@SideOnly(Side.CLIENT)
public void handleHealthUpdate(byte p_70103_1_) {
	if (p_70103_1_ ==  {
		this.isShaking = true;
		this.timeWolfIsShaking = 0.0F;
		this.prevTimeWolfIsShaking = 0.0F;
	}
	else {
		super.handleHealthUpdate(p_70103_1_);
	}
}

/**
 * Checks if the parameter is an item which this animal can be fed to breed
 * it (wheat, carrots or seeds depending on the animal type)
 */
@Override
public boolean isBreedingItem(ItemStack stack) {
	return stack != null && ZeroQuestAPI.breedList.containsItem(stack);
}

@Override
public int getMaxSpawnedInChunk() {
	return 8;
}

public EnumDyeColor getCollarColor() {
	return EnumDyeColor.byDyeDamage(this.dataWatcher.getWatchableObjectByte(DataValues.collarCollar) & 15);
}

public void setCollarColor(EnumDyeColor collarcolor) {
	this.dataWatcher.updateObject(DataValues.collarCollar, Byte.valueOf((byte) (collarcolor.getDyeDamage() & 15)));
}

private boolean getHorseWatchableBoolean(int p_110233_1_) {
	return (this.dataWatcher.getWatchableObjectInt(DataValues.mouth) & p_110233_1_) != 0;
}

private void setHorseWatchableBoolean(int p_110208_1_, boolean p_110208_2_) {
	int j = this.dataWatcher.getWatchableObjectInt(DataValues.mouth);

	if (p_110208_2_) {
		this.dataWatcher.updateObject(DataValues.mouth, Integer.valueOf(j | p_110208_1_));
	}
	else {
		this.dataWatcher.updateObject(DataValues.mouth, Integer.valueOf(j & ~p_110208_1_));
	}
}

@SideOnly(Side.CLIENT)
public float getMouthOpennessAngle(float p_110201_1_) {
	return this.prevMouthOpenness + (this.mouthOpenness - this.prevMouthOpenness) * p_110201_1_;
}

public void openMouth() {
	if (isServer()) {
		this.openMouthCounter = 1;
		this.setHorseWatchableBoolean(128, true);
	}
}

/**
 * Determines if an entity can be despawned, used on idle far away entities
 */
@Override
protected boolean canDespawn() {
	return !this.isTamed() && this.ticksExisted > 2400;
}

@Override
public boolean allowLeashing() {
	return !this.isAngry() && super.allowLeashing();
}

public void setBegging(boolean flag) {
	this.dataWatcher.updateObject(DataValues.beg, Byte.valueOf((byte) (flag ? 1 : 0)));
}

public boolean isBegging() {
	return this.dataWatcher.getWatchableObjectByte(DataValues.beg) == 1;
}

public boolean hasEvolved() {
	return (this.dataWatcher.getWatchableObjectByte(DataValues.evolve) & 4) != 0;
}

public void setEvolved(boolean evolved) {
	byte b0 = this.dataWatcher.getWatchableObjectByte(DataValues.evolve);

	if (evolved) {
		this.dataWatcher.updateObject(DataValues.evolve, Byte.valueOf((byte) (b0 | 4)));
	}
	else {
		this.dataWatcher.updateObject(DataValues.evolve, Byte.valueOf((byte) (b0 & -5)));
	}

	if (evolved) {
		if (!this.isChild() && !this.hasEvolved()) {
			this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.tamedHealth() + this.effectiveLevel());
			this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(this.tamedDamage());
		}
		else if (!this.isChild() && this.hasEvolved()) {
			this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.evoHealth());
		}
		else {
			this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.babyHealth());
			this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(this.babyDamage());
		}
	}
	else {
		if (this.isChild()) {
			this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.babyHealth());
			this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(this.babyDamage());
		}
	}
}

public boolean inFinalStage() {
	return (this.dataWatcher.getWatchableObjectByte(DataValues.evolve) & 2) != 0;
}

public void setFinalStage(boolean finalStage) {
	byte b0 = this.dataWatcher.getWatchableObjectByte(DataValues.evolve);

	if (finalStage) {
		this.dataWatcher.updateObject(DataValues.evolve, Byte.valueOf((byte) (b0 | 2)));
	}
	else {
		this.dataWatcher.updateObject(DataValues.evolve, Byte.valueOf((byte) (b0 & -3)));
	}
}

public String getOwnerName() {
	return this.dataWatcher.getWatchableObjectString(DataValues.ownerName);
}

public void saveOwnerName(String name) {
	this.dataWatcher.updateObject(DataValues.ownerName, name);
}

public String getOwnerID() {
	return this.dataWatcher.getWatchableObjectString(DataValues.ownerID);
}

public void saveOwnerID(String id) {
	this.dataWatcher.updateObject(DataValues.ownerID, id);
}

/** Custom Zertum Taming Code */
@Override
public void tamedFor(EntityPlayer player, boolean successful) {
	if (successful) {
		this.setTamed(true);
		this.navigator.clearPathEntity();
		this.setAttackTarget((EntityLivingBase) null);
		this.aiSit.setSitting(false);
		this.setOwnerId(player.getUniqueID().toString());
		this.playTameEffect(true);
		this.worldObj.setEntityState(this, (byte) 7);
		this.saveOwnerName(player.getDisplayNameString());
		this.saveOwnerID(player.getUniqueID().toString());
		player.triggerAchievement(ModAchievements.ZertTame);
		//@formatter:off
		//System.out.println("ID: " + zertum.getOwnerID() + ", Name: " + zertum.getOwnerName());
		//@formatter:on
	}
	else {
		this.playTameEffect(false);
		this.worldObj.setEntityState(this, (byte) 6);
	}
}

public void unTame() {
	this.setTamed(false);
	this.setEvolved(false);
	this.setFinalStage(false);
	this.navigator.clearPathEntity();
	this.setSitting(false);
	this.talents.resetTalents();
	this.levels.resetLevel();
	this.setOwnerId("");
	this.saveOwnerName("");
	this.setPetName("");
	this.setWillObeyOthers(false);
	this.mode.setMode(EnumMode.DOCILE);
}

public void evolveOnClient(EntityPlayer player) {
	this.setEvolved(true);
	this.worldObj.playBroadcastSound(1013, new BlockPos(this), 0);
	this.setHealth(this.getMaxHealth());
	player.addChatMessage(ChatHelper.getChatComponent(EnumChatFormatting.GREEN + this.getPetName() + " has been evolved!"));
}

public void evolveOnServer(EntityZertumEntity entity, EntityPlayer player) {
	entity.setEvolved(true);
	entity.worldObj.playBroadcastSound(1013, new BlockPos(entity), 0);
	entity.setHealth(entity.getMaxHealth());
	player.addChatMessage(ChatHelper.getChatComponent(EnumChatFormatting.GREEN + entity.getPetName() + " has been evolved!"));
}

public void finaEvolveOnClient(EntityPlayer player) {
	this.setFinalStage(true);
	this.worldObj.playBroadcastSound(1013, new BlockPos(this), 0);
	this.setHealth(this.getMaxHealth());
	player.addChatMessage(ChatHelper.getChatComponent(EnumChatFormatting.GREEN + this.getPetName() + " has been evolved to the final stage!"));
}

public void finaEvolveOnServer(EntityZertumEntity entity, EntityPlayer player) {
	entity.setFinalStage(true);
	entity.worldObj.playBroadcastSound(1013, new BlockPos(entity), 0);
	entity.setHealth(entity.getMaxHealth());
	player.addChatMessage(ChatHelper.getChatComponent(EnumChatFormatting.GREEN + entity.getPetName() + " has been evolved to the final stage!"));
}

public void devolveOnServer(EntityZertumEntity entity, EntityPlayer player) {
	if (entity.hasEvolved() && !entity.inFinalStage()) {
		entity.setEvolved(false);
	}
	else if (entity.hasEvolved() && entity.inFinalStage()) {
		entity.setFinalStage(false);
	}
	entity.worldObj.playBroadcastSound(1013, new BlockPos(entity), 0);
	entity.setHealth(entity.getMaxHealth());
	player.addChatMessage(ChatHelper.getChatComponent(EnumChatFormatting.DARK_RED + entity.getPetName() + " has been devolved!"));
}

public String genderPronoun() {
	if (this.getGender() == true) {
		return "him";
	}
	else {
		return "her";
	}
}

public String genderSubject() {
	if (this.getGender() == true) {
		return "he";
	}
	else {
		return "she";
	}
}

public void doNotOwnMessage(EntityZertumEntity zertum, EntityPlayer player) {
	player.addChatMessage(ChatHelper.getChatComponent(EnumChatFormatting.RED + "You do not own " + zertum.getPetName() + " and " + zertum.getOwnerName() + " doesn't allow " + zertum.genderPronoun() + EnumChatFormatting.RED + " to" + EnumChatFormatting.RED + " obey" + EnumChatFormatting.RED + "non-owners!"));
}
}

 

For the female, it's suppose to not render the male textures at all, which is what it is doing. But when the male is wild, it shows the tamed male textures and vice versa.

Main Developer and Owner of Zero Quest

Visit the Wiki for more information

If I helped anyone, please give me a applaud and a thank you!

Link to comment
Share on other sites

 

Ah, sorry, I misunderstood and thought you had a texture issue as well.

 

And your sure you don't need to specify case 'if (this.hasEvolved() && !this.inFinalStage()) {'

 

 

Here are some post on changing boundingboxes for entities after initilization.  I've done this for a variable size mob before, but won't be at my code until tomorrow.

 

http://www.minecraftforge.net/forum/index.php?topic=23184.0

http://www.minecraftforge.net/forum/index.php?topic=6541.0

http://www.minecraftforge.net/forum/index.php?topic=8999.0

 

 

 

 

Long time Bukkit & Forge Programmer

Happy to try and help

Link to comment
Share on other sites

Have you tracked the variables during execution to see what is going on?  Either print them to screen or put pauses in the execution and cycle through to see them.

 

 

Long time Bukkit & Forge Programmer

Happy to try and help

Link to comment
Share on other sites

How are you using it?  Each time are you calling getDatawatcher(32) or some junk? 

 

I tend to have a method in the entity such as  (please forgive the syntax, i'm going off memory)

 

public int Whatever() {

  return getDataWatcher(32);

}

 

Then wherever you are using it just:

int testValue = entitySpecial.Whatever();

 

then track it.

 

you could do some other variation.  I also do the reverse of the above when setting the value.  It is what I was referrening to when diesieben07 puked previously.

 

Long time Bukkit & Forge Programmer

Happy to try and help

Link to comment
Share on other sites

The bounding box isn't changing but everything else I have does work

 

package common.zeroquest.entity.zertum;

import java.util.HashMap;
import java.util.Map;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.ai.EntityAIAttackOnCollide;
import net.minecraft.entity.ai.EntityAIHurtByTarget;
import net.minecraft.entity.ai.EntityAILeapAtTarget;
import net.minecraft.entity.ai.EntityAILookIdle;
import net.minecraft.entity.ai.EntityAIMate;
import net.minecraft.entity.ai.EntityAISwimming;
import net.minecraft.entity.ai.EntityAIWander;
import net.minecraft.entity.ai.EntityAIWatchClosest;
import net.minecraft.entity.monster.EntityCreeper;
import net.minecraft.entity.monster.EntityGhast;
import net.minecraft.entity.monster.EntityZombie;
import net.minecraft.entity.passive.EntityAnimal;
import net.minecraft.entity.passive.EntityHorse;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.projectile.EntityArrow;
import net.minecraft.init.Items;
import net.minecraft.item.EnumDyeColor;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBow;
import net.minecraft.item.ItemFood;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemSword;
import net.minecraft.item.ItemTool;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.pathfinding.PathNavigateGround;
import net.minecraft.potion.PotionEffect;
import net.minecraft.util.BlockPos;
import net.minecraft.util.DamageSource;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.EnumParticleTypes;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

import common.zeroquest.ModAchievements;
import common.zeroquest.ModItems;
import common.zeroquest.api.ZeroQuestAPI;
import common.zeroquest.core.helper.ChatHelper;
import common.zeroquest.entity.EntityCustomTameable;
import common.zeroquest.entity.ai.EntityAIBeg;
import common.zeroquest.entity.ai.EntityAIFetchToy;
import common.zeroquest.entity.ai.EntityAIFollowOwner;
import common.zeroquest.entity.ai.EntityAIModeAttackTarget;
import common.zeroquest.entity.ai.EntityAIOwnerHurtByTarget;
import common.zeroquest.entity.ai.EntityAIOwnerHurtTarget;
import common.zeroquest.entity.ai.EntityAIRoundUp;
import common.zeroquest.entity.zertum.util.LevelUtil;
import common.zeroquest.entity.zertum.util.ModeUtil;
import common.zeroquest.entity.zertum.util.ModeUtil.EnumMode;
import common.zeroquest.entity.zertum.util.TalentHelper;
import common.zeroquest.entity.zertum.util.TalentUtil;
import common.zeroquest.inventory.InventoryPack;
import common.zeroquest.lib.Constants;
import common.zeroquest.lib.DataValues;
import common.zeroquest.lib.Sound;

public abstract class EntityZertumEntity extends EntityCustomTameable {

protected EntityAILeapAtTarget aiLeap = new EntityAILeapAtTarget(this, 0.4F);
public EntityAIWatchClosest aiStareAtPlayer = new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F);
public EntityAIWatchClosest aiGlareAtCreeper = new EntityAIWatchClosest(this, EntityCreeper.class, this.talents.getLevel("creeperspotter") * 6);
public EntityAIFetchToy aiFetchBone;

private float timeDogBegging;
private float prevTimeDogBegging;
public float headRotationCourse;
public float headRotationCourseOld;
public boolean isWet;
public boolean isShaking;
public float timeWolfIsShaking;
public float prevTimeWolfIsShaking;
private int hungerTick;
private int prevHungerTick;
private int healingTick;
private int prevHealingTick;
private int regenerationTick;
private int prevRegenerationTick;
public TalentUtil talents;
public LevelUtil levels;
public ModeUtil mode;
public Map<String, Object> objects;
private boolean hasToy;
private float timeWolfIsHappy;
private float prevTimeWolfIsHappy;
private boolean isWolfHappy;
public boolean hiyaMaster;
private float mouthOpenness;
private float prevMouthOpenness;
private int openMouthCounter;

public EntityZertumEntity(World worldIn) {
	super(worldIn);
	if (!this.hasEvolved() && !this.inFinalStage()) {
		this.setSize(0.6F, 1.5F);
	}
	else if (this.hasEvolved() && this.inFinalStage()) {
		this.setSize(16F, 16F);
	}

	this.objects = new HashMap<String, Object>();
	((PathNavigateGround) this.getNavigator()).setAvoidsWater(true);
	this.tasks.addTask(1, new EntityAISwimming(this));
	this.tasks.addTask(2, this.aiSit);
	this.tasks.addTask(3, this.aiLeap);
	this.tasks.addTask(4, new EntityAIAttackOnCollide(this, 1.0D, true));
	this.tasks.addTask(5, new EntityAIFollowOwner(this, 1.0D, 10.0F, 2.0F));
	this.tasks.addTask(6, this.aiFetchBone = new EntityAIFetchToy(this, 1.0D, 0.5F, 20.0F));
	this.tasks.addTask(7, new EntityAIMate(this, 1.0D));
	this.tasks.addTask(8, new EntityAIWander(this, 1.0D));
	this.tasks.addTask(9, new EntityAIBeg(this, 8.0F));
	this.tasks.addTask(10, aiStareAtPlayer);
	this.tasks.addTask(10, new EntityAILookIdle(this));
	this.targetTasks.addTask(1, new EntityAIOwnerHurtByTarget(this));
	this.targetTasks.addTask(2, new EntityAIOwnerHurtTarget(this));
	this.targetTasks.addTask(3, new EntityAIModeAttackTarget(this));
	this.targetTasks.addTask(4, new EntityAIHurtByTarget(this, true));
	this.setTamed(false);
	this.setEvolved(false);
	this.inventory = new InventoryPack(this);
	this.targetTasks.addTask(6, new EntityAIRoundUp(this, EntityAnimal.class, 0, false));
	TalentHelper.onClassCreation(this);
}

@Override
public void applyEntityAttributes() {
	super.applyEntityAttributes();
	this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.30000001192092896);
	this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.wildHealth());
	this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(this.wildDamage());
	this.updateEntityAttributes();
}

public void updateEntityAttributes() {
	if (this.isTamed()) {
		if (!this.isChild() && !this.hasEvolved()) {
			this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.tamedHealth() + this.effectiveLevel());
			this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(this.tamedDamage());
		}
		else if (!this.isChild() && this.hasEvolved()) {
			this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.evoHealth() + this.effectiveLevel());
		}
		else {
			this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.babyHealth());
			this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(this.babyDamage());
		}
	}
	else {
		if (this.isChild()) {
			this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.babyHealth());
			this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(this.babyDamage());
		}
	}
}

@Override
public void setTamed(boolean p_70903_1_) {
	super.setTamed(p_70903_1_);
	if (p_70903_1_) {
		if (!this.isChild() && !this.hasEvolved()) {
			this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.tamedHealth() + this.effectiveLevel());
			this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(this.tamedDamage());
		}
		else if (!this.isChild() && this.hasEvolved()) {
			this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.evoHealth());
		}
		else {
			this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.babyHealth());
			this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(this.babyDamage());
		}
	}
	else {
		if (this.isChild()) {
			this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.babyHealth());
			this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(this.babyDamage());
		}
	}
}

public double tamedHealth() {
	if (this instanceof EntityZertum || this instanceof EntityRedZertum) {
		return 35;
	}
	else if (this instanceof EntityMetalZertum || this instanceof EntityIceZertum || this instanceof EntityForisZertum || this instanceof EntityDestroZertum || this instanceof EntityDarkZertum) {
		return 40;
	}
	return 0;
}

public double tamedDamage() {
	if (this instanceof EntityZertum || this instanceof EntityRedZertum || this instanceof EntityMetalZertum || this instanceof EntityIceZertum || this instanceof EntityForisZertum) {
		return 8;
	}
	else if (this instanceof EntityDestroZertum) {
		return 10;
	}
	else if (this instanceof EntityDarkZertum) {
		return 12;
	}
	return 0;
}

public double evoHealth() {
	if (this instanceof EntityZertum || this instanceof EntityRedZertum || this instanceof EntityIceZertum) {
		return 45;
	}
	else if (this instanceof EntityMetalZertum || this instanceof EntityForisZertum || this instanceof EntityDestroZertum) {
		return 50;
	}
	else if (this instanceof EntityDarkZertum) {
		return 60;
	}
	return 0;
}

public double wildHealth() {
	if (this instanceof EntityZertum || this instanceof EntityRedZertum || this instanceof EntityForisZertum) {
		return 25;
	}
	else if (this instanceof EntityMetalZertum || this instanceof EntityDestroZertum || this instanceof EntityDarkZertum) {
		return 30;
	}
	else if (this instanceof EntityIceZertum) {
		return 35;
	}
	return 0;
}

public double wildDamage() {
	if (this instanceof EntityZertum || this instanceof EntityRedZertum || this instanceof EntityMetalZertum || this instanceof EntityIceZertum || this instanceof EntityForisZertum) {
		return 6;
	}
	else if (this instanceof EntityDestroZertum) {
		return 8;
	}
	else if (this instanceof EntityDarkZertum) {
		return 10;
	}
	return 0;
}

public double babyHealth() {
	return 11;
}

public double babyDamage() {
	if (this instanceof EntityZertum || this instanceof EntityRedZertum || this instanceof EntityMetalZertum) {
		return 2;
	}
	else if (this instanceof EntityIceZertum || this instanceof EntityForisZertum || this instanceof EntityDarkZertum) {
		return 4;
	}
	else if (this instanceof EntityDestroZertum) {
		return 3;
	}
	return 0;
}

/**
 * Sets the active target the Task system uses for tracking
 */
@Override
public void setAttackTarget(EntityLivingBase p_70624_1_) {
	super.setAttackTarget(p_70624_1_);
	if (p_70624_1_ == null) {
		this.setAngry(false);
	}
	else if (!this.isTamed()) {
		this.setAngry(true);
	}
}

@Override
public String getCommandSenderName() {
	String name = this.getPetName();
	if (name != "" && this.isTamed()) {
		return name;
	}
	else {
		return super.getCommandSenderName();
	}
}

@Override
@SideOnly(Side.CLIENT)
public boolean getAlwaysRenderNameTagForRender() {
	return true;
}

//@formatter:off
@Override
protected void entityInit() {
	super.entityInit();
	this.talents = new TalentUtil(this);
	this.levels = new LevelUtil(this);
	this.mode = new ModeUtil(this);
	this.dataWatcher.addObject(DataValues.ownerName, new String("")); //Owner Name
	this.dataWatcher.addObject(DataValues.ownerID, new String("")); //Owner Id
	this.dataWatcher.addObject(DataValues.collarCollar, new Byte((byte) EnumDyeColor.RED.getMetadata())); //Collar
	this.dataWatcher.addObject(DataValues.dogName, new String("")); //Dog Name
	this.dataWatcher.addObject(DataValues.talentData, new String("")); //Talent Data
	this.dataWatcher.addObject(DataValues.hungerTicks, new Integer(Constants.hungerTicks)); //Dog Hunger
	this.dataWatcher.addObject(DataValues.levelData, new String("0:0")); //Level Data
	this.dataWatcher.addObject(DataValues.evolve, Byte.valueOf((byte)0)); //Evolution
	this.dataWatcher.addObject(DataValues.obeyOthers, new Integer(0)); //Obey Others
	this.dataWatcher.addObject(DataValues.zertumMode, new Integer(0)); //Zertum Mode
	this.dataWatcher.addObject(DataValues.mouth, Integer.valueOf(0)); //Mouth
	this.dataWatcher.addObject(DataValues.beg, new Byte((byte) 0)); //Begging
}
//@formatter:on
@Override
public void writeEntityToNBT(NBTTagCompound tagCompound) {
	super.writeEntityToNBT(tagCompound);
	tagCompound.setString("ownerId", this.getOwnerID());
	tagCompound.setString("ownerName", this.getOwnerName());
	tagCompound.setByte("collarColor", (byte) this.getCollarColor().getDyeDamage());
	tagCompound.setBoolean("evolve", this.hasEvolved());
	tagCompound.setBoolean("finalEvolve", this.inFinalStage());
	tagCompound.setString("version", Constants.version);
	tagCompound.setString("dogName", this.getPetName());
	tagCompound.setInteger("dogHunger", this.getZertumHunger());
	tagCompound.setBoolean("willObey", this.willObeyOthers());
	tagCompound.setBoolean("dogBeg", this.isBegging());

	this.talents.writeTalentsToNBT(tagCompound);
	this.levels.writeTalentsToNBT(tagCompound);
	this.mode.writeToNBT(tagCompound);
	TalentHelper.writeToNBT(this, tagCompound);
}

@Override
public void readEntityFromNBT(NBTTagCompound tagCompound) {
	super.readEntityFromNBT(tagCompound);
	this.saveOwnerID(tagCompound.getString("ownerId"));
	this.saveOwnerName(tagCompound.getString("ownerName"));
	if (tagCompound.hasKey("collarColor", 99)) {
		this.setCollarColor(EnumDyeColor.byDyeDamage(tagCompound.getByte("collarColor")));
	}
	this.setEvolved(tagCompound.getBoolean("evolve"));
	this.setFinalStage(tagCompound.getBoolean("finalEvolve"));
	String lastVersion = tagCompound.getString("version");
	this.setPetName(tagCompound.getString("dogName"));
	this.setZertumHunger(tagCompound.getInteger("dogHunger"));
	this.setWillObeyOthers(tagCompound.getBoolean("willObey"));
	this.setBegging(tagCompound.getBoolean("dogBeg"));

	this.talents.readTalentsFromNBT(tagCompound);
	this.levels.readTalentsFromNBT(tagCompound);
	this.mode.readFromNBT(tagCompound);
	TalentHelper.readFromNBT(this, tagCompound);
}

@Override
protected void playStepSound(BlockPos p_180429_1_, Block p_180429_2_) {
	this.playSound("mob.wolf.step", 0.15F, 1.0F);
}

/**
 * Returns the sound this mob makes while it's alive.
 */
@Override
protected String getLivingSound() {
	this.openMouth();
	String sound = TalentHelper.getLivingSound(this);
	if (!"".equals(sound)) {
		return sound;
	}

	// if(!this.inFinalStage()){
	return this.isAngry() ? "mob.wolf.growl" : this.wantToHowl ? Sound.ZertumHowl
			: (this.rand.nextInt(3) == 0
					? (this.isTamed() && this.getHealth() <= Constants.lowHP ? "mob.wolf.whine"
							: "mob.wolf.panting") : "mob.wolf.bark");
	// }else{ return Sound.; }
}

/**
 * Returns the sound this mob makes when it is hurt.
 */
@Override
protected String getHurtSound() {
	this.openMouth();
	return "mob.wolf.hurt";
}

/**
 * Returns the sound this mob makes on death.
 */
@Override
protected String getDeathSound() {
	this.openMouth();
	return "mob.wolf.death";
}

/**
 * Returns the volume for the sounds this mob makes.
 */
@Override
public float getSoundVolume() {
	return 1F;
}

/**
 * Gets the pitch of living sounds in living entities.
 */
@Override
public float getPitch() {
	if (!this.isChild()) {
		return super.getSoundPitch();
	}
	else {
		return super.getSoundPitch() * 1;
	}
}

/**
 * Get number of ticks, at least during which the living entity will be
 * silent.
 */
@Override
public int getTalkInterval() {
	int ticks = TalentHelper.getTalkInterval(this);
	if (ticks != 0) {
		return ticks;
	}
	else if (this.wantToHowl) {
		return 150;
	}
	else if (this.getHealth() <= Constants.lowHP) {
		return 20;
	}
	else {
		return 200;
	}
}

/**
 * Returns the item ID for the item the mob drops on death.
 */
@Override
protected void dropFewItems(boolean par1, int par2) {
	rare = rand.nextInt(20);
	{
		if (this.isBurning()) {
			this.dropItem(ModItems.zertumMeatCooked, 1);
		}
		else if (rare <= 12) {
			this.dropItem(ModItems.zertumMeatRaw, 1);
		}
		if (rare <= 6 && !this.isTamed() && !(this instanceof EntityDarkZertum)) {
			this.dropItem(ModItems.nileGrain, 1);
		}
		if (rare <= 6 && !this.isTamed() && (this instanceof EntityDarkZertum)) {
			this.dropItem(ModItems.darkGrain, 1);
		}
		if (this.isSaddled()) {
			this.dropItem(Items.saddle, 1);
		}
		else {

		}

	}
}

/**
 * Called frequently so the entity can update its state every tick as
 * required. For example, zombies and skeletons use this to react to
 * sunlight and start to burn.
 */
@Override
public void onLivingUpdate() // NAV: Living Updates
{
	super.onLivingUpdate();
	if (isServer() && this.isWet && !this.isShaking && !this.hasPath() && this.onGround) {
		this.isShaking = true;
		this.timeWolfIsShaking = 0.0F;
		this.prevTimeWolfIsShaking = 0.0F;
		this.worldObj.setEntityState(this, (byte) ;
	}

	if (Constants.DEF_IS_HUNGER_ON) {
		this.prevHungerTick = this.hungerTick;

		if (this.riddenByEntity == null && !this.isSitting()) {
			this.hungerTick += 1;
		}

		this.hungerTick += TalentHelper.onHungerTick(this, this.hungerTick - this.prevHungerTick);

		if (this.hungerTick > 400) {
			this.setZertumHunger(this.getZertumHunger() - 1);
			this.hungerTick -= 400;
		}
	}

	if (this.getHealth() != Constants.lowHP) {
		this.prevHealingTick = this.healingTick;
		this.healingTick += this.nourishment();

		if (this.healingTick >= 6000) {
			if (this.getHealth() < this.getMaxHealth()) {
				this.setHealth(this.getHealth() + 1);
			}

			this.healingTick = 0;
		}
	}

	if (this.getZertumHunger() == 0 && this.worldObj.getWorldInfo().getWorldTime() % 100L == 0L && this.getHealth() >= Constants.lowHP) {
		this.attackEntityFrom(DamageSource.generic, 1);
	}

	if (isServer() && this.getAttackTarget() == null && this.isAngry()) {
		this.setAngry(false);
	}

	if (Constants.DEF_HOWL == true) {
		if (this.isServer()) {
			if (this.worldObj.isDaytime() && this.isChild()) {
				wantToHowl = false;
			}
			else if (!this.isChild()) {
				wantToHowl = true;
			}
		}
	}
	TalentHelper.onLivingUpdate(this);
}

/**
 * Called to update the entity's position/logic.
 */
@Override
public void onUpdate() {
	super.onUpdate();
	this.prevTimeDogBegging = this.timeDogBegging;

	if (this.isBegging()) {
		this.timeDogBegging += (1.0F - this.timeDogBegging) * 0.4F;
	}
	else {
		this.timeDogBegging += (0.0F - this.timeDogBegging) * 0.4F;
	}

	if (this.openMouthCounter > 0 && ++this.openMouthCounter > 30) {
		this.openMouthCounter = 0;
		this.setHorseWatchableBoolean(128, false);
	}

	this.prevMouthOpenness = this.mouthOpenness;

	if (this.getHorseWatchableBoolean(128)) {
		this.mouthOpenness += (1.0F - this.mouthOpenness) * 0.7F + 0.05F;

		if (this.mouthOpenness > 1.0F) {
			this.mouthOpenness = 1.0F;
		}
	}
	else {
		this.mouthOpenness += (0.0F - this.mouthOpenness) * 0.7F - 0.05F;

		if (this.mouthOpenness < 0.0F) {
			this.mouthOpenness = 0.0F;
		}
	}
	this.headRotationCourseOld = this.headRotationCourse;

	if (this.isBegging()) {
		this.headRotationCourse += (1.0F - this.headRotationCourse) * 0.4F;
	}
	else {
		this.headRotationCourse += (0.0F - this.headRotationCourse) * 0.4F;
	}

	if (this.isWet()) {
		this.isWet = true;
		this.isShaking = false;
		this.timeWolfIsShaking = 0.0F;
		this.prevTimeWolfIsShaking = 0.0F;
	}
	else if ((this.isWet || this.isShaking) && this.isShaking) {
		if (this.timeWolfIsShaking == 0.0F) {
			this.playSound("mob.wolf.shake", this.getSoundVolume(), (this.rand.nextFloat() - this.rand.nextFloat()) * 0.2F + 1.0F);
		}

		this.prevTimeWolfIsShaking = this.timeWolfIsShaking;
		this.timeWolfIsShaking += 0.05F;

		if (this.prevTimeWolfIsShaking >= 2.0F) {
			if (this.rand.nextInt(15) < this.talents.getLevel("fishing") * 2) {
				if (this.rand.nextInt(15) < this.talents.getLevel("flamingelemental") * 2 && this instanceof EntityRedZertum) {
					if (isServer()) {
						dropItem(Items.cooked_fish, 1);
					}
				}
				else {
					if (isServer()) {
						dropItem(Items.fish, 1);
					}
				}
			}
			this.isWet = false;
			this.isShaking = false;
			this.prevTimeWolfIsShaking = 0.0F;
			this.timeWolfIsShaking = 0.0F;
		}

		if (this.timeWolfIsShaking > 0.4F) {
			float f = (float) this.getEntityBoundingBox().minY;
			int i = (int) (MathHelper.sin((this.timeWolfIsShaking - 0.4F) * (float) Math.PI) * 7.0F);

			for (int j = 0; j < i; ++j) {
				float f1 = (this.rand.nextFloat() * 2.0F - 1.0F) * this.width * 0.5F;
				float f2 = (this.rand.nextFloat() * 2.0F - 1.0F) * this.width * 0.5F;
				this.worldObj.spawnParticle(EnumParticleTypes.WATER_SPLASH, this.posX + f1, f + 0.8F, this.posZ + f2, this.motionX, this.motionY, this.motionZ, new int[0]);
			}
		}
	}

	if (this.rand.nextInt(200) == 0 && this.hasEvolved()) {
		this.hiyaMaster = true;
	}

	if (((this.isBegging()) || (this.hiyaMaster)) && (!this.isWolfHappy) && this.hasEvolved()) {
		this.isWolfHappy = true;
		this.timeWolfIsHappy = 0.0F;
		this.prevTimeWolfIsHappy = 0.0F;
	}
	else {
		hiyaMaster = false;
	}
	if (this.isWolfHappy) {
		if (this.timeWolfIsHappy % 1.0F == 0.0F) {
			if (!(this instanceof EntityMetalZertum)) {
				this.openMouth();
				this.worldObj.playSoundAtEntity(this, "mob.wolf.panting", this.getSoundVolume(), (this.rand.nextFloat() - this.rand.nextFloat()) * 0.2F + 1.0F);
			}
			else if (this instanceof EntityMetalZertum) {
				this.openMouth();
				this.worldObj.playSoundAtEntity(this, Sound.MetalZertumPant, this.getSoundVolume(), (this.rand.nextFloat() - this.rand.nextFloat()) * 0.2F + 1.0F);
			}
		}
		this.prevTimeWolfIsHappy = this.timeWolfIsHappy;
		this.timeWolfIsHappy += 0.05F;
		if (this.prevTimeWolfIsHappy >= 8.0F) {
			this.isWolfHappy = false;
			this.prevTimeWolfIsHappy = 0.0F;
			this.timeWolfIsHappy = 0.0F;
		}
	}

	if (this.isTamed()) {
		EntityPlayer player = (EntityPlayer) this.getOwner();

		if (player != null) {
			float distanceToOwner = player.getDistanceToEntity(this);

			if (distanceToOwner <= 2F && this.hasToy()) {
				if (isServer()) {
					this.entityDropItem(new ItemStack(ModItems.toy, 1, 1), 0.0F);
				}
				this.setHasToy(false);
			}
		}
	}

	TalentHelper.onUpdate(this);
}

public float getWagAngle(float f, float f1) {
	float f2 = (this.prevTimeWolfIsHappy + (this.timeWolfIsHappy - this.prevTimeWolfIsHappy) * f + f1) / 2.0F;
	if (f2 < 0.0F) {
		f2 = 0.0F;
	}
	else if (f2 > 2.0F) {
		f2 %= 2.0F;
	}
	return MathHelper.sin(f2 * (float) Math.PI * 5.0F) * 0.3F * (float) Math.PI;
}

@Override
public void moveEntityWithHeading(float strafe, float forward) {
	if (this.riddenByEntity instanceof EntityPlayer) {
		this.prevRotationYaw = this.rotationYaw = this.riddenByEntity.rotationYaw;
		this.rotationPitch = this.riddenByEntity.rotationPitch * 0.5F;
		this.setRotation(this.rotationYaw, this.rotationPitch);
		this.rotationYawHead = this.renderYawOffset = this.rotationYaw;
		strafe = ((EntityPlayer) this.riddenByEntity).moveStrafing * 0.5F;
		forward = ((EntityPlayer) this.riddenByEntity).moveForward;

		if (forward <= 0.0F) {
			forward *= 0.25F;
		}

		if (this.onGround) {
			if (forward > 0.0F) {
				float f2 = MathHelper.sin(this.rotationYaw * (float) Math.PI / 180.0F);
				float f3 = MathHelper.cos(this.rotationYaw * (float) Math.PI / 180.0F);
				this.motionX += -0.4F * f2 * 0.15F; // May change
				this.motionZ += 0.4F * f3 * 0.15F;
			}
		}

		this.stepHeight = 1.0F;
		this.jumpMovementFactor = this.getAIMoveSpeed() * 0.2F;

		if (isServer()) {
			this.setAIMoveSpeed((float) this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).getAttributeValue() / 4);
			super.moveEntityWithHeading(strafe, forward);
		}

		if (this.onGround) {
			// this.jumpPower = 0.0F;
			// this.setHorseJumping(false);
		}

		this.prevLimbSwingAmount = this.limbSwingAmount;
		double d0 = this.posX - this.prevPosX;
		double d1 = this.posZ - this.prevPosZ;
		float f4 = MathHelper.sqrt_double(d0 * d0 + d1 * d1) * 4.0F;

		if (f4 > 1.0F) {
			f4 = 1.0F;
		}

		this.limbSwingAmount += (f4 - this.limbSwingAmount) * 0.4F;
		this.limbSwing += this.limbSwingAmount;
	}
	else {
		this.stepHeight = 0.5F;
		this.jumpMovementFactor = 0.02F;
		super.moveEntityWithHeading(strafe, forward);
	}
}

@Override
public float getAIMoveSpeed() {
	double speed = this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).getAttributeValue();
	speed += TalentHelper.addToMoveSpeed(this);

	if ((!(this.getAttackTarget() instanceof EntityZertumEntity) && !(this.getAttackTarget() instanceof EntityPlayer)) || this.riddenByEntity instanceof EntityPlayer) {
		if (this.levels.getLevel() == Constants.stage2Level && this.hasEvolved()) {
			speed += 0.3D;
		}
		else if (this.hasEvolved() && this.levels.getLevel() != Constants.stage2Level) {
			speed += 0.3D;
		}
	}

	if (this.riddenByEntity instanceof EntityPlayer) {
		speed /= 4;
	}

	return (float) speed;
}

public float getAIAttackDamage() {
	double damage = this.getEntityAttribute(SharedMonsterAttributes.attackDamage).getAttributeValue();
	damage += TalentHelper.addToAttackDamage(this);

	if ((!(this.getAttackTarget() instanceof EntityZertumEntity) && !(this.getAttackTarget() instanceof EntityPlayer))) {
		if (this.levels.getLevel() == Constants.stage2Level && this.hasEvolved()) {
			damage += 1.0D;
		}
		else if (this.hasEvolved() && this.levels.getLevel() != Constants.stage2Level) {
			damage += 1.0D;
		}
		else if (this.levels.getLevel() == Constants.maxLevel && this.hasEvolved() && this.inFinalStage()) {
			damage += 3.0D;
		}
	}
	return (float) damage;
}

@Override
public void fall(float distance, float damageMultiplier) {
	if (distance > 1.0F) {
		this.playSound("game.neutral.hurt.fall.small", 0.4F, 1.0F);
	}

	int i = MathHelper.ceiling_float_int(((distance * 0.5F - 3.0F) - TalentHelper.fallProtection(this)) * damageMultiplier);

	if (i > 0 && !TalentHelper.isImmuneToFalls(this)) {
		this.attackEntityFrom(DamageSource.fall, i);

		if (this.riddenByEntity != null) {
			this.riddenByEntity.attackEntityFrom(DamageSource.fall, i);
		}

		Block block = this.worldObj.getBlockState(new BlockPos(this.posX, this.posY - 0.2D - this.prevRotationYaw, this.posZ)).getBlock();

		if (block.getMaterial() != Material.air && !this.isSilent()) {
			Block.SoundType soundtype = block.stepSound;
			this.worldObj.playSoundAtEntity(this, soundtype.getStepSound(), soundtype.getVolume() * 0.5F, soundtype.getFrequency() * 0.75F);
		}
	}
}

@SideOnly(Side.CLIENT)
public boolean isWolfWet() {
	return this.isWet;
}

@SideOnly(Side.CLIENT)
public float getShadingWhileWet(float p_70915_1_) {
	return 0.75F + (this.prevTimeWolfIsShaking + (this.timeWolfIsShaking - this.prevTimeWolfIsShaking) * p_70915_1_) / 2.0F * 0.25F;
}

@SideOnly(Side.CLIENT)
public float getShakeAngle(float p_70923_1_, float p_70923_2_) {
	float f2 = (this.prevTimeWolfIsShaking + (this.timeWolfIsShaking - this.prevTimeWolfIsShaking) * p_70923_1_ + p_70923_2_) / 1.8F;

	if (f2 < 0.0F) {
		f2 = 0.0F;
	}
	else if (f2 > 1.0F) {
		f2 = 1.0F;
	}

	return MathHelper.sin(f2 * (float) Math.PI) * MathHelper.sin(f2 * (float) Math.PI * 11.0F) * 0.15F * (float) Math.PI;
}

@SideOnly(Side.CLIENT)
public float getInterestedAngle(float partialTickTime) {
	return (this.prevTimeDogBegging + (this.timeDogBegging - this.prevTimeDogBegging) * partialTickTime) * 0.15F * (float) Math.PI;
}

@Override
public float getEyeHeight() {
	return this.height * 0.8F;
}

@Override
public int getVerticalFaceSpeed() {
	return this.isSitting() ? 20 : super.getVerticalFaceSpeed();
}

@Override
public boolean attackEntityFrom(DamageSource damageSource, float damage) {
	if (this.isEntityInvulnerable(damageSource)) {
		return false;
	}
	else {
		if (!TalentHelper.attackEntityFrom(this, damageSource, damage)) {
			return false;
		}

		Entity entity = damageSource.getEntity();
		this.aiSit.setSitting(false);

		if (entity != null && !(entity instanceof EntityPlayer) && !(entity instanceof EntityArrow)) {
			damage = (damage + 1.0F) / 2.0F;
		}

		return super.attackEntityFrom(damageSource, damage);
	}
}

@Override
public boolean attackEntityAsMob(Entity entity) {
	if (!TalentHelper.shouldDamageMob(this, entity)) {
		return false;
	}

	int damage = (int) (4 + (this.getEntityAttribute(SharedMonsterAttributes.attackDamage).getBaseValue()) / 2);
	damage = TalentHelper.attackEntityAsMob(this, entity, damage);

	if (entity instanceof EntityZombie) {
		((EntityZombie) entity).setAttackTarget(this);
	}

	return entity.attackEntityFrom(DamageSource.causeMobDamage(this), damage);
}

/**
 * Called when the mob's health reaches 0.
 */
@Override
public void onDeath(DamageSource par1DamageSource) {
	super.onDeath(par1DamageSource);

	if (par1DamageSource.getEntity() instanceof EntityPlayer) {
		EntityPlayer entityplayer = (EntityPlayer) par1DamageSource.getEntity();
		{
			entityplayer.triggerAchievement(ModAchievements.ZertKill);
			this.dropChestItems();

		}
	}
}

@Override
protected boolean isMovementBlocked() {
	return this.isPlayerSleeping() || this.ridingEntity != null || this.riddenByEntity instanceof EntityPlayer || super.isMovementBlocked();
}

@Override
public double getYOffset() {
	return this.ridingEntity instanceof EntityPlayer ? 0.5D : 0.0D;
}

@Override
public boolean isPotionApplicable(PotionEffect potionEffect) {
	if (this.getHealth() <= Constants.lowHP) {
		return false;
	}

	if (!TalentHelper.isPostionApplicable(this, potionEffect)) {
		return false;
	}

	return true;
}

@Override
public void setFire(int amount) {
	if (TalentHelper.setFire(this, amount)) {
		super.setFire(amount);
	}
}

public int foodValue(ItemStack stack) {
	if (stack == null || stack.getItem() == null) {
		return 0;
	}

	int foodValue = 0;

	Item item = stack.getItem();

	if (stack.getItem() != Items.rotten_flesh && item instanceof ItemFood) {
		ItemFood itemfood = (ItemFood) item;

		if (itemfood.isWolfsFavoriteMeat()) {
			foodValue = 40;
		}
	}

	foodValue = TalentHelper.changeFoodValue(this, stack, foodValue);

	return foodValue;
}

public int masterOrder() { // NAV: Master Order
	int order = 0;
	EntityPlayer player = (EntityPlayer) this.getOwner();

	if (player != null) {

		float distanceAway = player.getDistanceToEntity(this);
		ItemStack itemstack = player.inventory.getCurrentItem();

		if (itemstack != null && (itemstack.getItem() instanceof ItemTool) && distanceAway <= 20F) {
			order = 1;
		}

		if (itemstack != null && ((itemstack.getItem() instanceof ItemSword) || (itemstack.getItem() instanceof ItemBow))) {
			order = 2;
		}

		if (itemstack != null && itemstack.getItem() == Items.wheat) {
			order = 3;
		}

		if (itemstack != null && itemstack.getItem() == Items.bone) {
			order = 4;
		}
	}

	return order;
}

@Override
public boolean canBreatheUnderwater() {
	return TalentHelper.canBreatheUnderwater(this);
}

@Override
public boolean canInteract(EntityPlayer player) {
	return this.isOwner(player) || this.willObeyOthers();
}

public int nourishment() {
	int amount = 0;

	if (this.getZertumHunger() > 0) {
		amount = 40 + 4 * (this.effectiveLevel() + 1);

		if (isSitting() && this.talents.getLevel("rapidregen") == 5) {
			amount += 20 + 2 * (this.effectiveLevel() + 1);
		}

		if (!this.isSitting()) {
			amount *= 5 + this.talents.getLevel("rapidregen");
			amount /= 10;
		}
	}

	return amount;
}

public int effectiveLevel() {
	return (this.levels.getLevel()) / 10;
}

public String getPetName() {
	return this.dataWatcher.getWatchableObjectString(DataValues.dogName);
}

public void setPetName(String var1) {
	this.dataWatcher.updateObject(DataValues.dogName, var1);
}

public void setWillObeyOthers(boolean flag) {
	this.dataWatcher.updateObject(DataValues.obeyOthers, flag ? 1 : 0);
}

public boolean willObeyOthers() {
	return this.dataWatcher.getWatchableObjectInt(DataValues.obeyOthers) != 0;
}

public int points() {
	return this.levels.getLevel() + (this.getGrowingAge() < 0 ? 0 : Constants.startingPoints);
}

public int spendablePoints() {
	return this.points() - this.usedPoints();
}

public int usedPoints() {
	return TalentHelper.getUsedPoints(this);
}

public int getZertumHunger() {
	return this.dataWatcher.getWatchableObjectInt(DataValues.hungerTicks);
}

public void setZertumHunger(int par1) {
	this.dataWatcher.updateObject(DataValues.hungerTicks, MathHelper.clamp_int(par1, 0, Constants.hungerTicks));
}

@Override
public boolean func_142018_a(EntityLivingBase entityToAttack, EntityLivingBase owner) {
	if (TalentHelper.canAttackEntity(this, entityToAttack)) {
		return true;
	}

	if (!(entityToAttack instanceof EntityCreeper) && !(entityToAttack instanceof EntityGhast)) {
		if (entityToAttack instanceof EntityZertumEntity) {
			EntityZertumEntity entityZertum = (EntityZertumEntity) entityToAttack;

			if (entityZertum.isTamed() && entityZertum.getOwner() == owner) {
				return false;
			}
		}

		return entityToAttack instanceof EntityPlayer && owner instanceof EntityPlayer && !((EntityPlayer) owner).canAttackPlayer((EntityPlayer) entityToAttack)
				? false
				: !(entityToAttack instanceof EntityHorse) || !((EntityHorse) entityToAttack).isTame();
	}
	else {
		return false;
	}
}

@Override
public boolean canAttackClass(Class p_70686_1_) {
	if (TalentHelper.canAttackClass(this, p_70686_1_)) {
		return true;
	}

	return super.canAttackClass(p_70686_1_);
}

public void setHasToy(boolean hasBone) {
	this.hasToy = hasBone;
}

public boolean hasToy() {
	return this.hasToy;
}

@Override
@SideOnly(Side.CLIENT)
public void handleHealthUpdate(byte p_70103_1_) {
	if (p_70103_1_ ==  {
		this.isShaking = true;
		this.timeWolfIsShaking = 0.0F;
		this.prevTimeWolfIsShaking = 0.0F;
	}
	else {
		super.handleHealthUpdate(p_70103_1_);
	}
}

/**
 * Checks if the parameter is an item which this animal can be fed to breed
 * it (wheat, carrots or seeds depending on the animal type)
 */
@Override
public boolean isBreedingItem(ItemStack stack) {
	return stack != null && ZeroQuestAPI.breedList.containsItem(stack);
}

@Override
public int getMaxSpawnedInChunk() {
	return 8;
}

public EnumDyeColor getCollarColor() {
	return EnumDyeColor.byDyeDamage(this.dataWatcher.getWatchableObjectByte(DataValues.collarCollar) & 15);
}

public void setCollarColor(EnumDyeColor collarcolor) {
	this.dataWatcher.updateObject(DataValues.collarCollar, Byte.valueOf((byte) (collarcolor.getDyeDamage() & 15)));
}

private boolean getHorseWatchableBoolean(int p_110233_1_) {
	return (this.dataWatcher.getWatchableObjectInt(DataValues.mouth) & p_110233_1_) != 0;
}

private void setHorseWatchableBoolean(int p_110208_1_, boolean p_110208_2_) {
	int j = this.dataWatcher.getWatchableObjectInt(DataValues.mouth);

	if (p_110208_2_) {
		this.dataWatcher.updateObject(DataValues.mouth, Integer.valueOf(j | p_110208_1_));
	}
	else {
		this.dataWatcher.updateObject(DataValues.mouth, Integer.valueOf(j & ~p_110208_1_));
	}
}

@SideOnly(Side.CLIENT)
public float getMouthOpennessAngle(float p_110201_1_) {
	return this.prevMouthOpenness + (this.mouthOpenness - this.prevMouthOpenness) * p_110201_1_;
}

public void openMouth() {
	if (isServer()) {
		this.openMouthCounter = 1;
		this.setHorseWatchableBoolean(128, true);
	}
}

/**
 * Determines if an entity can be despawned, used on idle far away entities
 */
@Override
protected boolean canDespawn() {
	return !this.isTamed() && this.ticksExisted > 2400;
}

@Override
public boolean allowLeashing() {
	return !this.isAngry() && super.allowLeashing();
}

public void setBegging(boolean flag) {
	this.dataWatcher.updateObject(DataValues.beg, Byte.valueOf((byte) (flag ? 1 : 0)));
}

public boolean isBegging() {
	return this.dataWatcher.getWatchableObjectByte(DataValues.beg) == 1;
}

public boolean hasEvolved() {
	return (this.dataWatcher.getWatchableObjectByte(DataValues.evolve) & 4) != 0;
}

public void setEvolved(boolean evolved) {
	byte b0 = this.dataWatcher.getWatchableObjectByte(DataValues.evolve);

	if (evolved) {
		this.dataWatcher.updateObject(DataValues.evolve, Byte.valueOf((byte) (b0 | 4)));
	}
	else {
		this.dataWatcher.updateObject(DataValues.evolve, Byte.valueOf((byte) (b0 & -5)));
	}

	if (evolved) {
		if (!this.isChild() && !this.hasEvolved()) {
			this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.tamedHealth() + this.effectiveLevel());
			this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(this.tamedDamage());
		}
		else if (!this.isChild() && this.hasEvolved()) {
			this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.evoHealth());
		}
		else {
			this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.babyHealth());
			this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(this.babyDamage());
		}
	}
	else {
		if (this.isChild()) {
			this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.babyHealth());
			this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(this.babyDamage());
		}
	}
}

public boolean inFinalStage() {
	return (this.dataWatcher.getWatchableObjectByte(DataValues.evolve) & 2) != 0;
}

public void setFinalStage(boolean finalStage) {
	byte b0 = this.dataWatcher.getWatchableObjectByte(DataValues.evolve);

	if (finalStage) {
		this.dataWatcher.updateObject(DataValues.evolve, Byte.valueOf((byte) (b0 | 2)));
	}
	else {
		this.dataWatcher.updateObject(DataValues.evolve, Byte.valueOf((byte) (b0 & -3)));
	}
}

public String getOwnerName() {
	return this.dataWatcher.getWatchableObjectString(DataValues.ownerName);
}

public void saveOwnerName(String name) {
	this.dataWatcher.updateObject(DataValues.ownerName, name);
}

public String getOwnerID() {
	return this.dataWatcher.getWatchableObjectString(DataValues.ownerID);
}

public void saveOwnerID(String id) {
	this.dataWatcher.updateObject(DataValues.ownerID, id);
}

/** Custom Zertum Taming Code */
@Override
public void tamedFor(EntityPlayer player, boolean successful) {
	if (successful) {
		this.setTamed(true);
		this.navigator.clearPathEntity();
		this.setAttackTarget((EntityLivingBase) null);
		this.aiSit.setSitting(false);
		this.setOwnerId(player.getUniqueID().toString());
		this.playTameEffect(true);
		this.worldObj.setEntityState(this, (byte) 7);
		this.saveOwnerName(player.getDisplayNameString());
		this.saveOwnerID(player.getUniqueID().toString());
		player.triggerAchievement(ModAchievements.ZertTame);
		//@formatter:off
		//System.out.println("ID: " + zertum.getOwnerID() + ", Name: " + zertum.getOwnerName());
		//@formatter:on
	}
	else {
		this.playTameEffect(false);
		this.worldObj.setEntityState(this, (byte) 6);
	}
}

public void unTame() {
	this.setTamed(false);
	this.setEvolved(false);
	this.setFinalStage(false);
	this.navigator.clearPathEntity();
	this.setSitting(false);
	this.talents.resetTalents();
	this.levels.resetLevel();
	this.setOwnerId("");
	this.saveOwnerName("");
	this.setPetName("");
	this.setWillObeyOthers(false);
	this.mode.setMode(EnumMode.DOCILE);
}

public void evolveOnClient(EntityPlayer player) {
	this.setEvolved(true);
	this.worldObj.playBroadcastSound(1013, new BlockPos(this), 0);
	this.setHealth(this.getMaxHealth());
	player.addChatMessage(ChatHelper.getChatComponent(EnumChatFormatting.GREEN + this.getPetName() + " has been evolved!"));
}

public void evolveOnServer(EntityZertumEntity entity, EntityPlayer player) {
	entity.setEvolved(true);
	entity.worldObj.playBroadcastSound(1013, new BlockPos(entity), 0);
	entity.setHealth(entity.getMaxHealth());
	player.addChatMessage(ChatHelper.getChatComponent(EnumChatFormatting.GREEN + entity.getPetName() + " has been evolved!"));
}

public void finaEvolveOnClient(EntityPlayer player) {
	this.setFinalStage(true);
	this.worldObj.playBroadcastSound(1013, new BlockPos(this), 0);
	this.setHealth(this.getMaxHealth());
	player.addChatMessage(ChatHelper.getChatComponent(EnumChatFormatting.GREEN + this.getPetName() + " has been evolved to the final stage!"));
}

public void finaEvolveOnServer(EntityZertumEntity entity, EntityPlayer player) {
	entity.setFinalStage(true);
	entity.worldObj.playBroadcastSound(1013, new BlockPos(entity), 0);
	entity.setHealth(entity.getMaxHealth());
	player.addChatMessage(ChatHelper.getChatComponent(EnumChatFormatting.GREEN + entity.getPetName() + " has been evolved to the final stage!"));
}

public void devolveOnServer(EntityZertumEntity entity, EntityPlayer player) {
	if (entity.hasEvolved() && !entity.inFinalStage()) {
		entity.setEvolved(false);
	}
	else if (entity.hasEvolved() && entity.inFinalStage()) {
		entity.setFinalStage(false);
	}
	entity.worldObj.playBroadcastSound(1013, new BlockPos(entity), 0);
	entity.setHealth(entity.getMaxHealth());
	player.addChatMessage(ChatHelper.getChatComponent(EnumChatFormatting.DARK_RED + entity.getPetName() + " has been devolved!"));
}

public String genderPronoun() {
	if (this.getGender() == true) {
		return "him";
	}
	else {
		return "her";
	}
}

public String genderSubject() {
	if (this.getGender() == true) {
		return "he";
	}
	else {
		return "she";
	}
}

public void doNotOwnMessage(EntityZertumEntity zertum, EntityPlayer player) {
	player.addChatMessage(ChatHelper.getChatComponent(EnumChatFormatting.RED + "You do not own " + zertum.getPetName() + " and " + zertum.getOwnerName() + " doesn't allow " + zertum.genderPronoun() + EnumChatFormatting.RED + " to" + EnumChatFormatting.RED + " obey" + EnumChatFormatting.RED + "non-owners!"));
}
}

 

For the female, it's suppose to not render the male textures at all, which is what it is doing. But when the male is wild, it shows the tamed male textures and vice versa.

 

Here

Main Developer and Owner of Zero Quest

Visit the Wiki for more information

If I helped anyone, please give me a applaud and a thank you!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Hosting server with Apex hosting and whenever i load it the mods start to load then at a random point it says "failed to load datapack" and despite trying to find what might be the issue nothing has worked so far, help would be much appreciated. Below is the latter half of the log. [12May2024 05:05:55.678] [Forge Version Check/INFO] [net.minecraftforge.fml.VersionChecker/]: [sandbox] Found status: UP_TO_DATE Current: 1.19.2-1.0.1 Target: null [12May2024 05:05:56.174] [main/INFO] [com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService/]: Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', servicesHost='https://api.minecraftservices.com', name='PROD' [12May2024 05:05:56.209] [main/WARN] [net.minecraft.server.packs.VanillaPackResources/]: Assets URL 'union:/home/minecraft/multicraft/servers/server2322386/default/jar/libraries/net/minecraft/server/1.19.2-20220805.130853/server-1.19.2-20220805.130853-srg.jar%23523!/assets/.mcassetsroot' uses unexpected schema [12May2024 05:05:56.210] [main/WARN] [net.minecraft.server.packs.VanillaPackResources/]: Assets URL 'union:/home/minecraft/multicraft/servers/server2322386/default/jar/libraries/net/minecraft/server/1.19.2-20220805.130853/server-1.19.2-20220805.130853-srg.jar%23523!/data/.mcassetsroot' uses unexpected schema [12May2024 05:05:56.246] [main/DEBUG] [mixin/]: Mixing common.RegistryAccessMixin from byg.mixins.json into net.minecraft.server.WorldStem [12May2024 05:05:56.252] [main/DEBUG] [net.minecraftforge.coremod.transformer.CoreModBaseTransformer/COREMOD]: Transforming m_214362_ with desc (Lnet/minecraft/server/WorldLoader$InitConfig;Lnet/minecraft/server/WorldLoader$WorldDataSupplier;Lnet/minecraft/server/WorldLoader$ResultFactory;Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture; [12May2024 05:05:56.274] [main/DEBUG] [net.minecraftforge.coremod.transformer.CoreModBaseTransformer/COREMOD]: Transforming m_7179_ with desc (Lnet/minecraft/server/level/ServerPlayer;Lnet/minecraft/world/level/Level;Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/InteractionHand;Lnet/minecraft/world/phys/BlockHitResult;)Lnet/minecraft/world/InteractionResult; [12May2024 05:05:56.275] [main/DEBUG] [mixin/]: Mixing reach.compat119plus.ServerPlayerInteractionManagerMixin from pehkui.mixins.json into net.minecraft.server.level.ServerPlayerGameMode [12May2024 05:05:56.275] [main/DEBUG] [mixin/]: Mixing common.minecraft.ServerPlayerGameModeMixin from origins_classes.mixins.json into net.minecraft.server.level.ServerPlayerGameMode [12May2024 05:05:56.276] [main/DEBUG] [mixin/]: Renaming synthetic method lambda$originsClasses$saveSneakingState$0()Lnet/minecraft/server/level/ServerPlayer; to md2642d6$lambda$originsClasses$saveSneakingState$0$0 in origins_classes.mixins.json:common.minecraft.ServerPlayerGameModeMixin [12May2024 05:05:56.281] [main/DEBUG] [mixin/]: Mixing ServerPlayerGameModeMixin from forbidden_arcanus.mixins.json into net.minecraft.server.level.ServerPlayerGameMode [12May2024 05:05:56.281] [main/DEBUG] [mixin/]: forbidden_arcanus.mixins.json:ServerPlayerGameModeMixin: Class version 61 required is higher than the class version supported by the current version of Mixin (JAVA_16 supports class version 60) [12May2024 05:05:56.281] [main/DEBUG] [mixin/]: Renaming synthetic method lambda$forbiddenArcanus_destroyBlock$0(Lcom/stal111/forbidden_arcanus/common/item/modifier/DemolishingModifierBlockBreaker;)V to md2642d6$lambda$forbiddenArcanus_destroyBlock$0$1 in forbidden_arcanus.mixins.json:ServerPlayerGameModeMixin [12May2024 05:05:56.315] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:betterdungeons for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/YungsBetterDungeons-1.19.2-Forge-3.2.2.jar [12May2024 05:05:56.315] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:supermartijn642configlib for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/supermartijn642configlib-1.1.8-forge-mc1.19.jar [12May2024 05:05:56.315] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:additionalentityattributes for mod file [12May2024 05:05:56.316] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:oriacs for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/origins-accessbilities-1.19.2-1.1.1.jar [12May2024 05:05:56.316] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:botarium for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/botarium-forge-1.19.2-1.9.2.jar [12May2024 05:05:56.316] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:hammerlib for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/HammerLib-1.19.2-19.3.81.jar [12May2024 05:05:56.316] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:mcwwindows for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/mcw-windows-2.2.1-mc1.19.2forge.jar [12May2024 05:05:56.316] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:aquaculturedelight for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/aquaculture_delight_1.0.0_forge_1.19.2.jar [12May2024 05:05:56.316] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:apoli for mod file [12May2024 05:05:56.316] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:macawsroofsbyg for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/macawsroofsbyg-1.19.2-1.3.jar [12May2024 05:05:56.317] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:yungsapi for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/YungsApi-1.19.2-Forge-3.8.10.jar [12May2024 05:05:56.317] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:botanypotstiers for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/BotanyPotsTiers-Forge-1.19.2-3.3.2.jar [12May2024 05:05:56.317] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:guardvillagers for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/guardvillagers-1.19.2-1.5.9.jar [12May2024 05:05:56.317] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:createdieselgenerators for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/createdieselgenerators-1.19.2-1.2h.jar [12May2024 05:05:56.317] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:create_compressed for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/create_compressed_1.0.1_forge_1.19.2.jar [12May2024 05:05:56.317] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:apotheosis for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/Apotheosis-1.19.2-6.5.1.jar [12May2024 05:05:56.317] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:create_new_age for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/create-new-age-forge-1.19.2-1.1.2.jar [12May2024 05:05:56.317] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:balm for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/balm-forge-1.19.2-4.6.0.jar [12May2024 05:05:56.318] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:exposure for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/exposure-1.19.2-1.6.0-forge.jar [12May2024 05:05:56.318] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:betterfortresses for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/YungsBetterNetherFortresses-1.19.2-Forge-1.0.6.jar [12May2024 05:05:56.318] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:cloth_config for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/cloth-config-8.3.115-forge.jar [12May2024 05:05:56.318] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:qualitycrops for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/QualityCrops-1.19.2-1.3.3.jar [12May2024 05:05:56.318] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:supplementaries for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/supplementaries-1.19.2-2.4.20.jar [12May2024 05:05:56.318] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:geophilic for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/geophilic-1.19-2.0.0c.jar [12May2024 05:05:56.318] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:easy_piglins for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/easy-piglins-forge-1.19.2-1.0.5.jar [12May2024 05:05:56.318] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:structure_gel for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/structure_gel-1.19.2-2.7.3.jar [12May2024 05:05:56.318] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:corpse for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/corpse-forge-1.19.2-1.0.12.jar [12May2024 05:05:56.319] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:handcrafted for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/handcrafted-forge-1.19.2-2.0.6.jar [12May2024 05:05:56.319] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:botanytrees for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/BotanyTrees-Forge-1.19.2-5.0.12.jar [12May2024 05:05:56.319] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:explorify for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/explorify-v1.4.0.jar [12May2024 05:05:56.319] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:w2pets for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/WaystonesTeleportPets-1.19.2-1.19.4--1.2.jar [12May2024 05:05:56.319] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:ironfurnaces for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/ironfurnaces-1.19.2-3.6.5.jar [12May2024 05:05:56.319] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:dungeons_plus for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/dungeons_plus-1.19.2-1.3.1.jar [12May2024 05:05:56.319] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:mcwtrpdoors for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/mcw-trapdoors-1.1.2-mc1.19.2forge.jar [12May2024 05:05:56.320] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:transparent for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/transparent-5.1.2+1.19-forge.jar [12May2024 05:05:56.320] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:supermartijn642corelib for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/supermartijn642corelib-1.1.17-forge-mc1.19.2.jar [12May2024 05:05:56.320] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:createmoredrillheads for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/createmoredrillheads-2.0.3-1.19.2.jar [12May2024 05:05:56.320] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:yungsbridges for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/YungsBridges-1.19.2-Forge-3.1.0.jar [12May2024 05:05:56.320] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:botania for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/Botania-1.19.2-440-FORGE.jar [12May2024 05:05:56.320] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:resourcefulconfig for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/resourcefulconfig-forge-1.19.2-1.0.20.jar [12May2024 05:05:56.320] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:fairylights for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/fairylights-6.0.1-1.19.2.jar [12May2024 05:05:56.321] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:curios for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/curios-forge-1.19.2-5.1.6.2.jar [12May2024 05:05:56.321] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:origins for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/origins-forge-1.19.2-1.7.1.7-all.jar [12May2024 05:05:56.321] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:createarmory for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/createarmoryv0.6.jar [12May2024 05:05:56.321] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:yungsextras for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/YungsExtras-1.19.2-Forge-3.1.0.jar [12May2024 05:05:56.321] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:framedblocks for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/FramedBlocks-6.8.6.jar [12May2024 05:05:56.321] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:mcwroofs for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/mcw-roofs-2.3.0-mc1.19.2forge.jar [12May2024 05:05:56.321] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:mcwfurnitures for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/mcw-furniture-3.2.2-mc1.19.2forge.jar [12May2024 05:05:56.322] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:createindustry for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/createindustry-0.8.0b-1.19.2.jar [12May2024 05:05:56.322] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:adorn for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/Adorn-3.9.1+1.19.2-forge.jar [12May2024 05:05:56.322] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:betterendisland for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/YungsBetterEndIsland-1.19.2-Forge-1.0.jar [12May2024 05:05:56.322] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:bettermineshafts for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/YungsBetterMineshafts-1.19.2-Forge-3.2.1.jar [12May2024 05:05:56.322] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:sliceanddice for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/sliceanddice-forge-2.3.2.jar [12May2024 05:05:56.322] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:mcwlights for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/mcw-lights-1.0.6-mc1.19.2forge.jar [12May2024 05:05:56.322] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:betterjungletemples for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/YungsBetterJungleTemples-1.19.2-Forge-1.0.1.jar [12May2024 05:05:56.323] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:bellsandwhistles for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/bellsandwhistles-v0.4.4-1.19.2.jar [12May2024 05:05:56.323] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:rechiseled for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/rechiseled-1.1.6-forge-mc1.19.2.jar [12May2024 05:05:56.323] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:jei for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/jei-1.19.2-forge-11.6.0.1019.jar [12May2024 05:05:56.323] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:pehkui for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/Pehkui-3.8.0+1.19.2-forge.jar [12May2024 05:05:56.323] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:goblintraders for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/goblintraders-1.8.0-1.19.2.jar [12May2024 05:05:56.323] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:caelus for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/caelus-forge-1.19.2-3.0.0.6.jar [12May2024 05:05:56.323] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:apotheotic_additions for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/apotheotic_additions1.0.4.jar [12May2024 05:05:56.323] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:naturescompass for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/NaturesCompass-1.19.2-1.10.0-forge.jar [12May2024 05:05:56.323] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:libx for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/LibX-1.19.2-4.2.8.jar [12May2024 05:05:56.324] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:botanypots for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/BotanyPots-Forge-1.19.2-9.0.43.jar [12May2024 05:05:56.324] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:design_decor for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/design_decor-0.4-1.19.2.jar [12May2024 05:05:56.324] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:rechiseledcreate for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/rechiseledcreate-1.0.2-forge-mc1.19.jar [12May2024 05:05:56.324] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:create_easy_structures for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/create_easy_structures-0.1.1-1.19.2.jar [12May2024 05:05:56.324] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:book_fishing for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/Book Fishing 1.0.0 - 1.19.2.jar [12May2024 05:05:56.324] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:mythicmounts for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/mythicmounts-19.2-7.2.1-forge.jar [12May2024 05:05:56.324] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:mcwpaths for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/mcw-paths-1.0.4forge-mc1.19.2.jar [12May2024 05:05:56.324] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:terrablender for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/TerraBlender-forge-1.19.2-2.0.1.136.jar [12May2024 05:05:56.324] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:wildfire_gender for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/Female-Gender-Mod-forge-1.19.1-3.0.1.jar [12May2024 05:05:56.324] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:astikorcarts for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/astikorcarts-1.19.2-1.1.2.jar [12May2024 05:05:56.324] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:calio for mod file [12May2024 05:05:56.324] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:kotlinforforge for mod file [12May2024 05:05:56.325] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:paintings for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/Paintings-forge-1.19.2-10.2.4.0.jar [12May2024 05:05:56.325] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:forge for mod file /home/minecraft/multicraft/servers/server2322386/default/jar/libraries/net/minecraftforge/forge/1.19.2-43.3.13/forge-1.19.2-43.3.13-universal.jar [12May2024 05:05:56.325] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:silentgear for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/silent-gear-1.19.2-3.2.2.jar [12May2024 05:05:56.325] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:origins_plus_plus for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/origins-plus-plus-2.2-forge.jar [12May2024 05:05:56.325] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:archaeology for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/archaeology-api-1.19.2-1.0.0.jar [12May2024 05:05:56.325] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:flywheel for mod file [12May2024 05:05:56.325] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:alloyed for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/alloyed-1.19.2-v1.5a.jar [12May2024 05:05:56.325] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:createoreexcavation for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/createoreexcavation-1.19-1.2.3.jar [12May2024 05:05:56.325] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:decoration_delight for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/DecorationDelightRefurbished-1.19.2.jar [12May2024 05:05:56.325] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:nocubescreateexp for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/nocube's_create_compact_exp_1.0.3_forge_1.19.2.jar [12May2024 05:05:56.326] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:strictly_origins for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/strictly_origins_v9.0.1_1.19.2.jar [12May2024 05:05:56.326] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:appleskin for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/appleskin-forge-mc1.19-2.4.2.jar [12May2024 05:05:56.326] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:puzzleslib for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/PuzzlesLib-v4.4.3-1.19.2-Forge.jar [12May2024 05:05:56.326] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:byg for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/Oh_The_Biomes_You'll_Go-forge-1.19.2-2.0.1.6.jar [12May2024 05:05:56.326] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:corgilib for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/CorgiLib-forge-1.19.2-1.0.0.34.jar [12May2024 05:05:56.326] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:aquaculture for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/Aquaculture-1.19.2-2.4.17.jar [12May2024 05:05:56.326] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:babydelight for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/baby_delight_1.0.2_forge_1.19.2.jar [12May2024 05:05:56.326] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:mcwfurnituresbyg for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/mcwfurnituresbyg-1.19.2-1.2.jar [12May2024 05:05:56.326] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:valkyrienskies for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/valkyrienskies-119-2.1.2-beta.1.jar [12May2024 05:05:56.327] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:cosmeticarmorreworked for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/CosmeticArmorReworked-1.19.2-v1a.jar [12May2024 05:05:56.327] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:letsdoaddonstructures for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/letsdo-addon-structures-1.6.0_1.19.2.jar [12May2024 05:05:56.327] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:ad_astra for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/ad_astra-forge-1.19.2-1.12.7.jar [12May2024 05:05:56.327] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:ad_astra_giselle_addon for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/Ad-Astra-Giselle-Addon-forge-1.19.2-1.20.jar [12May2024 05:05:56.327] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:tetra for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/tetra-1.19.2-5.6.0.jar [12May2024 05:05:56.327] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:hexerei for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/hexerei-0.3.3.1.jar [12May2024 05:05:56.327] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:cp_tweaks for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/cp_tweaks-1.0.7-1.19.2.jar [12May2024 05:05:56.327] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:create_upgraded_armor for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/Renforced_Brass_Armor_1.19.2.jar [12May2024 05:05:56.327] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:create_things_and_misc for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/create_misc_and_things_ 1.19.2_4.0A.jar [12May2024 05:05:56.327] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:betterwitchhuts for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/YungsBetterWitchHuts-1.19.2-Forge-2.1.0.jar [12May2024 05:05:56.328] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:netherportalfix for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/netherportalfix-forge-1.19-10.0.1.jar [12May2024 05:05:56.328] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:naturalist for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/naturalist-forge-4.0.3-1.19.2.jar [12May2024 05:05:56.328] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:betteroceanmonuments for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/YungsBetterOceanMonuments-1.19.2-Forge-2.1.1.jar [12May2024 05:05:56.328] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:macawsbridgesbyg for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/macawsbridgesbyg-1.19.2-1.4.jar [12May2024 05:05:56.328] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:sophisticatedcore for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/sophisticatedcore-1.19.2-0.6.4.605.jar [12May2024 05:05:56.328] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:create_crush_everything for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/create_recycle_1.0.2_forge_1.19.2.jar [12May2024 05:05:56.328] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:applecrates for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/Apple Crates-forge-1.19.2-2.9.0.jar [12May2024 05:05:56.328] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:vs_eureka for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/eureka-1192-1.5.1-beta.2.jar [12May2024 05:05:56.329] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:placebo for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/Placebo-1.19.2-7.4.0.jar [12May2024 05:05:56.329] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:citadel for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/citadel-2.1.4-1.19.jar [12May2024 05:05:56.329] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:alexsmobs for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/alexsmobs-1.21.1.jar [12May2024 05:05:56.329] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:iceandfire for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/iceandfire-1.19.2-2.1.13-beta-3.jar [12May2024 05:05:56.329] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:mixinextras for mod file [12May2024 05:05:56.329] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:bookshelf for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/Bookshelf-Forge-1.19.2-16.3.20.jar [12May2024 05:05:56.329] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:sophisticatedbackpacks for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/sophisticatedbackpacks-1.19.2-3.20.2.1035.jar [12May2024 05:05:56.329] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:create_dragon_lib for mod file [12May2024 05:05:56.329] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:relics for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/relics-1.19.2-0.6.2.4.jar [12May2024 05:05:56.329] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:mcwdoors for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/mcw-doors-1.1.0forge-mc1.19.2.jar [12May2024 05:05:56.330] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:mermod for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/mermod-forge-1.11.jar [12May2024 05:05:56.330] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:railways for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/Steam_Rails-1.6.4+forge-mc1.19.2.jar [12May2024 05:05:56.330] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:carryon for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/carryon-forge-1.19.2-2.1.2.23.jar [12May2024 05:05:56.330] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:adtetra for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/adtetra-1.0.1.jar [12May2024 05:05:56.330] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:create_connected for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/create_connected-0.7.4-mc1.19.2-all.jar [12May2024 05:05:56.330] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:chipped for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/chipped-forge-1.19.2-2.1.5.jar [12May2024 05:05:56.330] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:mcwbridges for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/mcw-bridges-3.0.0-mc1.19.2forge.jar [12May2024 05:05:56.330] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:farmersdelight for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/FarmersDelight-1.19.2-1.2.4.jar [12May2024 05:05:56.330] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:createframed for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/createframed-1.19.2-1.4.2.jar [12May2024 05:05:56.331] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:nekoration for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/nekoration-1.19.2-1.8.1.jar [12May2024 05:05:56.331] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:mcwfences for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/mcw-fences-1.1.1-mc1.19.2forge.jar [12May2024 05:05:56.331] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:mcwfencesbyg for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/mcwfencesbyg-1.19.2-1.0.jar [12May2024 05:05:56.331] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:diagonalwindows for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/DiagonalWindows-v4.0.2-1.19.2-Forge.jar [12May2024 05:05:56.331] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:simplefarming for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/simplefarming-1.19.2-2.0.4.jar [12May2024 05:05:56.331] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:lionfishapi for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/lionfishapi-1.8.jar [12May2024 05:05:56.331] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:fishontheline for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/fishontheline-1.19.2-3.2.jar [12May2024 05:05:56.331] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:cnb for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/CNB-1.19-1.5.4.jar [12May2024 05:05:56.331] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:geckolib3 for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/geckolib-forge-1.19-3.1.40.jar [12May2024 05:05:56.331] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:crittersandcompanions for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/crittersandcompanions-1.19.2-2.1.2.jar [12May2024 05:05:56.331] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:cataclysm for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/L_Enders_Cataclysm-1.99.2-1.19.2.jar [12May2024 05:05:56.332] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:patchouli for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/Patchouli-1.19.2-77.jar [12May2024 05:05:56.332] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:feywild for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/Feywild-1.19.2-3.2.6.jar [12May2024 05:05:56.332] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:ars_nouveau for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/ars_nouveau-1.19.2-3.23.0.jar [12May2024 05:05:56.332] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:ars_artifice for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/ars_artifice-1.19.2-1.0.6.jar [12May2024 05:05:56.332] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:suppsquared for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/suppsquared-1.19.2-1.1.1.jar [12May2024 05:05:56.332] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:collective for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/collective-1.19.2-7.57.jar [12May2024 05:05:56.332] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:origins_classes for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/origins-classes-forge-1.2.1.jar [12May2024 05:05:56.332] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:betterstrongholds for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/YungsBetterStrongholds-1.19.2-Forge-3.2.0.jar [12May2024 05:05:56.332] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:resourcefullib for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/resourcefullib-forge-1.19.2-1.1.24.jar [12May2024 05:05:56.332] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:architectury for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/architectury-6.6.92-forge.jar [12May2024 05:05:56.332] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:doapi for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/doapi-1.1.0b.jar [12May2024 05:05:56.332] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:vinery for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/letsdo-vinery-forge-1.3.12b.jar [12May2024 05:05:56.333] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:candlelight for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/letsdo-candlelight-forge-1.1.9.jar [12May2024 05:05:56.333] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:bakery for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/letsdo-bakery-forge-1.0.6.jar [12May2024 05:05:56.333] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:meadow for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/letsdo-meadow-forge-1.2.4.jar [12May2024 05:05:56.333] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:reaping for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/reaping-forge-2.2.0.jar [12May2024 05:05:56.333] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:productivebees for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/productivebees-1.19.2-0.10.7.2.jar [12May2024 05:05:56.333] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:the_bumblezone for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/the_bumblezone_forge-6.9.13+1.19.2.jar [12May2024 05:05:56.333] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:bwncr for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/bwncr-forge-1.19.2-3.14.1.jar [12May2024 05:05:56.333] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:t_and_t for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/Towns-and-Towers-v.1.10-_FORGE-1.19.2_.jar [12May2024 05:05:56.333] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:arcane_abilities for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/arcane_abilities-0.1.9.1-1.19.2.jar [12May2024 05:05:56.333] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:festive_delight for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/Festive_Delight_1.3_Forge_1.19.2.jar [12May2024 05:05:56.333] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:sophisticatedstorage for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/sophisticatedstorage-1.19.2-0.9.7.765.jar [12May2024 05:05:56.334] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:octolib for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/octolib-1.19.2-0.3.jar [12May2024 05:05:56.334] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:copycats for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/Copycats-forge.1.19.2-1.2.5.jar [12May2024 05:05:56.334] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:xlpackets for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/xlpackets-1.18.2-2.1.jar [12May2024 05:05:56.334] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:create for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/create-1.19.2-0.5.1.f.jar [12May2024 05:05:56.334] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:createdeco for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/createdeco-1.3.3-1.19.2.jar [12May2024 05:05:56.334] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:create_central_kitchen for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/create_central_kitchen-1.19.2-for-create-0.5.1.f-1.3.11.c.jar [12May2024 05:05:56.334] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:vs_clockwork for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/clockwork-1.19.2-0.1.13-forge-4621aeec07.jar [12May2024 05:05:56.334] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:interiors for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/interiors-0.5.3+forge-mc1.19.2.jar [12May2024 05:05:56.334] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:extendedgears for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/extendedgears-2.1.1-1.19.2-0.5.1.f-forge.jar [12May2024 05:05:56.334] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:createastracompat for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/createastracompat-1.0.3-1.19.2.jar [12May2024 05:05:56.334] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:ars_creo for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/ars_creo-1.19.2-3.2.1.jar [12May2024 05:05:56.334] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:create_crystal_clear for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/create_crystal_clear-0.2.1-1.19.2.jar [12May2024 05:05:56.335] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:createcasing for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/CreateCasing-1.19.2-1.6.0-ht1.jar [12May2024 05:05:56.335] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:waystones for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/waystones-forge-1.19.2-11.4.2.jar [12May2024 05:05:56.335] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:mcwpaintings for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/mcw-paintings-1.0.5-1.19.2forge.jar [12May2024 05:05:56.335] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:decorative_blocks for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/Decorative Blocks-forge-1.19.2-3.0.0.jar [12May2024 05:05:56.335] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:betteranimalsplus for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/betteranimalsplus-1.19.2-11.0.10-forge.jar [12May2024 05:05:56.335] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:create_confectionery for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/create-confectionery1.19.2_v1.0.9.jar [12May2024 05:05:56.335] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:betterdeserttemples for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/YungsBetterDesertTemples-1.19.2-Forge-2.2.2.jar [12May2024 05:05:56.335] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:qualitysdelight for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/QualitysDelight-1.19.2-1.5.3.jar [12May2024 05:05:56.335] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:farmersrespite for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/FarmersRespite-1.19-2.0.jar [12May2024 05:05:56.336] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:oceansdelight for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/oceansdelight-1.0.2-1.19.2.jar [12May2024 05:05:56.336] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:endersdelight for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/endersdelight-1.19-1.2.2.jar [12May2024 05:05:56.336] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:blueprint for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/blueprint-1.19.2-6.2.0.jar [12May2024 05:05:56.336] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:bobberdetector for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/bobberdetector-0.1.9-1.19.2.jar [12May2024 05:05:56.336] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:iron_fishing_rods for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/Iron Fishing Rods 1.0.0 - 1.19.2.jar [12May2024 05:05:56.336] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:moderntrainparts for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/moderntrainparts-mc1.19.2-0.2.2-forge.jar [12May2024 05:05:56.336] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:better_fishing_rods for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/Better Fishing Rods 1.0.0 - 1.19.2.jar [12May2024 05:05:56.336] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:moonlight for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/moonlight-1.19.2-2.3.6-forge.jar [12May2024 05:05:56.337] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:babyfat for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/babyfat-forge-1.19.2-1.1.2.jar [12May2024 05:05:56.337] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:silentlib for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/silent-lib-1.19.2-7.0.3.jar [12May2024 05:05:56.337] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:jade for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/Jade-1.19.1-forge-8.9.2.jar [12May2024 05:05:56.337] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:another_furniture for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/another_furniture-forge-1.19.2-2.1.4.jar [12May2024 05:05:56.337] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:nethersdelight for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/NethersDelight-1.19-3.1.jar [12May2024 05:05:56.337] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:valkyrienskies_sophisticatedstorage_compat for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/valkyrienskies_sophisticatedstorage_compat-1.19.2-1.0.2-SS0.8.jar [12May2024 05:05:56.337] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:easy_villagers for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/easy_villagers-1.19.2-1.0.17.jar [12May2024 05:05:56.337] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:iceberg for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/Iceberg-1.19.2-forge-1.1.4.jar [12May2024 05:05:56.337] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:reliquary for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/reliquary-1.19.2-2.0.40.1198.jar [12May2024 05:05:56.337] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:mutil for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/mutil-1.19.2-5.2.0.jar [12May2024 05:05:56.338] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:create_sa for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/create-stuff-additions1.19.2_v2.0.4a.jar [12May2024 05:05:56.338] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:ars_elemental for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/ars_elemental-1.19.2-0.5.9.4.1.jar [12May2024 05:05:56.338] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:diagonalfences for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/DiagonalFences-v4.2.6-1.19.2-Forge.jar [12May2024 05:05:56.338] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:miners_delight for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/miners_delight-1.19.2-1.1.2.jar [12May2024 05:05:56.338] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:dynamicvillage for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/dynamicvillage-v0.3-1.19.2.jar [12May2024 05:05:56.338] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:sandbox for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/SandBox-1.19.2-1.0.1.jar [12May2024 05:05:56.338] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:creeperoverhaul for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/creeperoverhaul-2.0.9-forge.jar [12May2024 05:05:56.338] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:alexsdelight for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/alexsdelight-1.4.1.jar [12May2024 05:05:56.338] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:ferritecore for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/ferritecore-5.0.3-forge.jar [12May2024 05:05:56.338] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:solcarrot for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/SoL-Carrot-1.19.2-1.14.0.jar [12May2024 05:05:56.339] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:valhelsia_core for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/valhelsia_core-forge-1.19.2-0.5.0.jar [12May2024 05:05:56.339] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:forbidden_arcanus for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/forbidden_arcanus-1.19.2-2.1.5.jar [12May2024 05:05:56.339] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:create_enchantment_industry for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/create_enchantment_industry-1.19.2-for-create-0.5.1.f-1.2.9.d.jar [12May2024 05:05:56.339] [main/DEBUG] [net.minecraftforge.server.ServerLifecycleHooks/CORE]: Generating PackInfo named mod:createaddition for mod file /home/minecraft/multicraft/servers/server2322386/default/mods/createaddition-1.19.2-1.2.3.jar [12May2024 05:05:56.343] [main/INFO] [net.minecraft.server.MinecraftServer/]: Found new data pack Supplementaries Generated Pack, loading it automatically [12May2024 05:05:56.343] [main/INFO] [net.minecraft.server.MinecraftServer/]: Found new data pack Suppsquared Generated Pack, loading it automatically [12May2024 05:05:56.343] [main/INFO] [net.minecraft.server.MinecraftServer/]: Found new data pack create_central_kitchen:farmersdelight, loading it automatically [12May2024 05:05:56.343] [main/INFO] [net.minecraft.server.MinecraftServer/]: Found new data pack create_central_kitchen:farmersrespite, loading it automatically [12May2024 05:05:56.343] [main/INFO] [net.minecraft.server.MinecraftServer/]: Found new data pack create_central_kitchen:miners_delight, loading it automatically [12May2024 05:05:56.344] [main/INFO] [net.minecraft.server.MinecraftServer/]: Found new data pack create_new_age:create_new_age_monkey_edition, loading it automatically [12May2024 05:05:56.344] [main/INFO] [net.minecraft.server.MinecraftServer/]: Found new data pack t_and_t_waystones_patch_1.19.2.zip, loading it automatically [12May2024 05:05:56.347] [main/DEBUG] [mixin/]: Mixing MultiPackResourceManagerMixin from moonlight-common.mixins.json into net.minecraft.server.packs.resources.MultiPackResourceManager [12May2024 05:05:56.434] [main/DEBUG] [mixin/]: Mixing MixinShapedRecipeBuilder from railways-common.mixins.json into net.minecraft.data.recipes.ShapedRecipeBuilder [12May2024 05:05:56.494] [main/INFO] [supplementaries/]: Generated runtime SERVER_DATA for pack Supplementaries Generated Pack in: 91 ms [12May2024 05:05:56.524] [main/INFO] [suppsquared/]: Generated runtime SERVER_DATA for pack Suppsquared Generated Pack in: 29 ms (debug resource dump on) [12May2024 05:05:59.668] [main/WARN] [net.minecraft.server.Main/]: Failed to load datapacks, can't proceed with server load. You can either fix your datapacks or reset to vanilla with --safeMode java.util.concurrent.ExecutionException: com.google.gson.JsonParseException: Error loading registry data: No key name in MapLike[{"fallback":"minecraft:empty","elements":[{"weight":1,"element":{"element_type":"minecraft:empty_pool_element"}},{"weight":1,"element":{"element_type":"minecraft:single_pool_element","projection":"rigid","location":"create_easy_structures:grade1","processors":"minecraft:empty"}},{"weight":1,"element":{"element_type":"minecraft:single_pool_element","projection":"rigid","location":"create_easy_structures:grade2","processors":"minecraft:empty"}}],"forge:registry_name":"minecraft:worldgen/template_pool"}] at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396) ~[?:?] at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2073) ~[?:?] at net.minecraft.server.Main.main(Main.java:182) ~[server-1.19.2-20220805.130853-srg.jar%23523!/:?] at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] at net.minecraftforge.fml.loading.targets.CommonServerLaunchHandler.lambda$launchService$0(CommonServerLaunchHandler.java:29) ~[fmlloader-1.19.2-43.3.13.jar%2367!/:?] at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:30) [modlauncher-10.0.8.jar%2354!/:?] at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) [modlauncher-10.0.8.jar%2354!/:?] at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) [modlauncher-10.0.8.jar%2354!/:?] at cpw.mods.modlauncher.Launcher.run(Launcher.java:106) [modlauncher-10.0.8.jar%2354!/:?] at cpw.mods.modlauncher.Launcher.main(Launcher.java:77) [modlauncher-10.0.8.jar%2354!/:?] at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) [modlauncher-10.0.8.jar%2354!/:?] at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) [modlauncher-10.0.8.jar%2354!/:?] at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:141) [bootstraplauncher-1.1.2.jar:?] Caused by: com.google.gson.JsonParseException: Error loading registry data: No key name in MapLike[{"fallback":"minecraft:empty","elements":[{"weight":1,"element":{"element_type":"minecraft:empty_pool_element"}},{"weight":1,"element":{"element_type":"minecraft:single_pool_element","projection":"rigid","location":"create_easy_structures:grade1","processors":"minecraft:empty"}},{"weight":1,"element":{"element_type":"minecraft:single_pool_element","projection":"rigid","location":"create_easy_structures:grade2","processors":"minecraft:empty"}}],"forge:registry_name":"minecraft:worldgen/template_pool"}] at net.minecraft.core.RegistryAccess.m_206152_(RegistryAccess.java:211) ~[server-1.19.2-20220805.130853-srg.jar%23523!/:?] at java.util.Optional.ifPresent(Optional.java:178) ~[?:?] at net.minecraft.core.RegistryAccess.m_206159_(RegistryAccess.java:210) ~[server-1.19.2-20220805.130853-srg.jar%23523!/:?] at net.minecraft.core.RegistryAccess.m_206171_(RegistryAccess.java:203) ~[server-1.19.2-20220805.130853-srg.jar%23523!/:?] at net.minecraft.resources.RegistryOps.m_206817_(RegistryOps.java:32) ~[server-1.19.2-20220805.130853-srg.jar%23523!/:?] at net.minecraft.resources.RegistryOps.m_206813_(RegistryOps.java:25) ~[server-1.19.2-20220805.130853-srg.jar%23523!/:?] at net.minecraft.server.Main.lambda$main$2(Main.java:160) ~[server-1.19.2-20220805.130853-srg.jar%23523!/:?] at net.minecraft.server.WorldLoader.m_214362_(WorldLoader.java:24) ~[server-1.19.2-20220805.130853-srg.jar%23523!/:?] at net.minecraft.server.WorldStem.m_214415_(WorldStem.java:18) ~[server-1.19.2-20220805.130853-srg.jar%23523!/:?] at net.minecraft.server.Main.lambda$main$3(Main.java:158) ~[server-1.19.2-20220805.130853-srg.jar%23523!/:?] at net.minecraft.Util.m_214652_(Util.java:775) ~[server-1.19.2-20220805.130853-srg.jar%23523!/:?] at net.minecraft.Util.m_214679_(Util.java:770) ~[server-1.19.2-20220805.130853-srg.jar%23523!/:?] at net.minecraft.server.Main.main(Main.java:157) ~[server-1.19.2-20220805.130853-srg.jar%23523!/:?] ... 13 more  
    • im getting a crash and error java.lang.IllegalArgumentException: Cannot get property DirectionProperty{name=facing, clazz=class net.minecraft.core.Direction, values=[north, south, west, east]} as it does not exist in Block{minecraft:air} when loading new chunks. i dont know if its one specific area or not. i used minecraft region fixer and it didnt find any corrupted chunks. i can post a crash log if someone tells me how to do it.
    • Hello. I am trying to make a mod about smithing and stuff and im want to make a smeltery similar to the ones in tinkers construct (a smeltery where i can drain stuff from amd fill it into forms) is there a tutorial or something?? (i just startet modding without MCreator and my java skills are not really existend yet)
    • If I remember correctly, Jump Boost uses an attribute modifier. It doesn't have its own class.
    • Hello. Where can I find how Vanilla jump boost effect works. I have been searching this class for a few hours but have not found it anywhere. I just want to use it functional in my mod.
  • Topics

  • Who's Online (See full list)

    • There are no registered users currently online
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.