Auto-formatting "fix" and additional stuff

Adapt auto-formatting to own weird style
Re-added missing Jens AI and loot
Fixed creative tab
This commit is contained in:
ACGaming 2020-08-23 15:38:40 +02:00
parent bac6384bff
commit 68b777bffb
38 changed files with 3063 additions and 2394 deletions

View file

@ -12,33 +12,38 @@ import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@Mod(modid = "spackenmobs", version = "RC1", acceptedMinecraftVersions = "[1.12.2]") @Mod(modid = "spackenmobs", version = "RC1", acceptedMinecraftVersions = "[1.12.2]")
public class Spackenmobs { public class Spackenmobs
{
public static final String MODID = "spackenmobs"; public static final String MODID = "spackenmobs";
public static final String VERSION = "RC1"; public static final String VERSION = "RC1";
public static final CreativeTabs SPACKENMOBS_TAB = new SpackenmobsTab(); public static final CreativeTabs SPACKENMOBS_TAB = new SpackenmobsTab("tabSpackenmobs");
@Instance @Instance
public static Spackenmobs instance; public static Spackenmobs instance;
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
@EventHandler @EventHandler
public void preInitClient(FMLPreInitializationEvent event) { public void preInitClient(FMLPreInitializationEvent event)
{
ModEntities.initModels(); ModEntities.initModels();
} }
@EventHandler @EventHandler
public void preInit(FMLPreInitializationEvent event) { public void preInit(FMLPreInitializationEvent event)
{
} }
@EventHandler @EventHandler
public void init(FMLInitializationEvent event) { public void init(FMLInitializationEvent event)
{
} }
@EventHandler @EventHandler
public void postInit(FMLPostInitializationEvent event) { public void postInit(FMLPostInitializationEvent event)
{
} }
} }

View file

@ -6,14 +6,17 @@ import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
public class SpackenmobsTab extends CreativeTabs { public class SpackenmobsTab extends CreativeTabs
public SpackenmobsTab() { {
super(Spackenmobs.MODID); public SpackenmobsTab(String name)
{
super(Spackenmobs.MODID + "." + name);
} }
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
@Override @Override
public ItemStack getTabIconItem() { public ItemStack getTabIconItem()
{
return new ItemStack(ModItems.RAM); return new ItemStack(ModItems.RAM);
} }
} }

View file

@ -9,48 +9,56 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.world.World; import net.minecraft.world.World;
public class EntityAIEatDroppedFish extends EntityAIBase { public class EntityAIEatDroppedFish extends EntityAIBase
{
private EntityJens jens; private EntityJens jens;
private Random rand = new Random(); private Random rand = new Random();
private World world = null; private World world = null;
double searchDistance = 10.0D; double searchDistance = 10.0D;
public EntityAIEatDroppedFish(EntityJens jens) { public EntityAIEatDroppedFish(EntityJens jens)
{
this.jens = jens; this.jens = jens;
this.world = jens.world; this.world = jens.world;
} }
public EntityItem getNearbyFood() { public EntityItem getNearbyFood()
{
List<EntityItem> items = getItems(); List<EntityItem> items = getItems();
for (EntityItem item : items) { for (EntityItem item : items)
{
EntityItem stack = item; EntityItem stack = item;
if (items != null) { if (items != null)
{
return stack; return stack;
} }
} }
return null; return null;
} }
List<EntityItem> getItems() { List<EntityItem> getItems()
return this.world.getEntitiesWithinAABB(EntityItem.class, {
new AxisAlignedBB(this.jens.posX - this.searchDistance, this.jens.posY - this.searchDistance, return this.world.getEntitiesWithinAABB(EntityItem.class, new AxisAlignedBB(this.jens.posX - this.searchDistance, this.jens.posY - this.searchDistance, this.jens.posZ - this.searchDistance,
this.jens.posZ - this.searchDistance, this.jens.posX + this.searchDistance, this.jens.posX + this.searchDistance, this.jens.posY + this.searchDistance, this.jens.posZ + this.searchDistance));
this.jens.posY + this.searchDistance, this.jens.posZ + this.searchDistance));
} }
@Override @Override
public boolean shouldExecute() { public boolean shouldExecute()
{
EntityItem getNearbyFood = getNearbyFood(); EntityItem getNearbyFood = getNearbyFood();
if (getNearbyFood != null && !this.jens.isChild() && this.jens.yummy_in_tummy == false if (getNearbyFood != null && !this.jens.isChild() && this.jens.yummy_in_tummy == false && this.jens.isFishItem(getNearbyFood.getItem()))
&& this.jens.isFishItem(getNearbyFood.getItem())) { {
execute(this.jens, getNearbyFood); execute(this.jens, getNearbyFood);
} }
return false; return false;
} }
public boolean execute(EntityJens jens, EntityItem item) { public boolean execute(EntityJens jens, EntityItem item)
if (jens.getNavigator().tryMoveToXYZ(item.posX, item.posY, item.posZ, 1.25D)) { {
if (jens.getDistance(item) < 1.0F) { if (jens.getNavigator().tryMoveToXYZ(item.posX, item.posY, item.posZ, 1.25D))
{
if (jens.getDistance(item) < 1.0F)
{
eatItem(item); eatItem(item);
jens.digestFish(); jens.digestFish();
} }
@ -58,10 +66,12 @@ public class EntityAIEatDroppedFish extends EntityAIBase {
return true; return true;
} }
public void eatItem(EntityItem item) { public void eatItem(EntityItem item)
{
ItemStack stack = item.getItem(); ItemStack stack = item.getItem();
stack.setCount(stack.getCount() - 1); stack.setCount(stack.getCount() - 1);
if (stack.getCount() == 0) { if (stack.getCount() == 0)
{
item.setDead(); item.setDead();
} }
} }

View file

@ -6,23 +6,28 @@ import net.minecraft.util.DamageSource;
import net.minecraft.util.SoundEvent; import net.minecraft.util.SoundEvent;
import net.minecraft.world.World; import net.minecraft.world.World;
public class EntityApoRed extends EntitySkeleton { public class EntityApoRed extends EntitySkeleton
public EntityApoRed(World worldIn) { {
public EntityApoRed(World worldIn)
{
super(worldIn); super(worldIn);
} }
@Override @Override
protected SoundEvent getAmbientSound() { protected SoundEvent getAmbientSound()
{
return ModSoundEvents.ENTITY_APORED_AMBIENT; return ModSoundEvents.ENTITY_APORED_AMBIENT;
} }
@Override @Override
protected SoundEvent getHurtSound(DamageSource damageSourceIn) { protected SoundEvent getHurtSound(DamageSource damageSourceIn)
{
return ModSoundEvents.ENTITY_APORED_HURT; return ModSoundEvents.ENTITY_APORED_HURT;
} }
@Override @Override
protected SoundEvent getDeathSound() { protected SoundEvent getDeathSound()
{
return ModSoundEvents.ENTITY_APORED_DEATH; return ModSoundEvents.ENTITY_APORED_DEATH;
} }
} }

View file

@ -30,37 +30,42 @@ import net.minecraft.world.EnumDifficulty;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraft.world.storage.loot.LootTableList; import net.minecraft.world.storage.loot.LootTableList;
public class EntityDrachenlord extends EntityZombie { public class EntityDrachenlord extends EntityZombie
private static final UUID ATTACK_SPEED_BOOST_MODIFIER_UUID = UUID {
.fromString("49455A49-7EC5-45BA-B886-3B90B23A1718"); private static final UUID ATTACK_SPEED_BOOST_MODIFIER_UUID = UUID.fromString("49455A49-7EC5-45BA-B886-3B90B23A1718");
private static final AttributeModifier ATTACK_SPEED_BOOST_MODIFIER = (new AttributeModifier( private static final AttributeModifier ATTACK_SPEED_BOOST_MODIFIER = (new AttributeModifier(ATTACK_SPEED_BOOST_MODIFIER_UUID, "Attacking speed boost", 0.05D, 0)).setSaved(false);
ATTACK_SPEED_BOOST_MODIFIER_UUID, "Attacking speed boost", 0.05D, 0)).setSaved(false);
private int angerLevel; private int angerLevel;
private int randomSoundDelay; private int randomSoundDelay;
private UUID angerTargetUUID; private UUID angerTargetUUID;
public EntityDrachenlord(World worldIn) { public EntityDrachenlord(World worldIn)
{
super(worldIn); super(worldIn);
this.isImmuneToFire = true; this.isImmuneToFire = true;
} }
@Override @Override
public void setRevengeTarget(@Nullable EntityLivingBase livingBase) { public void setRevengeTarget(@Nullable
EntityLivingBase livingBase)
{
super.setRevengeTarget(livingBase); super.setRevengeTarget(livingBase);
if (livingBase != null) { if (livingBase != null)
{
this.angerTargetUUID = livingBase.getUniqueID(); this.angerTargetUUID = livingBase.getUniqueID();
} }
} }
@Override @Override
protected void applyEntityAI() { protected void applyEntityAI()
{
this.targetTasks.addTask(1, new EntityDrachenlord.AIHurtByAggressor(this)); this.targetTasks.addTask(1, new EntityDrachenlord.AIHurtByAggressor(this));
this.targetTasks.addTask(2, new EntityDrachenlord.AITargetAggressor(this)); this.targetTasks.addTask(2, new EntityDrachenlord.AITargetAggressor(this));
} }
@Override @Override
protected void applyEntityAttributes() { protected void applyEntityAttributes()
{
super.applyEntityAttributes(); super.applyEntityAttributes();
this.getEntityAttribute(SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(0.0D); this.getEntityAttribute(SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(0.0D);
this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(0.23000000417232513D); this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(0.23000000417232513D);
@ -68,24 +73,31 @@ public class EntityDrachenlord extends EntityZombie {
} }
@Override @Override
protected void updateAITasks() { protected void updateAITasks()
{
IAttributeInstance iattributeinstance = this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED); IAttributeInstance iattributeinstance = this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED);
if (this.isAngry()) { if (this.isAngry())
if (!this.isChild() && !iattributeinstance.hasModifier(ATTACK_SPEED_BOOST_MODIFIER)) { {
if (!this.isChild() && !iattributeinstance.hasModifier(ATTACK_SPEED_BOOST_MODIFIER))
{
iattributeinstance.applyModifier(ATTACK_SPEED_BOOST_MODIFIER); iattributeinstance.applyModifier(ATTACK_SPEED_BOOST_MODIFIER);
} }
--this.angerLevel; --this.angerLevel;
} else if (iattributeinstance.hasModifier(ATTACK_SPEED_BOOST_MODIFIER)) { }
else if (iattributeinstance.hasModifier(ATTACK_SPEED_BOOST_MODIFIER))
{
iattributeinstance.removeModifier(ATTACK_SPEED_BOOST_MODIFIER); iattributeinstance.removeModifier(ATTACK_SPEED_BOOST_MODIFIER);
} }
if (this.randomSoundDelay > 0 && --this.randomSoundDelay == 0) { if (this.randomSoundDelay > 0 && --this.randomSoundDelay == 0)
{
this.playSound(ModSoundEvents.ENTITY_DRACHENLORD_ANGRY, this.getSoundVolume() * 2.0F, 1.0F); this.playSound(ModSoundEvents.ENTITY_DRACHENLORD_ANGRY, this.getSoundVolume() * 2.0F, 1.0F);
} }
if (this.angerLevel > 0 && this.angerTargetUUID != null && this.getRevengeTarget() == null) { if (this.angerLevel > 0 && this.angerTargetUUID != null && this.getRevengeTarget() == null)
{
EntityPlayer entityplayer = this.world.getPlayerEntityByUUID(this.angerTargetUUID); EntityPlayer entityplayer = this.world.getPlayerEntityByUUID(this.angerTargetUUID);
this.setRevengeTarget(entityplayer); this.setRevengeTarget(entityplayer);
this.attackingPlayer = entityplayer; this.attackingPlayer = entityplayer;
@ -96,45 +108,54 @@ public class EntityDrachenlord extends EntityZombie {
} }
@Override @Override
public boolean getCanSpawnHere() { public boolean getCanSpawnHere()
{
return this.world.getDifficulty() != EnumDifficulty.PEACEFUL; return this.world.getDifficulty() != EnumDifficulty.PEACEFUL;
} }
@Override @Override
public boolean isNotColliding() { public boolean isNotColliding()
return this.world.checkNoEntityCollision(this.getEntityBoundingBox(), this) {
&& this.world.getCollisionBoxes(this, this.getEntityBoundingBox()).isEmpty() return this.world.checkNoEntityCollision(this.getEntityBoundingBox(), this) && this.world.getCollisionBoxes(this, this.getEntityBoundingBox()).isEmpty()
&& !this.world.containsAnyLiquid(this.getEntityBoundingBox()); && !this.world.containsAnyLiquid(this.getEntityBoundingBox());
} }
public static void registerFixesPigZombie(DataFixer fixer) { public static void registerFixesPigZombie(DataFixer fixer)
{
EntityLiving.registerFixesMob(fixer, EntityDrachenlord.class); EntityLiving.registerFixesMob(fixer, EntityDrachenlord.class);
} }
@Override @Override
public void writeEntityToNBT(NBTTagCompound compound) { public void writeEntityToNBT(NBTTagCompound compound)
{
super.writeEntityToNBT(compound); super.writeEntityToNBT(compound);
compound.setShort("Anger", (short) this.angerLevel); compound.setShort("Anger", (short) this.angerLevel);
if (this.angerTargetUUID != null) { if (this.angerTargetUUID != null)
{
compound.setString("HurtBy", this.angerTargetUUID.toString()); compound.setString("HurtBy", this.angerTargetUUID.toString());
} else { }
else
{
compound.setString("HurtBy", ""); compound.setString("HurtBy", "");
} }
} }
@Override @Override
public void readEntityFromNBT(NBTTagCompound compound) { public void readEntityFromNBT(NBTTagCompound compound)
{
super.readEntityFromNBT(compound); super.readEntityFromNBT(compound);
this.angerLevel = compound.getShort("Anger"); this.angerLevel = compound.getShort("Anger");
String s = compound.getString("HurtBy"); String s = compound.getString("HurtBy");
if (!s.isEmpty()) { if (!s.isEmpty())
{
this.angerTargetUUID = UUID.fromString(s); this.angerTargetUUID = UUID.fromString(s);
EntityPlayer entityplayer = this.world.getPlayerEntityByUUID(this.angerTargetUUID); EntityPlayer entityplayer = this.world.getPlayerEntityByUUID(this.angerTargetUUID);
this.setRevengeTarget(entityplayer); this.setRevengeTarget(entityplayer);
if (entityplayer != null) { if (entityplayer != null)
{
this.attackingPlayer = entityplayer; this.attackingPlayer = entityplayer;
this.recentlyHit = this.getRevengeTimer(); this.recentlyHit = this.getRevengeTimer();
} }
@ -142,13 +163,18 @@ public class EntityDrachenlord extends EntityZombie {
} }
@Override @Override
public boolean attackEntityFrom(DamageSource source, float amount) { public boolean attackEntityFrom(DamageSource source, float amount)
if (this.isEntityInvulnerable(source)) { {
if (this.isEntityInvulnerable(source))
{
return false; return false;
} else { }
else
{
Entity entity = source.getTrueSource(); Entity entity = source.getTrueSource();
if (entity instanceof EntityPlayer) { if (entity instanceof EntityPlayer)
{
this.becomeAngryAt(entity); this.becomeAngryAt(entity);
} }
@ -156,82 +182,100 @@ public class EntityDrachenlord extends EntityZombie {
} }
} }
private void becomeAngryAt(Entity p_70835_1_) { private void becomeAngryAt(Entity p_70835_1_)
{
this.angerLevel = 400 + this.rand.nextInt(400); this.angerLevel = 400 + this.rand.nextInt(400);
this.randomSoundDelay = this.rand.nextInt(40); this.randomSoundDelay = this.rand.nextInt(40);
if (p_70835_1_ instanceof EntityLivingBase) { if (p_70835_1_ instanceof EntityLivingBase)
{
this.setRevengeTarget((EntityLivingBase) p_70835_1_); this.setRevengeTarget((EntityLivingBase) p_70835_1_);
} }
} }
public boolean isAngry() { public boolean isAngry()
{
return this.angerLevel > 0; return this.angerLevel > 0;
} }
@Override @Override
protected SoundEvent getAmbientSound() { protected SoundEvent getAmbientSound()
{
return ModSoundEvents.ENTITY_DRACHENLORD_AMBIENT; return ModSoundEvents.ENTITY_DRACHENLORD_AMBIENT;
} }
@Override @Override
protected SoundEvent getHurtSound(DamageSource damageSourceIn) { protected SoundEvent getHurtSound(DamageSource damageSourceIn)
{
return ModSoundEvents.ENTITY_DRACHENLORD_HURT; return ModSoundEvents.ENTITY_DRACHENLORD_HURT;
} }
@Override @Override
protected SoundEvent getDeathSound() { protected SoundEvent getDeathSound()
{
return ModSoundEvents.ENTITY_DRACHENLORD_DEATH; return ModSoundEvents.ENTITY_DRACHENLORD_DEATH;
} }
@Override @Override
@Nullable @Nullable
protected ResourceLocation getLootTable() { protected ResourceLocation getLootTable()
{
return LootTableList.ENTITIES_ZOMBIE_PIGMAN; return LootTableList.ENTITIES_ZOMBIE_PIGMAN;
} }
@Override @Override
public boolean processInteract(EntityPlayer player, EnumHand hand) { public boolean processInteract(EntityPlayer player, EnumHand hand)
{
return false; return false;
} }
@Override @Override
protected void setEquipmentBasedOnDifficulty(DifficultyInstance difficulty) { protected void setEquipmentBasedOnDifficulty(DifficultyInstance difficulty)
{
this.setItemStackToSlot(EntityEquipmentSlot.MAINHAND, new ItemStack(Items.GOLDEN_AXE)); this.setItemStackToSlot(EntityEquipmentSlot.MAINHAND, new ItemStack(Items.GOLDEN_AXE));
} }
@Override @Override
protected ItemStack getSkullDrop() { protected ItemStack getSkullDrop()
{
return ItemStack.EMPTY; return ItemStack.EMPTY;
} }
@Override @Override
public boolean isPreventingPlayerRest(EntityPlayer playerIn) { public boolean isPreventingPlayerRest(EntityPlayer playerIn)
{
return this.isAngry(); return this.isAngry();
} }
static class AIHurtByAggressor extends EntityAIHurtByTarget { static class AIHurtByAggressor extends EntityAIHurtByTarget
public AIHurtByAggressor(EntityDrachenlord p_i45828_1_) { {
public AIHurtByAggressor(EntityDrachenlord p_i45828_1_)
{
super(p_i45828_1_, true); super(p_i45828_1_, true);
} }
@Override @Override
protected void setEntityAttackTarget(EntityCreature creatureIn, EntityLivingBase entityLivingBaseIn) { protected void setEntityAttackTarget(EntityCreature creatureIn, EntityLivingBase entityLivingBaseIn)
{
super.setEntityAttackTarget(creatureIn, entityLivingBaseIn); super.setEntityAttackTarget(creatureIn, entityLivingBaseIn);
if (creatureIn instanceof EntityDrachenlord) { if (creatureIn instanceof EntityDrachenlord)
{
((EntityDrachenlord) creatureIn).becomeAngryAt(entityLivingBaseIn); ((EntityDrachenlord) creatureIn).becomeAngryAt(entityLivingBaseIn);
} }
} }
} }
static class AITargetAggressor extends EntityAINearestAttackableTarget<EntityPlayer> { static class AITargetAggressor extends EntityAINearestAttackableTarget<EntityPlayer>
public AITargetAggressor(EntityDrachenlord p_i45829_1_) { {
public AITargetAggressor(EntityDrachenlord p_i45829_1_)
{
super(p_i45829_1_, EntityPlayer.class, true); super(p_i45829_1_, EntityPlayer.class, true);
} }
@Override @Override
public boolean shouldExecute() { public boolean shouldExecute()
{
return ((EntityDrachenlord) this.taskOwner).isAngry() && super.shouldExecute(); return ((EntityDrachenlord) this.taskOwner).isAngry() && super.shouldExecute();
} }
} }

View file

@ -26,10 +26,12 @@ import net.minecraft.util.SoundEvent;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World; import net.minecraft.world.World;
public class EntityHolzstammhuhn extends EntityChicken { public class EntityHolzstammhuhn extends EntityChicken
{
private static final Set<Item> TEMPTATION_ITEMS = Sets.newHashSet(Items.STICK); private static final Set<Item> TEMPTATION_ITEMS = Sets.newHashSet(Items.STICK);
public EntityHolzstammhuhn(World worldIn) { public EntityHolzstammhuhn(World worldIn)
{
super(worldIn); super(worldIn);
this.setSize(0.4F, 0.7F); this.setSize(0.4F, 0.7F);
this.timeUntilNextEgg = this.rand.nextInt(6000) + 6000; this.timeUntilNextEgg = this.rand.nextInt(6000) + 6000;
@ -37,7 +39,8 @@ public class EntityHolzstammhuhn extends EntityChicken {
} }
@Override @Override
protected void initEntityAI() { protected void initEntityAI()
{
this.tasks.addTask(0, new EntityAISwimming(this)); this.tasks.addTask(0, new EntityAISwimming(this));
this.tasks.addTask(1, new EntityAIPanic(this, 1.4D)); this.tasks.addTask(1, new EntityAIPanic(this, 1.4D));
this.tasks.addTask(2, new EntityAIMate(this, 1.0D)); this.tasks.addTask(2, new EntityAIMate(this, 1.0D));
@ -49,32 +52,38 @@ public class EntityHolzstammhuhn extends EntityChicken {
} }
@Override @Override
public boolean isBreedingItem(ItemStack stack) { public boolean isBreedingItem(ItemStack stack)
{
return TEMPTATION_ITEMS.contains(stack.getItem()); return TEMPTATION_ITEMS.contains(stack.getItem());
} }
@Override @Override
protected SoundEvent getAmbientSound() { protected SoundEvent getAmbientSound()
{
return SoundEvents.BLOCK_WOOD_PLACE; return SoundEvents.BLOCK_WOOD_PLACE;
} }
@Override @Override
protected SoundEvent getHurtSound(DamageSource damageSourceIn) { protected SoundEvent getHurtSound(DamageSource damageSourceIn)
{
return SoundEvents.BLOCK_WOOD_HIT; return SoundEvents.BLOCK_WOOD_HIT;
} }
@Override @Override
protected SoundEvent getDeathSound() { protected SoundEvent getDeathSound()
{
return SoundEvents.BLOCK_WOOD_BREAK; return SoundEvents.BLOCK_WOOD_BREAK;
} }
@Override @Override
protected void playStepSound(BlockPos pos, Block blockIn) { protected void playStepSound(BlockPos pos, Block blockIn)
{
this.playSound(SoundEvents.BLOCK_WOOD_STEP, 0.15F, 1.0F); this.playSound(SoundEvents.BLOCK_WOOD_STEP, 0.15F, 1.0F);
} }
@Override @Override
public EntityHolzstammhuhn createChild(EntityAgeable ageable) { public EntityHolzstammhuhn createChild(EntityAgeable ageable)
{
return new EntityHolzstammhuhn(this.world); return new EntityHolzstammhuhn(this.world);
} }
} }

View file

@ -6,39 +6,47 @@ import net.minecraft.util.DamageSource;
import net.minecraft.util.SoundEvent; import net.minecraft.util.SoundEvent;
import net.minecraft.world.World; import net.minecraft.world.World;
public class EntityIslamist extends EntityCreeper { public class EntityIslamist extends EntityCreeper
{
private int lastActiveTime; private int lastActiveTime;
private int timeSinceIgnited; private int timeSinceIgnited;
private int fuseTime = 30; private int fuseTime = 30;
private int explosionRadius = 6; private int explosionRadius = 6;
public EntityIslamist(World worldIn) { public EntityIslamist(World worldIn)
{
super(worldIn); super(worldIn);
this.setSize(0.6F, 1.7F); this.setSize(0.6F, 1.7F);
} }
@Override @Override
public void onUpdate() { public void onUpdate()
if (this.isEntityAlive()) { {
if (this.isEntityAlive())
{
this.lastActiveTime = this.timeSinceIgnited; this.lastActiveTime = this.timeSinceIgnited;
if (this.hasIgnited()) { if (this.hasIgnited())
{
this.setCreeperState(1); this.setCreeperState(1);
} }
int i = this.getCreeperState(); int i = this.getCreeperState();
if (i > 0 && this.timeSinceIgnited == 0) { if (i > 0 && this.timeSinceIgnited == 0)
{
this.playSound(ModSoundEvents.ENTITY_ISLAMIST_FUSE, 1.0F, 0.5F); this.playSound(ModSoundEvents.ENTITY_ISLAMIST_FUSE, 1.0F, 0.5F);
} }
this.timeSinceIgnited += i; this.timeSinceIgnited += i;
if (this.timeSinceIgnited < 0) { if (this.timeSinceIgnited < 0)
{
this.timeSinceIgnited = 0; this.timeSinceIgnited = 0;
} }
if (this.timeSinceIgnited >= this.fuseTime) { if (this.timeSinceIgnited >= this.fuseTime)
{
this.timeSinceIgnited = this.fuseTime; this.timeSinceIgnited = this.fuseTime;
this.explode(); this.explode();
} }
@ -47,25 +55,28 @@ public class EntityIslamist extends EntityCreeper {
super.onUpdate(); super.onUpdate();
} }
private void explode() { private void explode()
if (!this.world.isRemote) { {
if (!this.world.isRemote)
{
boolean flag = net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.world, this); boolean flag = net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.world, this);
float f = this.getPowered() ? 2.0F : 1.0F; float f = this.getPowered() ? 2.0F : 1.0F;
this.dead = true; this.dead = true;
this.world.playSound(null, getPosition(), ModSoundEvents.ENTITY_ISLAMIST_BLOW, getSoundCategory(), 1.0F, this.world.playSound(null, getPosition(), ModSoundEvents.ENTITY_ISLAMIST_BLOW, getSoundCategory(), 1.0F, 1.0F);
1.0F);
this.world.createExplosion(this, this.posX, this.posY, this.posZ, this.explosionRadius * f, flag); this.world.createExplosion(this, this.posX, this.posY, this.posZ, this.explosionRadius * f, flag);
this.setDead(); this.setDead();
} }
} }
@Override @Override
protected SoundEvent getHurtSound(DamageSource damageSourceIn) { protected SoundEvent getHurtSound(DamageSource damageSourceIn)
{
return ModSoundEvents.ENTITY_ISLAMIST_HURT; return ModSoundEvents.ENTITY_ISLAMIST_HURT;
} }
@Override @Override
protected SoundEvent getAmbientSound() { protected SoundEvent getAmbientSound()
{
return ModSoundEvents.ENTITY_ISLAMIST_AMBIENT; return ModSoundEvents.ENTITY_ISLAMIST_AMBIENT;
} }
} }

View file

@ -2,13 +2,17 @@ package mod.acgaming.spackenmobs.entities;
import java.util.Set; import java.util.Set;
import javax.annotation.Nullable;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import mod.acgaming.spackenmobs.misc.ModItems; import mod.acgaming.spackenmobs.misc.ModItems;
import mod.acgaming.spackenmobs.misc.ModLootTableList;
import mod.acgaming.spackenmobs.misc.ModSoundEvents; import mod.acgaming.spackenmobs.misc.ModSoundEvents;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityAgeable; import net.minecraft.entity.EntityAgeable;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.ai.EntityAIFollowParent; import net.minecraft.entity.ai.EntityAIFollowParent;
import net.minecraft.entity.ai.EntityAILookIdle; import net.minecraft.entity.ai.EntityAILookIdle;
@ -18,33 +22,48 @@ import net.minecraft.entity.ai.EntityAISwimming;
import net.minecraft.entity.ai.EntityAITempt; import net.minecraft.entity.ai.EntityAITempt;
import net.minecraft.entity.ai.EntityAIWanderAvoidWater; import net.minecraft.entity.ai.EntityAIWanderAvoidWater;
import net.minecraft.entity.ai.EntityAIWatchClosest; import net.minecraft.entity.ai.EntityAIWatchClosest;
import net.minecraft.entity.passive.EntityAnimal; import net.minecraft.entity.passive.EntityPig;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items; import net.minecraft.init.Items;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.datasync.DataParameter;
import net.minecraft.network.datasync.DataSerializers;
import net.minecraft.network.datasync.EntityDataManager;
import net.minecraft.util.DamageSource; import net.minecraft.util.DamageSource;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.EnumParticleTypes; import net.minecraft.util.EnumParticleTypes;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.SoundEvent; import net.minecraft.util.SoundEvent;
import net.minecraft.util.datafix.DataFixer;
import net.minecraft.util.math.MathHelper;
import net.minecraft.world.World; import net.minecraft.world.World;
public class EntityJens extends EntityAnimal { public class EntityJens extends EntityPig
{
private static final DataParameter<Boolean> SADDLED = EntityDataManager.<Boolean>createKey(EntityJens.class, DataSerializers.BOOLEAN);
private static final DataParameter<Integer> BOOST_TIME = EntityDataManager.<Integer>createKey(EntityJens.class, DataSerializers.VARINT);
private static final Set<Item> TEMPTATION_ITEMS = Sets.newHashSet(ModItems.RAM); private static final Set<Item> TEMPTATION_ITEMS = Sets.newHashSet(ModItems.RAM);
private static final Set<Item> FISH_ITEMS = Sets.newHashSet(Items.FISH); private static final Set<Item> FISH_ITEMS = Sets.newHashSet(Items.FISH);
private boolean boosting;
private int boostTime;
private int totalBoostTime;
public boolean yummy_in_tummy = false; public boolean yummy_in_tummy = false;
public int time_until_surstroemming = 0; public int time_until_surstroemming = 0;
Minecraft MINECRAFT = Minecraft.getMinecraft(); Minecraft MINECRAFT = Minecraft.getMinecraft();
public EntityJens(World worldIn) { public EntityJens(World worldIn)
{
super(worldIn); super(worldIn);
setSize(0.6F, 2.2F); setSize(0.6F, 2.2F);
} }
@Override @Override
protected void initEntityAI() { protected void initEntityAI()
{
this.tasks.addTask(0, new EntityAISwimming(this)); this.tasks.addTask(0, new EntityAISwimming(this));
this.tasks.addTask(1, new EntityAIPanic(this, 1.25D)); this.tasks.addTask(1, new EntityAIPanic(this, 1.25D));
this.tasks.addTask(2, new EntityAIEatDroppedFish(this)); this.tasks.addTask(2, new EntityAIEatDroppedFish(this));
@ -58,108 +77,310 @@ public class EntityJens extends EntityAnimal {
} }
@Override @Override
protected void applyEntityAttributes() { protected void applyEntityAttributes()
{
super.applyEntityAttributes(); super.applyEntityAttributes();
this.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(10.0D); this.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(10.0D);
this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(0.25D); this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(0.25D);
} }
@Override @Override
public boolean isBreedingItem(ItemStack stack) { @Nullable
public Entity getControllingPassenger()
{
return this.getPassengers().isEmpty() ? null : (Entity) this.getPassengers().get(0);
}
@Override
public boolean canBeSteered()
{
Entity entity = this.getControllingPassenger();
if (!(entity instanceof EntityPlayer))
{
return false;
}
else
{
EntityPlayer entityplayer = (EntityPlayer) entity;
return entityplayer.getHeldItemMainhand().getItem() == ModItems.RAM_ON_A_STICK || entityplayer.getHeldItemOffhand().getItem() == ModItems.RAM_ON_A_STICK;
}
}
@Override
public void notifyDataManagerChange(DataParameter<?> key)
{
if (BOOST_TIME.equals(key) && this.world.isRemote)
{
this.boosting = true;
this.boostTime = 0;
this.totalBoostTime = this.dataManager.get(BOOST_TIME).intValue();
}
super.notifyDataManagerChange(key);
}
@Override
protected void entityInit()
{
super.entityInit();
this.dataManager.register(SADDLED, Boolean.valueOf(false));
this.dataManager.register(BOOST_TIME, Integer.valueOf(0));
}
public static void registerFixesJens(DataFixer fixer)
{
EntityLiving.registerFixesMob(fixer, EntityJens.class);
}
@Override
public void writeEntityToNBT(NBTTagCompound compound)
{
super.writeEntityToNBT(compound);
compound.setBoolean("Saddle", this.getSaddled());
}
@Override
public void readEntityFromNBT(NBTTagCompound compound)
{
super.readEntityFromNBT(compound);
this.setSaddled(compound.getBoolean("Saddle"));
}
@Override
public void onDeath(DamageSource cause)
{
super.onDeath(cause);
if (!this.world.isRemote)
{
if (this.getSaddled())
{
this.dropItem(Items.SADDLE, 1);
}
}
}
@Override
public boolean getSaddled()
{
return this.dataManager.get(SADDLED).booleanValue();
}
@Override
public void setSaddled(boolean saddled)
{
if (saddled)
{
this.dataManager.set(SADDLED, Boolean.valueOf(true));
}
else
{
this.dataManager.set(SADDLED, Boolean.valueOf(false));
}
}
@Override
public boolean isBreedingItem(ItemStack stack)
{
return TEMPTATION_ITEMS.contains(stack.getItem()); return TEMPTATION_ITEMS.contains(stack.getItem());
} }
public boolean isFishItem(ItemStack stack) { public boolean isFishItem(ItemStack stack)
{
return FISH_ITEMS.contains(stack.getItem()); return FISH_ITEMS.contains(stack.getItem());
} }
@Override @Override
public boolean canBeSteered() { public EntityJens createChild(EntityAgeable ageable)
Entity entity = this.getControllingPassenger(); {
if (!(entity instanceof EntityPlayer)) {
return false;
} else {
EntityPlayer entityplayer = (EntityPlayer) entity;
return entityplayer.getHeldItemMainhand().getItem() == ModItems.RAM_ON_A_STICK
|| entityplayer.getHeldItemOffhand().getItem() == ModItems.RAM_ON_A_STICK;
}
}
@Override
public EntityJens createChild(EntityAgeable ageable) {
return new EntityJens(this.world); return new EntityJens(this.world);
} }
@Override @Override
public boolean processInteract(EntityPlayer player, EnumHand hand) { public boolean processInteract(EntityPlayer player, EnumHand hand)
{
if (!super.processInteract(player, hand))
{
ItemStack itemstack = player.getHeldItem(hand); ItemStack itemstack = player.getHeldItem(hand);
if (itemstack.getItem() == Items.FISH && !player.capabilities.isCreativeMode && !this.isChild() && this.yummy_in_tummy == false)
if (itemstack.getItem() == Items.FISH && !player.capabilities.isCreativeMode && !this.isChild() {
&& this.yummy_in_tummy == false) {
itemstack.shrink(1); itemstack.shrink(1);
digestFish(); digestFish();
return true; return true;
} else { }
return super.processInteract(player, hand); else if (itemstack.getItem() == Items.NAME_TAG)
{
itemstack.interactWithEntity(player, this, hand);
return true;
}
else if (this.getSaddled() && !this.isBeingRidden())
{
if (!this.world.isRemote)
{
player.startRiding(this);
}
return true;
}
else if (itemstack.getItem() == Items.SADDLE)
{
itemstack.interactWithEntity(player, this, hand);
return true;
}
else
{
return false;
}
}
else
{
return true;
} }
} }
@Override @Override
public void onLivingUpdate() { public void onLivingUpdate()
{
super.onLivingUpdate(); super.onLivingUpdate();
if (!this.world.isRemote && this.yummy_in_tummy == true && this.time_until_surstroemming > 0) { if (!this.world.isRemote && this.yummy_in_tummy == true && this.time_until_surstroemming > 0)
{
this.time_until_surstroemming--; this.time_until_surstroemming--;
} }
if (!this.world.isRemote && this.yummy_in_tummy == true && this.time_until_surstroemming <= 0) { if (!this.world.isRemote && this.yummy_in_tummy == true && this.time_until_surstroemming <= 0)
for (int i = 0; i < 7; ++i) { {
for (int i = 0; i < 7; ++i)
{
double d0 = this.rand.nextGaussian() * 0.02D; double d0 = this.rand.nextGaussian() * 0.02D;
double d1 = this.rand.nextGaussian() * 0.02D; double d1 = this.rand.nextGaussian() * 0.02D;
double d2 = this.rand.nextGaussian() * 0.02D; double d2 = this.rand.nextGaussian() * 0.02D;
MINECRAFT.world.spawnParticle(EnumParticleTypes.SMOKE_LARGE, MINECRAFT.world.spawnParticle(EnumParticleTypes.SMOKE_LARGE, this.posX + this.rand.nextFloat() * this.width * 2.0F - this.width, this.posY + 0.5D + this.rand.nextFloat() * this.height,
this.posX + this.rand.nextFloat() * this.width * 2.0F - this.width,
this.posY + 0.5D + this.rand.nextFloat() * this.height,
this.posZ + this.rand.nextFloat() * this.width * 2.0F - this.width, d0, d1, d2); this.posZ + this.rand.nextFloat() * this.width * 2.0F - this.width, d0, d1, d2);
} }
this.playSound(ModSoundEvents.ENTITY_JENS_POOP, 1.0F, this.playSound(ModSoundEvents.ENTITY_JENS_POOP, 1.0F, (this.rand.nextFloat() - this.rand.nextFloat()) * 0.2F + 1.0F);
(this.rand.nextFloat() - this.rand.nextFloat()) * 0.2F + 1.0F);
this.dropItem(ModItems.SURSTROEMMING, 1); this.dropItem(ModItems.SURSTROEMMING, 1);
this.yummy_in_tummy = false; this.yummy_in_tummy = false;
this.time_until_surstroemming = 0; this.time_until_surstroemming = 0;
} }
} }
public void digestFish() { public void digestFish()
{
this.playSound(ModSoundEvents.ENTITY_JENS_EAT, 1.0F, 1.0F); this.playSound(ModSoundEvents.ENTITY_JENS_EAT, 1.0F, 1.0F);
this.yummy_in_tummy = true; this.yummy_in_tummy = true;
this.time_until_surstroemming = 200; this.time_until_surstroemming = 200;
for (int i = 0; i < 7; ++i) { for (int i = 0; i < 7; ++i)
{
double d0 = this.rand.nextGaussian() * 0.02D; double d0 = this.rand.nextGaussian() * 0.02D;
double d1 = this.rand.nextGaussian() * 0.02D; double d1 = this.rand.nextGaussian() * 0.02D;
double d2 = this.rand.nextGaussian() * 0.02D; double d2 = this.rand.nextGaussian() * 0.02D;
MINECRAFT.world.spawnParticle(EnumParticleTypes.HEART, MINECRAFT.world.spawnParticle(EnumParticleTypes.HEART, this.posX + this.rand.nextFloat() * this.width * 2.0F - this.width, this.posY + 0.5D + this.rand.nextFloat() * this.height,
this.posX + this.rand.nextFloat() * this.width * 2.0F - this.width,
this.posY + 0.5D + this.rand.nextFloat() * this.height,
this.posZ + this.rand.nextFloat() * this.width * 2.0F - this.width, d0, d1, d2); this.posZ + this.rand.nextFloat() * this.width * 2.0F - this.width, d0, d1, d2);
} }
} }
@Override @Override
protected SoundEvent getAmbientSound() { public void travel(float strafe, float vertical, float forward)
{
Entity entity = this.getPassengers().isEmpty() ? null : (Entity) this.getPassengers().get(0);
if (this.isBeingRidden() && this.canBeSteered())
{
this.rotationYaw = entity.rotationYaw;
this.prevRotationYaw = this.rotationYaw;
this.rotationPitch = entity.rotationPitch * 0.5F;
this.setRotation(this.rotationYaw, this.rotationPitch);
this.renderYawOffset = this.rotationYaw;
this.rotationYawHead = this.rotationYaw;
this.stepHeight = 1.0F;
this.jumpMovementFactor = this.getAIMoveSpeed() * 0.1F;
if (this.boosting && this.boostTime++ > this.totalBoostTime)
{
this.boosting = false;
}
if (this.canPassengerSteer())
{
float f = (float) this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).getAttributeValue() * 0.225F;
if (this.boosting)
{
f += f * 1.15F * MathHelper.sin((float) this.boostTime / (float) this.totalBoostTime * (float) Math.PI);
}
this.setAIMoveSpeed(f);
super.travel(0.0F, 0.0F, 1.0F);
}
else
{
this.motionX = 0.0D;
this.motionY = 0.0D;
this.motionZ = 0.0D;
}
this.prevLimbSwingAmount = this.limbSwingAmount;
double d1 = this.posX - this.prevPosX;
double d0 = this.posZ - this.prevPosZ;
float f1 = MathHelper.sqrt(d1 * d1 + d0 * d0) * 4.0F;
if (f1 > 1.0F)
{
f1 = 1.0F;
}
this.limbSwingAmount += (f1 - this.limbSwingAmount) * 0.4F;
this.limbSwing += this.limbSwingAmount;
}
else
{
this.stepHeight = 0.5F;
this.jumpMovementFactor = 0.02F;
super.travel(strafe, vertical, forward);
}
}
@Override
public boolean boost()
{
if (this.boosting)
{
return false;
}
else
{
this.boosting = true;
this.boostTime = 0;
this.totalBoostTime = this.getRNG().nextInt(841) + 140;
this.getDataManager().set(BOOST_TIME, Integer.valueOf(this.totalBoostTime));
return true;
}
}
@Override
protected ResourceLocation getLootTable()
{
return ModLootTableList.ENTITIES_JENS;
}
@Override
protected SoundEvent getAmbientSound()
{
return ModSoundEvents.ENTITY_JENS_AMBIENT; return ModSoundEvents.ENTITY_JENS_AMBIENT;
} }
@Override @Override
protected SoundEvent getHurtSound(DamageSource damageSourceIn) { protected SoundEvent getHurtSound(DamageSource damageSourceIn)
{
return ModSoundEvents.ENTITY_JENS_HURT; return ModSoundEvents.ENTITY_JENS_HURT;
} }
@Override @Override
protected SoundEvent getDeathSound() { protected SoundEvent getDeathSound()
{
return ModSoundEvents.ENTITY_JENS_DEATH; return ModSoundEvents.ENTITY_JENS_DEATH;
} }
} }

View file

@ -6,24 +6,29 @@ import net.minecraft.util.DamageSource;
import net.minecraft.util.SoundEvent; import net.minecraft.util.SoundEvent;
import net.minecraft.world.World; import net.minecraft.world.World;
public class EntityMarcellDAvis extends EntityZombie { public class EntityMarcellDAvis extends EntityZombie
public EntityMarcellDAvis(World worldIn) { {
public EntityMarcellDAvis(World worldIn)
{
super(worldIn); super(worldIn);
this.setSize(0.6F, 1.95F); this.setSize(0.6F, 1.95F);
} }
@Override @Override
protected SoundEvent getAmbientSound() { protected SoundEvent getAmbientSound()
{
return ModSoundEvents.ENTITY_MARCELLDAVIS_AMBIENT; return ModSoundEvents.ENTITY_MARCELLDAVIS_AMBIENT;
} }
@Override @Override
protected SoundEvent getHurtSound(DamageSource damageSourceIn) { protected SoundEvent getHurtSound(DamageSource damageSourceIn)
{
return ModSoundEvents.ENTITY_MARCELLDAVIS_HURT; return ModSoundEvents.ENTITY_MARCELLDAVIS_HURT;
} }
@Override @Override
protected SoundEvent getDeathSound() { protected SoundEvent getDeathSound()
{
return ModSoundEvents.ENTITY_MARCELLDAVIS_DEATH; return ModSoundEvents.ENTITY_MARCELLDAVIS_DEATH;
} }
} }

View file

@ -6,24 +6,29 @@ import net.minecraft.util.DamageSource;
import net.minecraft.util.SoundEvent; import net.minecraft.util.SoundEvent;
import net.minecraft.world.World; import net.minecraft.world.World;
public class EntityMrBean extends EntityZombie { public class EntityMrBean extends EntityZombie
public EntityMrBean(World worldIn) { {
public EntityMrBean(World worldIn)
{
super(worldIn); super(worldIn);
this.setSize(0.6F, 1.95F); this.setSize(0.6F, 1.95F);
} }
@Override @Override
protected SoundEvent getAmbientSound() { protected SoundEvent getAmbientSound()
{
return ModSoundEvents.ENTITY_MRBEAN_AMBIENT; return ModSoundEvents.ENTITY_MRBEAN_AMBIENT;
} }
@Override @Override
protected SoundEvent getHurtSound(DamageSource damageSourceIn) { protected SoundEvent getHurtSound(DamageSource damageSourceIn)
{
return ModSoundEvents.ENTITY_MRBEAN_HURT; return ModSoundEvents.ENTITY_MRBEAN_HURT;
} }
@Override @Override
protected SoundEvent getDeathSound() { protected SoundEvent getDeathSound()
{
return ModSoundEvents.ENTITY_MRBEAN_DEATH; return ModSoundEvents.ENTITY_MRBEAN_DEATH;
} }
} }

View file

@ -52,25 +52,22 @@ import net.minecraft.world.storage.loot.LootTableList;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
public class EntitySchalker extends EntityGolem implements IMob { public class EntitySchalker extends EntityGolem implements IMob
{
private static final UUID COVERED_ARMOR_BONUS_ID = UUID.fromString("7E0292F2-9434-48D5-A29F-9583AF7DF27F"); private static final UUID COVERED_ARMOR_BONUS_ID = UUID.fromString("7E0292F2-9434-48D5-A29F-9583AF7DF27F");
private static final AttributeModifier COVERED_ARMOR_BONUS_MODIFIER = (new AttributeModifier(COVERED_ARMOR_BONUS_ID, private static final AttributeModifier COVERED_ARMOR_BONUS_MODIFIER = (new AttributeModifier(COVERED_ARMOR_BONUS_ID, "Covered armor bonus", 20.0D, 0)).setSaved(false);
"Covered armor bonus", 20.0D, 0)).setSaved(false); protected static final DataParameter<EnumFacing> ATTACHED_FACE = EntityDataManager.<EnumFacing>createKey(EntitySchalker.class, DataSerializers.FACING);
protected static final DataParameter<EnumFacing> ATTACHED_FACE = EntityDataManager protected static final DataParameter<Optional<BlockPos>> ATTACHED_BLOCK_POS = EntityDataManager.<Optional<BlockPos>>createKey(EntitySchalker.class, DataSerializers.OPTIONAL_BLOCK_POS);
.<EnumFacing>createKey(EntitySchalker.class, DataSerializers.FACING); protected static final DataParameter<Byte> PEEK_TICK = EntityDataManager.<Byte>createKey(EntitySchalker.class, DataSerializers.BYTE);
protected static final DataParameter<Optional<BlockPos>> ATTACHED_BLOCK_POS = EntityDataManager protected static final DataParameter<Byte> COLOR = EntityDataManager.<Byte>createKey(EntitySchalker.class, DataSerializers.BYTE);
.<Optional<BlockPos>>createKey(EntitySchalker.class, DataSerializers.OPTIONAL_BLOCK_POS);
protected static final DataParameter<Byte> PEEK_TICK = EntityDataManager.<Byte>createKey(EntitySchalker.class,
DataSerializers.BYTE);
protected static final DataParameter<Byte> COLOR = EntityDataManager.<Byte>createKey(EntitySchalker.class,
DataSerializers.BYTE);
public static final EnumDyeColor DEFAULT_COLOR = EnumDyeColor.PURPLE; public static final EnumDyeColor DEFAULT_COLOR = EnumDyeColor.PURPLE;
private float prevPeekAmount; private float prevPeekAmount;
private float peekAmount; private float peekAmount;
private BlockPos currentAttachmentPosition; private BlockPos currentAttachmentPosition;
private int clientSideTeleportInterpolation; private int clientSideTeleportInterpolation;
public EntitySchalker(World worldIn) { public EntitySchalker(World worldIn)
{
super(worldIn); super(worldIn);
this.setSize(1.0F, 1.0F); this.setSize(1.0F, 1.0F);
this.prevRenderYawOffset = 180.0F; this.prevRenderYawOffset = 180.0F;
@ -82,7 +79,9 @@ public class EntitySchalker extends EntityGolem implements IMob {
@Override @Override
@Nullable @Nullable
public IEntityLivingData onInitialSpawn(DifficultyInstance difficulty, @Nullable IEntityLivingData livingdata) { public IEntityLivingData onInitialSpawn(DifficultyInstance difficulty, @Nullable
IEntityLivingData livingdata)
{
this.renderYawOffset = 180.0F; this.renderYawOffset = 180.0F;
this.prevRenderYawOffset = 180.0F; this.prevRenderYawOffset = 180.0F;
this.rotationYaw = 180.0F; this.rotationYaw = 180.0F;
@ -93,7 +92,8 @@ public class EntitySchalker extends EntityGolem implements IMob {
} }
@Override @Override
protected void initEntityAI() { protected void initEntityAI()
{
this.tasks.addTask(1, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F)); this.tasks.addTask(1, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F));
this.tasks.addTask(4, new EntitySchalker.AIAttack()); this.tasks.addTask(4, new EntitySchalker.AIAttack());
this.tasks.addTask(7, new EntitySchalker.AIPeek()); this.tasks.addTask(7, new EntitySchalker.AIPeek());
@ -104,39 +104,47 @@ public class EntitySchalker extends EntityGolem implements IMob {
} }
@Override @Override
protected boolean canTriggerWalking() { protected boolean canTriggerWalking()
{
return false; return false;
} }
@Override @Override
public SoundCategory getSoundCategory() { public SoundCategory getSoundCategory()
{
return SoundCategory.HOSTILE; return SoundCategory.HOSTILE;
} }
@Override @Override
protected SoundEvent getAmbientSound() { protected SoundEvent getAmbientSound()
{
return ModSoundEvents.ENTITY_SCHALKER_AMBIENT; return ModSoundEvents.ENTITY_SCHALKER_AMBIENT;
} }
@Override @Override
public void playLivingSound() { public void playLivingSound()
if (!this.isClosed()) { {
if (!this.isClosed())
{
super.playLivingSound(); super.playLivingSound();
} }
} }
@Override @Override
protected SoundEvent getDeathSound() { protected SoundEvent getDeathSound()
{
return ModSoundEvents.ENTITY_SCHALKER_DEATH; return ModSoundEvents.ENTITY_SCHALKER_DEATH;
} }
@Override @Override
protected SoundEvent getHurtSound(DamageSource damageSourceIn) { protected SoundEvent getHurtSound(DamageSource damageSourceIn)
{
return this.isClosed() ? SoundEvents.ENTITY_SHULKER_HURT_CLOSED : SoundEvents.ENTITY_SHULKER_HURT; return this.isClosed() ? SoundEvents.ENTITY_SHULKER_HURT_CLOSED : SoundEvents.ENTITY_SHULKER_HURT;
} }
@Override @Override
protected void entityInit() { protected void entityInit()
{
super.entityInit(); super.entityInit();
this.dataManager.register(ATTACHED_FACE, EnumFacing.DOWN); this.dataManager.register(ATTACHED_FACE, EnumFacing.DOWN);
this.dataManager.register(ATTACHED_BLOCK_POS, Optional.absent()); this.dataManager.register(ATTACHED_BLOCK_POS, Optional.absent());
@ -145,46 +153,55 @@ public class EntitySchalker extends EntityGolem implements IMob {
} }
@Override @Override
protected void applyEntityAttributes() { protected void applyEntityAttributes()
{
super.applyEntityAttributes(); super.applyEntityAttributes();
this.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(30.0D); this.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(30.0D);
} }
@Override @Override
protected EntityBodyHelper createBodyHelper() { protected EntityBodyHelper createBodyHelper()
{
return new EntitySchalker.BodyHelper(this); return new EntitySchalker.BodyHelper(this);
} }
public static void registerFixesSchalker(DataFixer fixer) { public static void registerFixesSchalker(DataFixer fixer)
{
EntityLiving.registerFixesMob(fixer, EntitySchalker.class); EntityLiving.registerFixesMob(fixer, EntitySchalker.class);
} }
@Override @Override
public void readEntityFromNBT(NBTTagCompound compound) { public void readEntityFromNBT(NBTTagCompound compound)
{
super.readEntityFromNBT(compound); super.readEntityFromNBT(compound);
this.dataManager.set(ATTACHED_FACE, EnumFacing.getFront(compound.getByte("AttachFace"))); this.dataManager.set(ATTACHED_FACE, EnumFacing.getFront(compound.getByte("AttachFace")));
this.dataManager.set(PEEK_TICK, Byte.valueOf(compound.getByte("Peek"))); this.dataManager.set(PEEK_TICK, Byte.valueOf(compound.getByte("Peek")));
this.dataManager.set(COLOR, Byte.valueOf(compound.getByte("Color"))); this.dataManager.set(COLOR, Byte.valueOf(compound.getByte("Color")));
if (compound.hasKey("APX")) { if (compound.hasKey("APX"))
{
int i = compound.getInteger("APX"); int i = compound.getInteger("APX");
int j = compound.getInteger("APY"); int j = compound.getInteger("APY");
int k = compound.getInteger("APZ"); int k = compound.getInteger("APZ");
this.dataManager.set(ATTACHED_BLOCK_POS, Optional.of(new BlockPos(i, j, k))); this.dataManager.set(ATTACHED_BLOCK_POS, Optional.of(new BlockPos(i, j, k)));
} else { }
else
{
this.dataManager.set(ATTACHED_BLOCK_POS, Optional.absent()); this.dataManager.set(ATTACHED_BLOCK_POS, Optional.absent());
} }
} }
@Override @Override
public void writeEntityToNBT(NBTTagCompound compound) { public void writeEntityToNBT(NBTTagCompound compound)
{
super.writeEntityToNBT(compound); super.writeEntityToNBT(compound);
compound.setByte("AttachFace", (byte) this.dataManager.get(ATTACHED_FACE).getIndex()); compound.setByte("AttachFace", (byte) this.dataManager.get(ATTACHED_FACE).getIndex());
compound.setByte("Peek", this.dataManager.get(PEEK_TICK).byteValue()); compound.setByte("Peek", this.dataManager.get(PEEK_TICK).byteValue());
compound.setByte("Color", this.dataManager.get(COLOR).byteValue()); compound.setByte("Color", this.dataManager.get(COLOR).byteValue());
BlockPos blockpos = this.getAttachmentPos(); BlockPos blockpos = this.getAttachmentPos();
if (blockpos != null) { if (blockpos != null)
{
compound.setInteger("APX", blockpos.getX()); compound.setInteger("APX", blockpos.getX());
compound.setInteger("APY", blockpos.getY()); compound.setInteger("APY", blockpos.getY());
compound.setInteger("APZ", blockpos.getZ()); compound.setInteger("APZ", blockpos.getZ());
@ -192,72 +209,94 @@ public class EntitySchalker extends EntityGolem implements IMob {
} }
@Override @Override
public void onUpdate() { public void onUpdate()
{
super.onUpdate(); super.onUpdate();
BlockPos blockpos = (BlockPos) ((Optional) this.dataManager.get(ATTACHED_BLOCK_POS)).orNull(); BlockPos blockpos = (BlockPos) ((Optional) this.dataManager.get(ATTACHED_BLOCK_POS)).orNull();
if (blockpos == null && !this.world.isRemote) { if (blockpos == null && !this.world.isRemote)
{
blockpos = new BlockPos(this); blockpos = new BlockPos(this);
this.dataManager.set(ATTACHED_BLOCK_POS, Optional.of(blockpos)); this.dataManager.set(ATTACHED_BLOCK_POS, Optional.of(blockpos));
} }
if (this.isRiding()) { if (this.isRiding())
{
blockpos = null; blockpos = null;
float f = this.getRidingEntity().rotationYaw; float f = this.getRidingEntity().rotationYaw;
this.rotationYaw = f; this.rotationYaw = f;
this.renderYawOffset = f; this.renderYawOffset = f;
this.prevRenderYawOffset = f; this.prevRenderYawOffset = f;
this.clientSideTeleportInterpolation = 0; this.clientSideTeleportInterpolation = 0;
} else if (!this.world.isRemote) { }
else if (!this.world.isRemote)
{
IBlockState iblockstate = this.world.getBlockState(blockpos); IBlockState iblockstate = this.world.getBlockState(blockpos);
if (iblockstate.getMaterial() != Material.AIR) { if (iblockstate.getMaterial() != Material.AIR)
if (iblockstate.getBlock() == Blocks.PISTON_EXTENSION) { {
if (iblockstate.getBlock() == Blocks.PISTON_EXTENSION)
{
EnumFacing enumfacing = iblockstate.getValue(BlockDirectional.FACING); EnumFacing enumfacing = iblockstate.getValue(BlockDirectional.FACING);
if (this.world.isAirBlock(blockpos.offset(enumfacing))) { if (this.world.isAirBlock(blockpos.offset(enumfacing)))
{
blockpos = blockpos.offset(enumfacing); blockpos = blockpos.offset(enumfacing);
this.dataManager.set(ATTACHED_BLOCK_POS, Optional.of(blockpos)); this.dataManager.set(ATTACHED_BLOCK_POS, Optional.of(blockpos));
} else { }
else
{
this.tryTeleportToNewPosition(); this.tryTeleportToNewPosition();
} }
} else if (iblockstate.getBlock() == Blocks.PISTON_HEAD) { }
else if (iblockstate.getBlock() == Blocks.PISTON_HEAD)
{
EnumFacing enumfacing3 = iblockstate.getValue(BlockDirectional.FACING); EnumFacing enumfacing3 = iblockstate.getValue(BlockDirectional.FACING);
if (this.world.isAirBlock(blockpos.offset(enumfacing3))) { if (this.world.isAirBlock(blockpos.offset(enumfacing3)))
{
blockpos = blockpos.offset(enumfacing3); blockpos = blockpos.offset(enumfacing3);
this.dataManager.set(ATTACHED_BLOCK_POS, Optional.of(blockpos)); this.dataManager.set(ATTACHED_BLOCK_POS, Optional.of(blockpos));
} else { }
else
{
this.tryTeleportToNewPosition(); this.tryTeleportToNewPosition();
} }
} else { }
else
{
this.tryTeleportToNewPosition(); this.tryTeleportToNewPosition();
} }
} }
BlockPos blockpos1 = blockpos.offset(this.getAttachmentFacing()); BlockPos blockpos1 = blockpos.offset(this.getAttachmentFacing());
if (!this.world.isBlockNormalCube(blockpos1, false)) { if (!this.world.isBlockNormalCube(blockpos1, false))
{
boolean flag = false; boolean flag = false;
for (EnumFacing enumfacing1 : EnumFacing.values()) { for (EnumFacing enumfacing1 : EnumFacing.values())
{
blockpos1 = blockpos.offset(enumfacing1); blockpos1 = blockpos.offset(enumfacing1);
if (this.world.isBlockNormalCube(blockpos1, false)) { if (this.world.isBlockNormalCube(blockpos1, false))
{
this.dataManager.set(ATTACHED_FACE, enumfacing1); this.dataManager.set(ATTACHED_FACE, enumfacing1);
flag = true; flag = true;
break; break;
} }
} }
if (!flag) { if (!flag)
{
this.tryTeleportToNewPosition(); this.tryTeleportToNewPosition();
} }
} }
BlockPos blockpos2 = blockpos.offset(this.getAttachmentFacing().getOpposite()); BlockPos blockpos2 = blockpos.offset(this.getAttachmentFacing().getOpposite());
if (this.world.isBlockNormalCube(blockpos2, false)) { if (this.world.isBlockNormalCube(blockpos2, false))
{
this.tryTeleportToNewPosition(); this.tryTeleportToNewPosition();
} }
} }
@ -265,17 +304,25 @@ public class EntitySchalker extends EntityGolem implements IMob {
float f1 = this.getPeekTick() * 0.01F; float f1 = this.getPeekTick() * 0.01F;
this.prevPeekAmount = this.peekAmount; this.prevPeekAmount = this.peekAmount;
if (this.peekAmount > f1) { if (this.peekAmount > f1)
{
this.peekAmount = MathHelper.clamp(this.peekAmount - 0.05F, f1, 1.0F); this.peekAmount = MathHelper.clamp(this.peekAmount - 0.05F, f1, 1.0F);
} else if (this.peekAmount < f1) { }
else if (this.peekAmount < f1)
{
this.peekAmount = MathHelper.clamp(this.peekAmount + 0.05F, 0.0F, f1); this.peekAmount = MathHelper.clamp(this.peekAmount + 0.05F, 0.0F, f1);
} }
if (blockpos != null) { if (blockpos != null)
if (this.world.isRemote) { {
if (this.clientSideTeleportInterpolation > 0 && this.currentAttachmentPosition != null) { if (this.world.isRemote)
{
if (this.clientSideTeleportInterpolation > 0 && this.currentAttachmentPosition != null)
{
--this.clientSideTeleportInterpolation; --this.clientSideTeleportInterpolation;
} else { }
else
{
this.currentAttachmentPosition = blockpos; this.currentAttachmentPosition = blockpos;
} }
} }
@ -305,44 +352,43 @@ public class EntitySchalker extends EntityGolem implements IMob {
double d2 = 0.0D; double d2 = 0.0D;
EnumFacing enumfacing2 = this.getAttachmentFacing(); EnumFacing enumfacing2 = this.getAttachmentFacing();
switch (enumfacing2) { switch (enumfacing2)
{
case DOWN: case DOWN:
this.setEntityBoundingBox(new AxisAlignedBB(this.posX - 0.5D, this.posY, this.posZ - 0.5D, this.setEntityBoundingBox(new AxisAlignedBB(this.posX - 0.5D, this.posY, this.posZ - 0.5D, this.posX + 0.5D, this.posY + 1.0D + d3, this.posZ + 0.5D));
this.posX + 0.5D, this.posY + 1.0D + d3, this.posZ + 0.5D));
d1 = d5; d1 = d5;
break; break;
case UP: case UP:
this.setEntityBoundingBox(new AxisAlignedBB(this.posX - 0.5D, this.posY - d3, this.posZ - 0.5D, this.setEntityBoundingBox(new AxisAlignedBB(this.posX - 0.5D, this.posY - d3, this.posZ - 0.5D, this.posX + 0.5D, this.posY + 1.0D, this.posZ + 0.5D));
this.posX + 0.5D, this.posY + 1.0D, this.posZ + 0.5D));
d1 = -d5; d1 = -d5;
break; break;
case NORTH: case NORTH:
this.setEntityBoundingBox(new AxisAlignedBB(this.posX - 0.5D, this.posY, this.posZ - 0.5D, this.setEntityBoundingBox(new AxisAlignedBB(this.posX - 0.5D, this.posY, this.posZ - 0.5D, this.posX + 0.5D, this.posY + 1.0D, this.posZ + 0.5D + d3));
this.posX + 0.5D, this.posY + 1.0D, this.posZ + 0.5D + d3));
d2 = d5; d2 = d5;
break; break;
case SOUTH: case SOUTH:
this.setEntityBoundingBox(new AxisAlignedBB(this.posX - 0.5D, this.posY, this.posZ - 0.5D - d3, this.setEntityBoundingBox(new AxisAlignedBB(this.posX - 0.5D, this.posY, this.posZ - 0.5D - d3, this.posX + 0.5D, this.posY + 1.0D, this.posZ + 0.5D));
this.posX + 0.5D, this.posY + 1.0D, this.posZ + 0.5D));
d2 = -d5; d2 = -d5;
break; break;
case WEST: case WEST:
this.setEntityBoundingBox(new AxisAlignedBB(this.posX - 0.5D, this.posY, this.posZ - 0.5D, this.setEntityBoundingBox(new AxisAlignedBB(this.posX - 0.5D, this.posY, this.posZ - 0.5D, this.posX + 0.5D + d3, this.posY + 1.0D, this.posZ + 0.5D));
this.posX + 0.5D + d3, this.posY + 1.0D, this.posZ + 0.5D));
d0 = d5; d0 = d5;
break; break;
case EAST: case EAST:
this.setEntityBoundingBox(new AxisAlignedBB(this.posX - 0.5D - d3, this.posY, this.posZ - 0.5D, this.setEntityBoundingBox(new AxisAlignedBB(this.posX - 0.5D - d3, this.posY, this.posZ - 0.5D, this.posX + 0.5D, this.posY + 1.0D, this.posZ + 0.5D));
this.posX + 0.5D, this.posY + 1.0D, this.posZ + 0.5D));
d0 = -d5; d0 = -d5;
} }
if (d5 > 0.0D) { if (d5 > 0.0D)
{
List<Entity> list = this.world.getEntitiesWithinAABBExcludingEntity(this, this.getEntityBoundingBox()); List<Entity> list = this.world.getEntitiesWithinAABBExcludingEntity(this, this.getEntityBoundingBox());
if (!list.isEmpty()) { if (!list.isEmpty())
for (Entity entity : list) { {
if (!(entity instanceof EntitySchalker) && !entity.noClip) { for (Entity entity : list)
{
if (!(entity instanceof EntitySchalker) && !entity.noClip)
{
entity.move(MoverType.SHULKER, d0, d1, d2); entity.move(MoverType.SHULKER, d0, d1, d2);
} }
} }
@ -352,23 +398,30 @@ public class EntitySchalker extends EntityGolem implements IMob {
} }
@Override @Override
public void move(MoverType type, double x, double y, double z) { public void move(MoverType type, double x, double y, double z)
if (type == MoverType.SHULKER_BOX) { {
if (type == MoverType.SHULKER_BOX)
{
this.tryTeleportToNewPosition(); this.tryTeleportToNewPosition();
} else { }
else
{
super.move(type, x, y, z); super.move(type, x, y, z);
} }
} }
@Override @Override
public void setPosition(double x, double y, double z) { public void setPosition(double x, double y, double z)
{
super.setPosition(x, y, z); super.setPosition(x, y, z);
if (this.dataManager != null && this.ticksExisted != 0) { if (this.dataManager != null && this.ticksExisted != 0)
{
Optional<BlockPos> optional = this.dataManager.get(ATTACHED_BLOCK_POS); Optional<BlockPos> optional = this.dataManager.get(ATTACHED_BLOCK_POS);
Optional<BlockPos> optional1 = Optional.<BlockPos>of(new BlockPos(x, y, z)); Optional<BlockPos> optional1 = Optional.<BlockPos>of(new BlockPos(x, y, z));
if (!optional1.equals(optional)) { if (!optional1.equals(optional))
{
this.dataManager.set(ATTACHED_BLOCK_POS, optional1); this.dataManager.set(ATTACHED_BLOCK_POS, optional1);
this.dataManager.set(PEEK_TICK, Byte.valueOf((byte) 0)); this.dataManager.set(PEEK_TICK, Byte.valueOf((byte) 0));
this.isAirBorne = true; this.isAirBorne = true;
@ -376,35 +429,41 @@ public class EntitySchalker extends EntityGolem implements IMob {
} }
} }
protected boolean tryTeleportToNewPosition() { protected boolean tryTeleportToNewPosition()
if (!this.isAIDisabled() && this.isEntityAlive()) { {
if (!this.isAIDisabled() && this.isEntityAlive())
{
BlockPos blockpos = new BlockPos(this); BlockPos blockpos = new BlockPos(this);
for (int i = 0; i < 5; ++i) { for (int i = 0; i < 5; ++i)
BlockPos blockpos1 = blockpos.add(8 - this.rand.nextInt(17), 8 - this.rand.nextInt(17), {
8 - this.rand.nextInt(17)); BlockPos blockpos1 = blockpos.add(8 - this.rand.nextInt(17), 8 - this.rand.nextInt(17), 8 - this.rand.nextInt(17));
if (blockpos1.getY() > 0 && this.world.isAirBlock(blockpos1) && this.world.isInsideWorldBorder(this) if (blockpos1.getY() > 0 && this.world.isAirBlock(blockpos1) && this.world.isInsideWorldBorder(this) && this.world.getCollisionBoxes(this, new AxisAlignedBB(blockpos1)).isEmpty())
&& this.world.getCollisionBoxes(this, new AxisAlignedBB(blockpos1)).isEmpty()) { {
boolean flag = false; boolean flag = false;
for (EnumFacing enumfacing : EnumFacing.values()) { for (EnumFacing enumfacing : EnumFacing.values())
if (this.world.isBlockNormalCube(blockpos1.offset(enumfacing), false)) { {
if (this.world.isBlockNormalCube(blockpos1.offset(enumfacing), false))
{
this.dataManager.set(ATTACHED_FACE, enumfacing); this.dataManager.set(ATTACHED_FACE, enumfacing);
flag = true; flag = true;
break; break;
} }
} }
if (flag) { if (flag)
net.minecraftforge.event.entity.living.EnderTeleportEvent event = new net.minecraftforge.event.entity.living.EnderTeleportEvent( {
this, blockpos1.getX(), blockpos1.getY(), blockpos1.getZ(), 0); net.minecraftforge.event.entity.living.EnderTeleportEvent event = new net.minecraftforge.event.entity.living.EnderTeleportEvent(this, blockpos1.getX(), blockpos1.getY(),
blockpos1.getZ(), 0);
if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event)) if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event))
flag = false; flag = false;
blockpos1 = new BlockPos(event.getTargetX(), event.getTargetY(), event.getTargetZ()); blockpos1 = new BlockPos(event.getTargetX(), event.getTargetY(), event.getTargetZ());
} }
if (flag) { if (flag)
{
this.playSound(SoundEvents.ENTITY_SHULKER_TELEPORT, 1.0F, 1.0F); this.playSound(SoundEvents.ENTITY_SHULKER_TELEPORT, 1.0F, 1.0F);
this.dataManager.set(ATTACHED_BLOCK_POS, Optional.of(blockpos1)); this.dataManager.set(ATTACHED_BLOCK_POS, Optional.of(blockpos1));
this.dataManager.set(PEEK_TICK, Byte.valueOf((byte) 0)); this.dataManager.set(PEEK_TICK, Byte.valueOf((byte) 0));
@ -415,13 +474,16 @@ public class EntitySchalker extends EntityGolem implements IMob {
} }
return false; return false;
} else { }
else
{
return true; return true;
} }
} }
@Override @Override
public void onLivingUpdate() { public void onLivingUpdate()
{
super.onLivingUpdate(); super.onLivingUpdate();
this.motionX = 0.0D; this.motionX = 0.0D;
this.motionY = 0.0D; this.motionY = 0.0D;
@ -432,14 +494,20 @@ public class EntitySchalker extends EntityGolem implements IMob {
} }
@Override @Override
public void notifyDataManagerChange(DataParameter<?> key) { public void notifyDataManagerChange(DataParameter<?> key)
if (ATTACHED_BLOCK_POS.equals(key) && this.world.isRemote && !this.isRiding()) { {
if (ATTACHED_BLOCK_POS.equals(key) && this.world.isRemote && !this.isRiding())
{
BlockPos blockpos = this.getAttachmentPos(); BlockPos blockpos = this.getAttachmentPos();
if (blockpos != null) { if (blockpos != null)
if (this.currentAttachmentPosition == null) { {
if (this.currentAttachmentPosition == null)
{
this.currentAttachmentPosition = blockpos; this.currentAttachmentPosition = blockpos;
} else { }
else
{
this.clientSideTeleportInterpolation = 6; this.clientSideTeleportInterpolation = 6;
} }
@ -460,67 +528,86 @@ public class EntitySchalker extends EntityGolem implements IMob {
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public void setPositionAndRotationDirect(double x, double y, double z, float yaw, float pitch, public void setPositionAndRotationDirect(double x, double y, double z, float yaw, float pitch, int posRotationIncrements, boolean teleport)
int posRotationIncrements, boolean teleport) { {
this.newPosRotationIncrements = 0; this.newPosRotationIncrements = 0;
} }
@Override @Override
public boolean attackEntityFrom(DamageSource source, float amount) { public boolean attackEntityFrom(DamageSource source, float amount)
if (this.isClosed()) { {
if (this.isClosed())
{
Entity entity = source.getImmediateSource(); Entity entity = source.getImmediateSource();
if (entity instanceof EntityArrow) { if (entity instanceof EntityArrow)
{
return false; return false;
} }
} }
if (super.attackEntityFrom(source, amount)) { if (super.attackEntityFrom(source, amount))
if (this.getHealth() < this.getMaxHealth() * 0.5D && this.rand.nextInt(4) == 0) { {
if (this.getHealth() < this.getMaxHealth() * 0.5D && this.rand.nextInt(4) == 0)
{
this.tryTeleportToNewPosition(); this.tryTeleportToNewPosition();
} }
return true; return true;
} else { }
else
{
return false; return false;
} }
} }
private boolean isClosed() { private boolean isClosed()
{
return this.getPeekTick() == 0; return this.getPeekTick() == 0;
} }
@Override @Override
@Nullable @Nullable
public AxisAlignedBB getCollisionBoundingBox() { public AxisAlignedBB getCollisionBoundingBox()
{
return this.isEntityAlive() ? this.getEntityBoundingBox() : null; return this.isEntityAlive() ? this.getEntityBoundingBox() : null;
} }
public EnumFacing getAttachmentFacing() { public EnumFacing getAttachmentFacing()
{
return this.dataManager.get(ATTACHED_FACE); return this.dataManager.get(ATTACHED_FACE);
} }
@Nullable @Nullable
public BlockPos getAttachmentPos() { public BlockPos getAttachmentPos()
{
return (BlockPos) ((Optional) this.dataManager.get(ATTACHED_BLOCK_POS)).orNull(); return (BlockPos) ((Optional) this.dataManager.get(ATTACHED_BLOCK_POS)).orNull();
} }
public void setAttachmentPos(@Nullable BlockPos pos) { public void setAttachmentPos(@Nullable
BlockPos pos)
{
this.dataManager.set(ATTACHED_BLOCK_POS, Optional.fromNullable(pos)); this.dataManager.set(ATTACHED_BLOCK_POS, Optional.fromNullable(pos));
} }
public int getPeekTick() { public int getPeekTick()
{
return this.dataManager.get(PEEK_TICK).byteValue(); return this.dataManager.get(PEEK_TICK).byteValue();
} }
public void updateArmorModifier(int p_184691_1_) { public void updateArmorModifier(int p_184691_1_)
if (!this.world.isRemote) { {
if (!this.world.isRemote)
{
this.getEntityAttribute(SharedMonsterAttributes.ARMOR).removeModifier(COVERED_ARMOR_BONUS_MODIFIER); this.getEntityAttribute(SharedMonsterAttributes.ARMOR).removeModifier(COVERED_ARMOR_BONUS_MODIFIER);
if (p_184691_1_ == 0) { if (p_184691_1_ == 0)
{
this.getEntityAttribute(SharedMonsterAttributes.ARMOR).applyModifier(COVERED_ARMOR_BONUS_MODIFIER); this.getEntityAttribute(SharedMonsterAttributes.ARMOR).applyModifier(COVERED_ARMOR_BONUS_MODIFIER);
this.playSound(SoundEvents.ENTITY_SHULKER_CLOSE, 1.0F, 1.0F); this.playSound(SoundEvents.ENTITY_SHULKER_CLOSE, 1.0F, 1.0F);
} else { }
else
{
this.playSound(ModSoundEvents.ENTITY_SCHALKER_OPEN, 1.0F, 1.0F); this.playSound(ModSoundEvents.ENTITY_SCHALKER_OPEN, 1.0F, 1.0F);
} }
} }
@ -529,109 +616,131 @@ public class EntitySchalker extends EntityGolem implements IMob {
} }
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public float getClientPeekAmount(float p_184688_1_) { public float getClientPeekAmount(float p_184688_1_)
{
return this.prevPeekAmount + (this.peekAmount - this.prevPeekAmount) * p_184688_1_; return this.prevPeekAmount + (this.peekAmount - this.prevPeekAmount) * p_184688_1_;
} }
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public int getClientTeleportInterp() { public int getClientTeleportInterp()
{
return this.clientSideTeleportInterpolation; return this.clientSideTeleportInterpolation;
} }
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public BlockPos getOldAttachPos() { public BlockPos getOldAttachPos()
{
return this.currentAttachmentPosition; return this.currentAttachmentPosition;
} }
@Override @Override
public float getEyeHeight() { public float getEyeHeight()
{
return 0.5F; return 0.5F;
} }
@Override @Override
public int getVerticalFaceSpeed() { public int getVerticalFaceSpeed()
{
return 180; return 180;
} }
@Override @Override
public int getHorizontalFaceSpeed() { public int getHorizontalFaceSpeed()
{
return 180; return 180;
} }
@Override @Override
public void applyEntityCollision(Entity entityIn) { public void applyEntityCollision(Entity entityIn)
{
} }
@Override @Override
public float getCollisionBorderSize() { public float getCollisionBorderSize()
{
return 0.0F; return 0.0F;
} }
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public boolean isAttachedToBlock() { public boolean isAttachedToBlock()
{
return this.currentAttachmentPosition != null && this.getAttachmentPos() != null; return this.currentAttachmentPosition != null && this.getAttachmentPos() != null;
} }
@Override @Override
@Nullable @Nullable
protected ResourceLocation getLootTable() { protected ResourceLocation getLootTable()
{
return LootTableList.ENTITIES_SHULKER; return LootTableList.ENTITIES_SHULKER;
} }
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public EnumDyeColor getColor() { public EnumDyeColor getColor()
{
return EnumDyeColor.byMetadata(this.dataManager.get(COLOR).byteValue()); return EnumDyeColor.byMetadata(this.dataManager.get(COLOR).byteValue());
} }
class AIAttack extends EntityAIBase { class AIAttack extends EntityAIBase
{
private int attackTime; private int attackTime;
public AIAttack() { public AIAttack()
{
this.setMutexBits(3); this.setMutexBits(3);
} }
@Override @Override
public boolean shouldExecute() { public boolean shouldExecute()
{
EntityLivingBase entitylivingbase = EntitySchalker.this.getAttackTarget(); EntityLivingBase entitylivingbase = EntitySchalker.this.getAttackTarget();
if (entitylivingbase != null && entitylivingbase.isEntityAlive()) { if (entitylivingbase != null && entitylivingbase.isEntityAlive())
{
return EntitySchalker.this.world.getDifficulty() != EnumDifficulty.PEACEFUL; return EntitySchalker.this.world.getDifficulty() != EnumDifficulty.PEACEFUL;
} else { }
else
{
return false; return false;
} }
} }
@Override @Override
public void startExecuting() { public void startExecuting()
{
this.attackTime = 20; this.attackTime = 20;
EntitySchalker.this.updateArmorModifier(100); EntitySchalker.this.updateArmorModifier(100);
} }
@Override @Override
public void resetTask() { public void resetTask()
{
EntitySchalker.this.updateArmorModifier(0); EntitySchalker.this.updateArmorModifier(0);
} }
@Override @Override
public void updateTask() { public void updateTask()
if (EntitySchalker.this.world.getDifficulty() != EnumDifficulty.PEACEFUL) { {
if (EntitySchalker.this.world.getDifficulty() != EnumDifficulty.PEACEFUL)
{
--this.attackTime; --this.attackTime;
EntityLivingBase entitylivingbase = EntitySchalker.this.getAttackTarget(); EntityLivingBase entitylivingbase = EntitySchalker.this.getAttackTarget();
EntitySchalker.this.getLookHelper().setLookPositionWithEntity(entitylivingbase, 180.0F, 180.0F); EntitySchalker.this.getLookHelper().setLookPositionWithEntity(entitylivingbase, 180.0F, 180.0F);
double d0 = EntitySchalker.this.getDistanceSq(entitylivingbase); double d0 = EntitySchalker.this.getDistanceSq(entitylivingbase);
if (d0 < 400.0D) { if (d0 < 400.0D)
if (this.attackTime <= 0) { {
if (this.attackTime <= 0)
{
this.attackTime = 20 + EntitySchalker.this.rand.nextInt(10) * 20 / 2; this.attackTime = 20 + EntitySchalker.this.rand.nextInt(10) * 20 / 2;
EntitySchalkerBullet entityschalkerbullet = new EntitySchalkerBullet(EntitySchalker.this.world, EntitySchalkerBullet entityschalkerbullet = new EntitySchalkerBullet(EntitySchalker.this.world, EntitySchalker.this, entitylivingbase,
EntitySchalker.this, entitylivingbase,
EntitySchalker.this.getAttachmentFacing().getAxis()); EntitySchalker.this.getAttachmentFacing().getAxis());
EntitySchalker.this.world.spawnEntity(entityschalkerbullet); EntitySchalker.this.world.spawnEntity(entityschalkerbullet);
EntitySchalker.this.playSound(ModSoundEvents.ENTITY_SCHALKER_SHOOT, 2.0F, EntitySchalker.this.playSound(ModSoundEvents.ENTITY_SCHALKER_SHOOT, 2.0F, (EntitySchalker.this.rand.nextFloat() - EntitySchalker.this.rand.nextFloat()) * 0.2F + 1.0F);
(EntitySchalker.this.rand.nextFloat() - EntitySchalker.this.rand.nextFloat()) * 0.2F
+ 1.0F);
} }
} else { }
else
{
EntitySchalker.this.setAttackTarget((EntityLivingBase) null); EntitySchalker.this.setAttackTarget((EntityLivingBase) null);
} }
@ -640,101 +749,127 @@ public class EntitySchalker extends EntityGolem implements IMob {
} }
} }
class AIAttackNearest extends EntityAINearestAttackableTarget<EntityPlayer> { class AIAttackNearest extends EntityAINearestAttackableTarget<EntityPlayer>
public AIAttackNearest(EntitySchalker schalker) { {
public AIAttackNearest(EntitySchalker schalker)
{
super(schalker, EntityPlayer.class, true); super(schalker, EntityPlayer.class, true);
} }
@Override @Override
public boolean shouldExecute() { public boolean shouldExecute()
{
return EntitySchalker.this.world.getDifficulty() == EnumDifficulty.PEACEFUL ? false : super.shouldExecute(); return EntitySchalker.this.world.getDifficulty() == EnumDifficulty.PEACEFUL ? false : super.shouldExecute();
} }
@Override @Override
protected AxisAlignedBB getTargetableArea(double targetDistance) { protected AxisAlignedBB getTargetableArea(double targetDistance)
{
EnumFacing enumfacing = ((EntitySchalker) this.taskOwner).getAttachmentFacing(); EnumFacing enumfacing = ((EntitySchalker) this.taskOwner).getAttachmentFacing();
if (enumfacing.getAxis() == EnumFacing.Axis.X) { if (enumfacing.getAxis() == EnumFacing.Axis.X)
{
return this.taskOwner.getEntityBoundingBox().grow(4.0D, targetDistance, targetDistance); return this.taskOwner.getEntityBoundingBox().grow(4.0D, targetDistance, targetDistance);
} else { }
return enumfacing.getAxis() == EnumFacing.Axis.Z else
? this.taskOwner.getEntityBoundingBox().grow(targetDistance, targetDistance, 4.0D) {
return enumfacing.getAxis() == EnumFacing.Axis.Z ? this.taskOwner.getEntityBoundingBox().grow(targetDistance, targetDistance, 4.0D)
: this.taskOwner.getEntityBoundingBox().grow(targetDistance, 4.0D, targetDistance); : this.taskOwner.getEntityBoundingBox().grow(targetDistance, 4.0D, targetDistance);
} }
} }
} }
static class AIDefenseAttack extends EntityAINearestAttackableTarget<EntityLivingBase> { static class AIDefenseAttack extends EntityAINearestAttackableTarget<EntityLivingBase>
public AIDefenseAttack(EntitySchalker schalker) { {
super(schalker, EntityLivingBase.class, 10, true, false, new Predicate<EntityLivingBase>() { public AIDefenseAttack(EntitySchalker schalker)
{
super(schalker, EntityLivingBase.class, 10, true, false, new Predicate<EntityLivingBase>()
{
@Override @Override
public boolean apply(@Nullable EntityLivingBase p_apply_1_) { public boolean apply(@Nullable
EntityLivingBase p_apply_1_)
{
return p_apply_1_ instanceof IMob; return p_apply_1_ instanceof IMob;
} }
}); });
} }
@Override @Override
public boolean shouldExecute() { public boolean shouldExecute()
{
return this.taskOwner.getTeam() == null ? false : super.shouldExecute(); return this.taskOwner.getTeam() == null ? false : super.shouldExecute();
} }
@Override @Override
protected AxisAlignedBB getTargetableArea(double targetDistance) { protected AxisAlignedBB getTargetableArea(double targetDistance)
{
EnumFacing enumfacing = ((EntitySchalker) this.taskOwner).getAttachmentFacing(); EnumFacing enumfacing = ((EntitySchalker) this.taskOwner).getAttachmentFacing();
if (enumfacing.getAxis() == EnumFacing.Axis.X) { if (enumfacing.getAxis() == EnumFacing.Axis.X)
{
return this.taskOwner.getEntityBoundingBox().grow(4.0D, targetDistance, targetDistance); return this.taskOwner.getEntityBoundingBox().grow(4.0D, targetDistance, targetDistance);
} else { }
return enumfacing.getAxis() == EnumFacing.Axis.Z else
? this.taskOwner.getEntityBoundingBox().grow(targetDistance, targetDistance, 4.0D) {
return enumfacing.getAxis() == EnumFacing.Axis.Z ? this.taskOwner.getEntityBoundingBox().grow(targetDistance, targetDistance, 4.0D)
: this.taskOwner.getEntityBoundingBox().grow(targetDistance, 4.0D, targetDistance); : this.taskOwner.getEntityBoundingBox().grow(targetDistance, 4.0D, targetDistance);
} }
} }
} }
class AIPeek extends EntityAIBase { class AIPeek extends EntityAIBase
{
private int peekTime; private int peekTime;
private AIPeek() { private AIPeek()
{
} }
@Override @Override
public boolean shouldExecute() { public boolean shouldExecute()
{
return EntitySchalker.this.getAttackTarget() == null && EntitySchalker.this.rand.nextInt(40) == 0; return EntitySchalker.this.getAttackTarget() == null && EntitySchalker.this.rand.nextInt(40) == 0;
} }
@Override @Override
public boolean shouldContinueExecuting() { public boolean shouldContinueExecuting()
{
return EntitySchalker.this.getAttackTarget() == null && this.peekTime > 0; return EntitySchalker.this.getAttackTarget() == null && this.peekTime > 0;
} }
@Override @Override
public void startExecuting() { public void startExecuting()
{
this.peekTime = 20 * (1 + EntitySchalker.this.rand.nextInt(3)); this.peekTime = 20 * (1 + EntitySchalker.this.rand.nextInt(3));
EntitySchalker.this.updateArmorModifier(30); EntitySchalker.this.updateArmorModifier(30);
} }
@Override @Override
public void resetTask() { public void resetTask()
if (EntitySchalker.this.getAttackTarget() == null) { {
if (EntitySchalker.this.getAttackTarget() == null)
{
EntitySchalker.this.updateArmorModifier(0); EntitySchalker.this.updateArmorModifier(0);
} }
} }
@Override @Override
public void updateTask() { public void updateTask()
{
--this.peekTime; --this.peekTime;
} }
} }
class BodyHelper extends EntityBodyHelper { class BodyHelper extends EntityBodyHelper
public BodyHelper(EntityLivingBase theEntity) { {
public BodyHelper(EntityLivingBase theEntity)
{
super(theEntity); super(theEntity);
} }
@Override @Override
public void updateRenderAngles() { public void updateRenderAngles()
{
} }
} }
} }

View file

@ -30,7 +30,8 @@ import net.minecraft.world.WorldServer;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
public class EntitySchalkerBullet extends Entity { public class EntitySchalkerBullet extends Entity
{
private EntityLivingBase owner; private EntityLivingBase owner;
private Entity target; private Entity target;
@Nullable @Nullable
@ -46,20 +47,22 @@ public class EntitySchalkerBullet extends Entity {
private UUID targetUniqueId; private UUID targetUniqueId;
private BlockPos targetBlockPos; private BlockPos targetBlockPos;
public EntitySchalkerBullet(World worldIn) { public EntitySchalkerBullet(World worldIn)
{
super(worldIn); super(worldIn);
this.setSize(0.3125F, 0.3125F); this.setSize(0.3125F, 0.3125F);
this.noClip = true; this.noClip = true;
} }
@Override @Override
public SoundCategory getSoundCategory() { public SoundCategory getSoundCategory()
{
return SoundCategory.HOSTILE; return SoundCategory.HOSTILE;
} }
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public EntitySchalkerBullet(World worldIn, double x, double y, double z, double motionXIn, double motionYIn, public EntitySchalkerBullet(World worldIn, double x, double y, double z, double motionXIn, double motionYIn, double motionZIn)
double motionZIn) { {
this(worldIn); this(worldIn);
this.setLocationAndAngles(x, y, z, this.rotationYaw, this.rotationPitch); this.setLocationAndAngles(x, y, z, this.rotationYaw, this.rotationPitch);
this.motionX = motionXIn; this.motionX = motionXIn;
@ -67,7 +70,8 @@ public class EntitySchalkerBullet extends Entity {
this.motionZ = motionZIn; this.motionZ = motionZIn;
} }
public EntitySchalkerBullet(World worldIn, EntityLivingBase ownerIn, Entity targetIn, EnumFacing.Axis p_i46772_4_) { public EntitySchalkerBullet(World worldIn, EntityLivingBase ownerIn, Entity targetIn, EnumFacing.Axis p_i46772_4_)
{
this(worldIn); this(worldIn);
this.owner = ownerIn; this.owner = ownerIn;
BlockPos blockpos = new BlockPos(ownerIn); BlockPos blockpos = new BlockPos(ownerIn);
@ -84,8 +88,10 @@ public class EntitySchalkerBullet extends Entity {
* (abstract) Protected helper method to write subclass entity data to NBT. * (abstract) Protected helper method to write subclass entity data to NBT.
*/ */
@Override @Override
protected void writeEntityToNBT(NBTTagCompound compound) { protected void writeEntityToNBT(NBTTagCompound compound)
if (this.owner != null) { {
if (this.owner != null)
{
BlockPos blockpos = new BlockPos(this.owner); BlockPos blockpos = new BlockPos(this.owner);
NBTTagCompound nbttagcompound = NBTUtil.createUUIDTag(this.owner.getUniqueID()); NBTTagCompound nbttagcompound = NBTUtil.createUUIDTag(this.owner.getUniqueID());
nbttagcompound.setInteger("X", blockpos.getX()); nbttagcompound.setInteger("X", blockpos.getX());
@ -94,7 +100,8 @@ public class EntitySchalkerBullet extends Entity {
compound.setTag("Owner", nbttagcompound); compound.setTag("Owner", nbttagcompound);
} }
if (this.target != null) { if (this.target != null)
{
BlockPos blockpos1 = new BlockPos(this.target); BlockPos blockpos1 = new BlockPos(this.target);
NBTTagCompound nbttagcompound1 = NBTUtil.createUUIDTag(this.target.getUniqueID()); NBTTagCompound nbttagcompound1 = NBTUtil.createUUIDTag(this.target.getUniqueID());
nbttagcompound1.setInteger("X", blockpos1.getX()); nbttagcompound1.setInteger("X", blockpos1.getX());
@ -103,7 +110,8 @@ public class EntitySchalkerBullet extends Entity {
compound.setTag("Target", nbttagcompound1); compound.setTag("Target", nbttagcompound1);
} }
if (this.direction != null) { if (this.direction != null)
{
compound.setInteger("Dir", this.direction.getIndex()); compound.setInteger("Dir", this.direction.getIndex());
} }
@ -117,46 +125,56 @@ public class EntitySchalkerBullet extends Entity {
* (abstract) Protected helper method to read subclass entity data from NBT. * (abstract) Protected helper method to read subclass entity data from NBT.
*/ */
@Override @Override
protected void readEntityFromNBT(NBTTagCompound compound) { protected void readEntityFromNBT(NBTTagCompound compound)
{
this.steps = compound.getInteger("Steps"); this.steps = compound.getInteger("Steps");
this.targetDeltaX = compound.getDouble("TXD"); this.targetDeltaX = compound.getDouble("TXD");
this.targetDeltaY = compound.getDouble("TYD"); this.targetDeltaY = compound.getDouble("TYD");
this.targetDeltaZ = compound.getDouble("TZD"); this.targetDeltaZ = compound.getDouble("TZD");
if (compound.hasKey("Dir", 99)) { if (compound.hasKey("Dir", 99))
{
this.direction = EnumFacing.getFront(compound.getInteger("Dir")); this.direction = EnumFacing.getFront(compound.getInteger("Dir"));
} }
if (compound.hasKey("Owner", 10)) { if (compound.hasKey("Owner", 10))
{
NBTTagCompound nbttagcompound = compound.getCompoundTag("Owner"); NBTTagCompound nbttagcompound = compound.getCompoundTag("Owner");
this.ownerUniqueId = NBTUtil.getUUIDFromTag(nbttagcompound); this.ownerUniqueId = NBTUtil.getUUIDFromTag(nbttagcompound);
this.ownerBlockPos = new BlockPos(nbttagcompound.getInteger("X"), nbttagcompound.getInteger("Y"), this.ownerBlockPos = new BlockPos(nbttagcompound.getInteger("X"), nbttagcompound.getInteger("Y"), nbttagcompound.getInteger("Z"));
nbttagcompound.getInteger("Z"));
} }
if (compound.hasKey("Target", 10)) { if (compound.hasKey("Target", 10))
{
NBTTagCompound nbttagcompound1 = compound.getCompoundTag("Target"); NBTTagCompound nbttagcompound1 = compound.getCompoundTag("Target");
this.targetUniqueId = NBTUtil.getUUIDFromTag(nbttagcompound1); this.targetUniqueId = NBTUtil.getUUIDFromTag(nbttagcompound1);
this.targetBlockPos = new BlockPos(nbttagcompound1.getInteger("X"), nbttagcompound1.getInteger("Y"), this.targetBlockPos = new BlockPos(nbttagcompound1.getInteger("X"), nbttagcompound1.getInteger("Y"), nbttagcompound1.getInteger("Z"));
nbttagcompound1.getInteger("Z"));
} }
} }
@Override @Override
protected void entityInit() { protected void entityInit()
{
} }
private void setDirection(@Nullable EnumFacing directionIn) { private void setDirection(@Nullable
EnumFacing directionIn)
{
this.direction = directionIn; this.direction = directionIn;
} }
private void selectNextMoveDirection(@Nullable EnumFacing.Axis p_184569_1_) { private void selectNextMoveDirection(@Nullable
EnumFacing.Axis p_184569_1_)
{
double d0 = 0.5D; double d0 = 0.5D;
BlockPos blockpos; BlockPos blockpos;
if (this.target == null) { if (this.target == null)
{
blockpos = (new BlockPos(this)).down(); blockpos = (new BlockPos(this)).down();
} else { }
else
{
d0 = this.target.height * 0.5D; d0 = this.target.height * 0.5D;
blockpos = new BlockPos(this.target.posX, this.target.posY + d0, this.target.posZ); blockpos = new BlockPos(this.target.posX, this.target.posY + d0, this.target.posZ);
} }
@ -166,41 +184,58 @@ public class EntitySchalkerBullet extends Entity {
double d3 = blockpos.getZ() + 0.5D; double d3 = blockpos.getZ() + 0.5D;
EnumFacing enumfacing = null; EnumFacing enumfacing = null;
if (blockpos.distanceSqToCenter(this.posX, this.posY, this.posZ) >= 4.0D) { if (blockpos.distanceSqToCenter(this.posX, this.posY, this.posZ) >= 4.0D)
{
BlockPos blockpos1 = new BlockPos(this); BlockPos blockpos1 = new BlockPos(this);
List<EnumFacing> list = Lists.<EnumFacing>newArrayList(); List<EnumFacing> list = Lists.<EnumFacing>newArrayList();
if (p_184569_1_ != EnumFacing.Axis.X) { if (p_184569_1_ != EnumFacing.Axis.X)
if (blockpos1.getX() < blockpos.getX() && this.world.isAirBlock(blockpos1.east())) { {
if (blockpos1.getX() < blockpos.getX() && this.world.isAirBlock(blockpos1.east()))
{
list.add(EnumFacing.EAST); list.add(EnumFacing.EAST);
} else if (blockpos1.getX() > blockpos.getX() && this.world.isAirBlock(blockpos1.west())) { }
else if (blockpos1.getX() > blockpos.getX() && this.world.isAirBlock(blockpos1.west()))
{
list.add(EnumFacing.WEST); list.add(EnumFacing.WEST);
} }
} }
if (p_184569_1_ != EnumFacing.Axis.Y) { if (p_184569_1_ != EnumFacing.Axis.Y)
if (blockpos1.getY() < blockpos.getY() && this.world.isAirBlock(blockpos1.up())) { {
if (blockpos1.getY() < blockpos.getY() && this.world.isAirBlock(blockpos1.up()))
{
list.add(EnumFacing.UP); list.add(EnumFacing.UP);
} else if (blockpos1.getY() > blockpos.getY() && this.world.isAirBlock(blockpos1.down())) { }
else if (blockpos1.getY() > blockpos.getY() && this.world.isAirBlock(blockpos1.down()))
{
list.add(EnumFacing.DOWN); list.add(EnumFacing.DOWN);
} }
} }
if (p_184569_1_ != EnumFacing.Axis.Z) { if (p_184569_1_ != EnumFacing.Axis.Z)
if (blockpos1.getZ() < blockpos.getZ() && this.world.isAirBlock(blockpos1.south())) { {
if (blockpos1.getZ() < blockpos.getZ() && this.world.isAirBlock(blockpos1.south()))
{
list.add(EnumFacing.SOUTH); list.add(EnumFacing.SOUTH);
} else if (blockpos1.getZ() > blockpos.getZ() && this.world.isAirBlock(blockpos1.north())) { }
else if (blockpos1.getZ() > blockpos.getZ() && this.world.isAirBlock(blockpos1.north()))
{
list.add(EnumFacing.NORTH); list.add(EnumFacing.NORTH);
} }
} }
enumfacing = EnumFacing.random(this.rand); enumfacing = EnumFacing.random(this.rand);
if (list.isEmpty()) { if (list.isEmpty())
for (int i = 5; !this.world.isAirBlock(blockpos1.offset(enumfacing)) && i > 0; --i) { {
for (int i = 5; !this.world.isAirBlock(blockpos1.offset(enumfacing)) && i > 0; --i)
{
enumfacing = EnumFacing.random(this.rand); enumfacing = EnumFacing.random(this.rand);
} }
} else { }
else
{
enumfacing = list.get(this.rand.nextInt(list.size())); enumfacing = list.get(this.rand.nextInt(list.size()));
} }
@ -215,11 +250,14 @@ public class EntitySchalkerBullet extends Entity {
double d4 = d3 - this.posZ; double d4 = d3 - this.posZ;
double d5 = MathHelper.sqrt(d6 * d6 + d7 * d7 + d4 * d4); double d5 = MathHelper.sqrt(d6 * d6 + d7 * d7 + d4 * d4);
if (d5 == 0.0D) { if (d5 == 0.0D)
{
this.targetDeltaX = 0.0D; this.targetDeltaX = 0.0D;
this.targetDeltaY = 0.0D; this.targetDeltaY = 0.0D;
this.targetDeltaZ = 0.0D; this.targetDeltaZ = 0.0D;
} else { }
else
{
this.targetDeltaX = d6 / d5 * 0.15D; this.targetDeltaX = d6 / d5 * 0.15D;
this.targetDeltaY = d7 / d5 * 0.15D; this.targetDeltaY = d7 / d5 * 0.15D;
this.targetDeltaZ = d4 / d5 * 0.15D; this.targetDeltaZ = d4 / d5 * 0.15D;
@ -233,17 +271,25 @@ public class EntitySchalkerBullet extends Entity {
* Called to update the entity's position/logic. * Called to update the entity's position/logic.
*/ */
@Override @Override
public void onUpdate() { public void onUpdate()
if (!this.world.isRemote && this.world.getDifficulty() == EnumDifficulty.PEACEFUL) { {
if (!this.world.isRemote && this.world.getDifficulty() == EnumDifficulty.PEACEFUL)
{
this.setDead(); this.setDead();
} else { }
else
{
super.onUpdate(); super.onUpdate();
if (!this.world.isRemote) { if (!this.world.isRemote)
if (this.target == null && this.targetUniqueId != null) { {
if (this.target == null && this.targetUniqueId != null)
{
for (EntityLivingBase entitylivingbase : this.world.getEntitiesWithinAABB(EntityLivingBase.class, for (EntityLivingBase entitylivingbase : this.world.getEntitiesWithinAABB(EntityLivingBase.class,
new AxisAlignedBB(this.targetBlockPos.add(-2, -2, -2), this.targetBlockPos.add(2, 2, 2)))) { new AxisAlignedBB(this.targetBlockPos.add(-2, -2, -2), this.targetBlockPos.add(2, 2, 2))))
if (entitylivingbase.getUniqueID().equals(this.targetUniqueId)) { {
if (entitylivingbase.getUniqueID().equals(this.targetUniqueId))
{
this.target = entitylivingbase; this.target = entitylivingbase;
break; break;
} }
@ -252,10 +298,13 @@ public class EntitySchalkerBullet extends Entity {
this.targetUniqueId = null; this.targetUniqueId = null;
} }
if (this.owner == null && this.ownerUniqueId != null) { if (this.owner == null && this.ownerUniqueId != null)
{
for (EntityLivingBase entitylivingbase1 : this.world.getEntitiesWithinAABB(EntityLivingBase.class, for (EntityLivingBase entitylivingbase1 : this.world.getEntitiesWithinAABB(EntityLivingBase.class,
new AxisAlignedBB(this.ownerBlockPos.add(-2, -2, -2), this.ownerBlockPos.add(2, 2, 2)))) { new AxisAlignedBB(this.ownerBlockPos.add(-2, -2, -2), this.ownerBlockPos.add(2, 2, 2))))
if (entitylivingbase1.getUniqueID().equals(this.ownerUniqueId)) { {
if (entitylivingbase1.getUniqueID().equals(this.ownerUniqueId))
{
this.owner = entitylivingbase1; this.owner = entitylivingbase1;
break; break;
} }
@ -264,12 +313,15 @@ public class EntitySchalkerBullet extends Entity {
this.ownerUniqueId = null; this.ownerUniqueId = null;
} }
if (this.target == null || !this.target.isEntityAlive() if (this.target == null || !this.target.isEntityAlive() || this.target instanceof EntityPlayer && ((EntityPlayer) this.target).isSpectator())
|| this.target instanceof EntityPlayer && ((EntityPlayer) this.target).isSpectator()) { {
if (!this.hasNoGravity()) { if (!this.hasNoGravity())
{
this.motionY -= 0.04D; this.motionY -= 0.04D;
} }
} else { }
else
{
this.targetDeltaX = MathHelper.clamp(this.targetDeltaX * 1.025D, -1.0D, 1.0D); this.targetDeltaX = MathHelper.clamp(this.targetDeltaX * 1.025D, -1.0D, 1.0D);
this.targetDeltaY = MathHelper.clamp(this.targetDeltaY * 1.025D, -1.0D, 1.0D); this.targetDeltaY = MathHelper.clamp(this.targetDeltaY * 1.025D, -1.0D, 1.0D);
this.targetDeltaZ = MathHelper.clamp(this.targetDeltaZ * 1.025D, -1.0D, 1.0D); this.targetDeltaZ = MathHelper.clamp(this.targetDeltaZ * 1.025D, -1.0D, 1.0D);
@ -280,8 +332,8 @@ public class EntitySchalkerBullet extends Entity {
RayTraceResult raytraceresult = ProjectileHelper.forwardsRaycast(this, true, false, this.owner); RayTraceResult raytraceresult = ProjectileHelper.forwardsRaycast(this, true, false, this.owner);
if (raytraceresult != null if (raytraceresult != null && !net.minecraftforge.event.ForgeEventFactory.onProjectileImpact(this, raytraceresult))
&& !net.minecraftforge.event.ForgeEventFactory.onProjectileImpact(this, raytraceresult)) { {
this.bulletHit(raytraceresult); this.bulletHit(raytraceresult);
} }
} }
@ -289,30 +341,38 @@ public class EntitySchalkerBullet extends Entity {
this.setPosition(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); this.setPosition(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ);
ProjectileHelper.rotateTowardsMovement(this, 0.5F); ProjectileHelper.rotateTowardsMovement(this, 0.5F);
if (this.world.isRemote) { if (this.world.isRemote)
this.world.spawnParticle(EnumParticleTypes.END_ROD, this.posX - this.motionX, {
this.posY - this.motionY + 0.15D, this.posZ - this.motionZ, 0.0D, 0.0D, 0.0D); this.world.spawnParticle(EnumParticleTypes.END_ROD, this.posX - this.motionX, this.posY - this.motionY + 0.15D, this.posZ - this.motionZ, 0.0D, 0.0D, 0.0D);
} else if (this.target != null && !this.target.isDead) { }
if (this.steps > 0) { else if (this.target != null && !this.target.isDead)
{
if (this.steps > 0)
{
--this.steps; --this.steps;
if (this.steps == 0) { if (this.steps == 0)
{
this.selectNextMoveDirection(this.direction == null ? null : this.direction.getAxis()); this.selectNextMoveDirection(this.direction == null ? null : this.direction.getAxis());
} }
} }
if (this.direction != null) { if (this.direction != null)
{
BlockPos blockpos = new BlockPos(this); BlockPos blockpos = new BlockPos(this);
EnumFacing.Axis enumfacing$axis = this.direction.getAxis(); EnumFacing.Axis enumfacing$axis = this.direction.getAxis();
if (this.world.isBlockNormalCube(blockpos.offset(this.direction), false)) { if (this.world.isBlockNormalCube(blockpos.offset(this.direction), false))
{
this.selectNextMoveDirection(enumfacing$axis); this.selectNextMoveDirection(enumfacing$axis);
} else { }
else
{
BlockPos blockpos1 = new BlockPos(this.target); BlockPos blockpos1 = new BlockPos(this.target);
if (enumfacing$axis == EnumFacing.Axis.X && blockpos.getX() == blockpos1.getX() if (enumfacing$axis == EnumFacing.Axis.X && blockpos.getX() == blockpos1.getX() || enumfacing$axis == EnumFacing.Axis.Z && blockpos.getZ() == blockpos1.getZ()
|| enumfacing$axis == EnumFacing.Axis.Z && blockpos.getZ() == blockpos1.getZ() || enumfacing$axis == EnumFacing.Axis.Y && blockpos.getY() == blockpos1.getY())
|| enumfacing$axis == EnumFacing.Axis.Y && blockpos.getY() == blockpos1.getY()) { {
this.selectNextMoveDirection(enumfacing$axis); this.selectNextMoveDirection(enumfacing$axis);
} }
} }
@ -322,11 +382,11 @@ public class EntitySchalkerBullet extends Entity {
} }
/** /**
* Returns true if the entity is on fire. Used by render to add the fire effect * Returns true if the entity is on fire. Used by render to add the fire effect on rendering.
* on rendering.
*/ */
@Override @Override
public boolean isBurning() { public boolean isBurning()
{
return false; return false;
} }
@ -335,7 +395,8 @@ public class EntitySchalkerBullet extends Entity {
*/ */
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public boolean isInRangeToRenderDist(double distance) { public boolean isInRangeToRenderDist(double distance)
{
return distance < 16384.0D; return distance < 16384.0D;
} }
@ -343,29 +404,35 @@ public class EntitySchalkerBullet extends Entity {
* Gets how bright this entity is. * Gets how bright this entity is.
*/ */
@Override @Override
public float getBrightness() { public float getBrightness()
{
return 1.0F; return 1.0F;
} }
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public int getBrightnessForRender() { public int getBrightnessForRender()
{
return 15728880; return 15728880;
} }
protected void bulletHit(RayTraceResult result) { protected void bulletHit(RayTraceResult result)
if (result.entityHit == null) { {
((WorldServer) this.world).spawnParticle(EnumParticleTypes.EXPLOSION_LARGE, this.posX, this.posY, this.posZ, if (result.entityHit == null)
2, 0.2D, 0.2D, 0.2D, 0.0D); {
((WorldServer) this.world).spawnParticle(EnumParticleTypes.EXPLOSION_LARGE, this.posX, this.posY, this.posZ, 2, 0.2D, 0.2D, 0.2D, 0.0D);
this.playSound(SoundEvents.ENTITY_SHULKER_BULLET_HIT, 1.0F, 1.0F); this.playSound(SoundEvents.ENTITY_SHULKER_BULLET_HIT, 1.0F, 1.0F);
} else { }
boolean flag = result.entityHit else
.attackEntityFrom(DamageSource.causeIndirectDamage(this, this.owner).setProjectile(), 4.0F); {
boolean flag = result.entityHit.attackEntityFrom(DamageSource.causeIndirectDamage(this, this.owner).setProjectile(), 4.0F);
if (flag) { if (flag)
{
this.applyEnchantments(this.owner, result.entityHit); this.applyEnchantments(this.owner, result.entityHit);
if (result.entityHit instanceof EntityLivingBase) { if (result.entityHit instanceof EntityLivingBase)
{
((EntityLivingBase) result.entityHit).addPotionEffect(new PotionEffect(MobEffects.LEVITATION, 200)); ((EntityLivingBase) result.entityHit).addPotionEffect(new PotionEffect(MobEffects.LEVITATION, 200));
} }
} }
@ -375,11 +442,11 @@ public class EntitySchalkerBullet extends Entity {
} }
/** /**
* Returns true if other Entities should be prevented from moving through this * Returns true if other Entities should be prevented from moving through this Entity.
* Entity.
*/ */
@Override @Override
public boolean canBeCollidedWith() { public boolean canBeCollidedWith()
{
return true; return true;
} }
@ -387,11 +454,12 @@ public class EntitySchalkerBullet extends Entity {
* Called when the entity is attacked. * Called when the entity is attacked.
*/ */
@Override @Override
public boolean attackEntityFrom(DamageSource source, float amount) { public boolean attackEntityFrom(DamageSource source, float amount)
if (!this.world.isRemote) { {
if (!this.world.isRemote)
{
this.playSound(SoundEvents.ENTITY_SHULKER_BULLET_HURT, 1.0F, 1.0F); this.playSound(SoundEvents.ENTITY_SHULKER_BULLET_HURT, 1.0F, 1.0F);
((WorldServer) this.world).spawnParticle(EnumParticleTypes.CRIT, this.posX, this.posY, this.posZ, 15, 0.2D, ((WorldServer) this.world).spawnParticle(EnumParticleTypes.CRIT, this.posX, this.posY, this.posZ, 15, 0.2D, 0.2D, 0.2D, 0.0D);
0.2D, 0.2D, 0.0D);
this.setDead(); this.setDead();
} }

View file

@ -7,40 +7,48 @@ import net.minecraft.util.DamageSource;
import net.minecraft.util.SoundEvent; import net.minecraft.util.SoundEvent;
import net.minecraft.world.World; import net.minecraft.world.World;
public class EntitySmavaCreeper extends EntityCreeper { public class EntitySmavaCreeper extends EntityCreeper
{
private int lastActiveTime; private int lastActiveTime;
private int timeSinceIgnited; private int timeSinceIgnited;
private int fuseTime = 20; private int fuseTime = 20;
private int explosionRadius = 6; private int explosionRadius = 6;
public EntitySmavaCreeper(World worldIn) { public EntitySmavaCreeper(World worldIn)
{
super(worldIn); super(worldIn);
setSize(0.6F, 1.7F); setSize(0.6F, 1.7F);
getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(0.5D); getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(0.5D);
} }
@Override @Override
public void onUpdate() { public void onUpdate()
if (this.isEntityAlive()) { {
if (this.isEntityAlive())
{
this.lastActiveTime = this.timeSinceIgnited; this.lastActiveTime = this.timeSinceIgnited;
if (this.hasIgnited()) { if (this.hasIgnited())
{
this.setCreeperState(1); this.setCreeperState(1);
} }
int i = this.getCreeperState(); int i = this.getCreeperState();
if (i > 0 && this.timeSinceIgnited == 0) { if (i > 0 && this.timeSinceIgnited == 0)
{
this.playSound(ModSoundEvents.ENTITY_SMAVACREEPER_FUSE, 1.0F, 1.0F); this.playSound(ModSoundEvents.ENTITY_SMAVACREEPER_FUSE, 1.0F, 1.0F);
} }
this.timeSinceIgnited += i; this.timeSinceIgnited += i;
if (this.timeSinceIgnited < 0) { if (this.timeSinceIgnited < 0)
{
this.timeSinceIgnited = 0; this.timeSinceIgnited = 0;
} }
if (this.timeSinceIgnited >= this.fuseTime) { if (this.timeSinceIgnited >= this.fuseTime)
{
this.timeSinceIgnited = this.fuseTime; this.timeSinceIgnited = this.fuseTime;
this.explode(); this.explode();
} }
@ -49,25 +57,28 @@ public class EntitySmavaCreeper extends EntityCreeper {
super.onUpdate(); super.onUpdate();
} }
private void explode() { private void explode()
if (!this.world.isRemote) { {
if (!this.world.isRemote)
{
boolean flag = net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.world, this); boolean flag = net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.world, this);
float f = this.getPowered() ? 2.0F : 1.0F; float f = this.getPowered() ? 2.0F : 1.0F;
this.dead = true; this.dead = true;
this.world.playSound(null, getPosition(), ModSoundEvents.ENTITY_SMAVACREEPER_BLOW, getSoundCategory(), 5.0F, this.world.playSound(null, getPosition(), ModSoundEvents.ENTITY_SMAVACREEPER_BLOW, getSoundCategory(), 5.0F, 1.0F);
1.0F);
this.world.createExplosion(this, this.posX, this.posY, this.posZ, this.explosionRadius * f, flag); this.world.createExplosion(this, this.posX, this.posY, this.posZ, this.explosionRadius * f, flag);
this.setDead(); this.setDead();
} }
} }
@Override @Override
protected SoundEvent getHurtSound(DamageSource damageSourceIn) { protected SoundEvent getHurtSound(DamageSource damageSourceIn)
{
return ModSoundEvents.ENTITY_SMAVACREEPER_HURT; return ModSoundEvents.ENTITY_SMAVACREEPER_HURT;
} }
@Override @Override
protected SoundEvent getAmbientSound() { protected SoundEvent getAmbientSound()
{
return ModSoundEvents.ENTITY_SMAVACREEPER_AMBIENT; return ModSoundEvents.ENTITY_SMAVACREEPER_AMBIENT;
} }
} }

View file

@ -18,13 +18,11 @@ import net.minecraft.network.datasync.DataSerializers;
import net.minecraft.network.datasync.EntityDataManager; import net.minecraft.network.datasync.EntityDataManager;
import net.minecraft.world.World; import net.minecraft.world.World;
public class EntityWolfMZTE extends EntityWolf { public class EntityWolfMZTE extends EntityWolf
private static final DataParameter<Float> DATA_HEALTH_ID = EntityDataManager.<Float>createKey(EntityWolf.class, {
DataSerializers.FLOAT); private static final DataParameter<Float> DATA_HEALTH_ID = EntityDataManager.<Float>createKey(EntityWolf.class, DataSerializers.FLOAT);
private static final DataParameter<Boolean> BEGGING = EntityDataManager.<Boolean>createKey(EntityWolf.class, private static final DataParameter<Boolean> BEGGING = EntityDataManager.<Boolean>createKey(EntityWolf.class, DataSerializers.BOOLEAN);
DataSerializers.BOOLEAN); private static final DataParameter<Integer> COLLAR_COLOR = EntityDataManager.<Integer>createKey(EntityWolf.class, DataSerializers.VARINT);
private static final DataParameter<Integer> COLLAR_COLOR = EntityDataManager.<Integer>createKey(EntityWolf.class,
DataSerializers.VARINT);
private float headRotationCourse; private float headRotationCourse;
private float headRotationCourseOld; private float headRotationCourseOld;
private boolean isWet; private boolean isWet;
@ -32,18 +30,21 @@ public class EntityWolfMZTE extends EntityWolf {
private float timeWolfIsShaking; private float timeWolfIsShaking;
private float prevTimeWolfIsShaking; private float prevTimeWolfIsShaking;
public EntityWolfMZTE(World worldIn) { public EntityWolfMZTE(World worldIn)
{
super(worldIn); super(worldIn);
this.setSize(0.6F, 0.85F); this.setSize(0.6F, 0.85F);
this.setTamed(false); this.setTamed(false);
} }
@Override @Override
public EntityWolfMZTE createChild(EntityAgeable ageable) { public EntityWolfMZTE createChild(EntityAgeable ageable)
{
EntityWolfMZTE entitywolfmzte = new EntityWolfMZTE(this.world); EntityWolfMZTE entitywolfmzte = new EntityWolfMZTE(this.world);
UUID uuid = this.getOwnerId(); UUID uuid = this.getOwnerId();
if (uuid != null) { if (uuid != null)
{
entitywolfmzte.setOwnerId(uuid); entitywolfmzte.setOwnerId(uuid);
entitywolfmzte.setTamed(true); entitywolfmzte.setTamed(true);
} }
@ -52,53 +53,75 @@ public class EntityWolfMZTE extends EntityWolf {
} }
@Override @Override
public boolean canMateWith(EntityAnimal otherAnimal) { public boolean canMateWith(EntityAnimal otherAnimal)
if (otherAnimal == this) { {
if (otherAnimal == this)
{
return false; return false;
} else if (!this.isTamed()) { }
else if (!this.isTamed())
{
return false; return false;
} else if (!(otherAnimal instanceof EntityWolfMZTE)) { }
else if (!(otherAnimal instanceof EntityWolfMZTE))
{
return false; return false;
} else { }
else
{
EntityWolfMZTE entitywolfmzte = (EntityWolfMZTE) otherAnimal; EntityWolfMZTE entitywolfmzte = (EntityWolfMZTE) otherAnimal;
if (!entitywolfmzte.isTamed()) { if (!entitywolfmzte.isTamed())
{
return false; return false;
} else if (entitywolfmzte.isSitting()) { }
else if (entitywolfmzte.isSitting())
{
return false; return false;
} else { }
else
{
return this.isInLove() && entitywolfmzte.isInLove(); return this.isInLove() && entitywolfmzte.isInLove();
} }
} }
} }
@Override @Override
public boolean shouldAttackEntity(EntityLivingBase target, EntityLivingBase owner) { public boolean shouldAttackEntity(EntityLivingBase target, EntityLivingBase owner)
if (!(target instanceof EntityCreeper) && !(target instanceof EntityGhast)) { {
if (target instanceof EntityWolfMZTE) { if (!(target instanceof EntityCreeper) && !(target instanceof EntityGhast))
{
if (target instanceof EntityWolfMZTE)
{
EntityWolfMZTE entitywolfmzte = (EntityWolfMZTE) target; EntityWolfMZTE entitywolfmzte = (EntityWolfMZTE) target;
if (entitywolfmzte.isTamed() && entitywolfmzte.getOwner() == owner) { if (entitywolfmzte.isTamed() && entitywolfmzte.getOwner() == owner)
{
return false; return false;
} }
} }
if (target instanceof EntityPlayer && owner instanceof EntityPlayer if (target instanceof EntityPlayer && owner instanceof EntityPlayer && !((EntityPlayer) owner).canAttackPlayer((EntityPlayer) target))
&& !((EntityPlayer) owner).canAttackPlayer((EntityPlayer) target)) { {
return false; return false;
} else { }
else
{
return !(target instanceof AbstractHorse) || !((AbstractHorse) target).isTame(); return !(target instanceof AbstractHorse) || !((AbstractHorse) target).isTame();
} }
} else { }
else
{
return false; return false;
} }
} }
class AIAvoidEntity<T extends Entity> extends EntityAIAvoidEntity<T> { class AIAvoidEntity<T extends Entity> extends EntityAIAvoidEntity<T>
{
private final EntityWolfMZTE wolf; private final EntityWolfMZTE wolf;
public AIAvoidEntity(EntityWolfMZTE wolfIn, Class<T> p_i47251_3_, float p_i47251_4_, double p_i47251_5_, public AIAvoidEntity(EntityWolfMZTE wolfIn, Class<T> p_i47251_3_, float p_i47251_4_, double p_i47251_5_, double p_i47251_7_)
double p_i47251_7_) { {
super(wolfIn, p_i47251_3_, p_i47251_4_, p_i47251_5_, p_i47251_7_); super(wolfIn, p_i47251_3_, p_i47251_4_, p_i47251_5_, p_i47251_7_);
this.wolf = wolfIn; this.wolf = wolfIn;
} }
@ -107,15 +130,20 @@ public class EntityWolfMZTE extends EntityWolf {
* Returns whether the EntityAIBase should begin execution. * Returns whether the EntityAIBase should begin execution.
*/ */
@Override @Override
public boolean shouldExecute() { public boolean shouldExecute()
if (super.shouldExecute() && this.closestLivingEntity instanceof EntityLlama) { {
if (super.shouldExecute() && this.closestLivingEntity instanceof EntityLlama)
{
return !this.wolf.isTamed() && this.avoidLlama((EntityLlama) this.closestLivingEntity); return !this.wolf.isTamed() && this.avoidLlama((EntityLlama) this.closestLivingEntity);
} else { }
else
{
return false; return false;
} }
} }
private boolean avoidLlama(EntityLlama p_190854_1_) { private boolean avoidLlama(EntityLlama p_190854_1_)
{
return p_190854_1_.getStrength() >= EntityWolfMZTE.this.rand.nextInt(5); return p_190854_1_.getStrength() >= EntityWolfMZTE.this.rand.nextInt(5);
} }
@ -123,7 +151,8 @@ public class EntityWolfMZTE extends EntityWolf {
* Execute a one shot task or start executing a continuous task * Execute a one shot task or start executing a continuous task
*/ */
@Override @Override
public void startExecuting() { public void startExecuting()
{
EntityWolfMZTE.this.setAttackTarget((EntityLivingBase) null); EntityWolfMZTE.this.setAttackTarget((EntityLivingBase) null);
super.startExecuting(); super.startExecuting();
} }
@ -132,7 +161,8 @@ public class EntityWolfMZTE extends EntityWolf {
* Keep ticking a continuous task that has already been started * Keep ticking a continuous task that has already been started
*/ */
@Override @Override
public void updateTask() { public void updateTask()
{
EntityWolfMZTE.this.setAttackTarget((EntityLivingBase) null); EntityWolfMZTE.this.setAttackTarget((EntityLivingBase) null);
super.updateTask(); super.updateTask();
} }

View file

@ -8,15 +8,18 @@ import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
public class ItemBase extends Item { public class ItemBase extends Item
public ItemBase(String name, CreativeTabs tab) { {
public ItemBase(String name, CreativeTabs tab)
{
setRegistryName(name); setRegistryName(name);
setUnlocalizedName(Spackenmobs.MODID + "." + name); setUnlocalizedName(Spackenmobs.MODID + "." + name);
setCreativeTab(tab); setCreativeTab(tab);
} }
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public void initModel() { public void initModel()
{
ModelLoader.setCustomModelResourceLocation(this, 0, new ModelResourceLocation(getRegistryName(), "inventory")); ModelLoader.setCustomModelResourceLocation(this, 0, new ModelResourceLocation(getRegistryName(), "inventory"));
} }
} }

View file

@ -2,8 +2,10 @@ package mod.acgaming.spackenmobs.items;
import net.minecraft.potion.Potion; import net.minecraft.potion.Potion;
public class ItemPotion extends Potion { public class ItemPotion extends Potion
public ItemPotion(String name, boolean isBadPotion, int color, int iconIndexX, int iconIndexY) { {
public ItemPotion(String name, boolean isBadPotion, int color, int iconIndexX, int iconIndexY)
{
super(isBadPotion, color); super(isBadPotion, color);
setPotionName("effect." + name); setPotionName("effect." + name);
setIconIndex(iconIndexX, iconIndexY); setIconIndex(iconIndexX, iconIndexY);

View file

@ -9,14 +9,18 @@ import net.minecraft.world.biome.Biome;
import net.minecraft.world.biome.Biome.SpawnListEntry; import net.minecraft.world.biome.Biome.SpawnListEntry;
// Thanks to Vazkii! // Thanks to Vazkii!
public class BiomeHelper { public class BiomeHelper
{
public static Biome[] getBiomesWithMonster(Class<? extends Entity> clazz) { public static Biome[] getBiomesWithMonster(Class<? extends Entity> clazz)
{
List<Biome> biomes = new ArrayList<>(); List<Biome> biomes = new ArrayList<>();
for (Biome b : Biome.REGISTRY) { for (Biome b : Biome.REGISTRY)
{
List<SpawnListEntry> spawnList = b.getSpawnableList(EnumCreatureType.MONSTER); List<SpawnListEntry> spawnList = b.getSpawnableList(EnumCreatureType.MONSTER);
for (SpawnListEntry e : spawnList) for (SpawnListEntry e : spawnList)
if (e.entityClass == clazz) { if (e.entityClass == clazz)
{
biomes.add(b); biomes.add(b);
break; break;
} }
@ -24,12 +28,15 @@ public class BiomeHelper {
return biomes.toArray(new Biome[0]); return biomes.toArray(new Biome[0]);
} }
public static Biome[] getBiomesWithCreature(Class<? extends Entity> clazz) { public static Biome[] getBiomesWithCreature(Class<? extends Entity> clazz)
{
List<Biome> biomes = new ArrayList<>(); List<Biome> biomes = new ArrayList<>();
for (Biome b : Biome.REGISTRY) { for (Biome b : Biome.REGISTRY)
{
List<SpawnListEntry> spawnList = b.getSpawnableList(EnumCreatureType.CREATURE); List<SpawnListEntry> spawnList = b.getSpawnableList(EnumCreatureType.CREATURE);
for (SpawnListEntry e : spawnList) for (SpawnListEntry e : spawnList)
if (e.entityClass == clazz) { if (e.entityClass == clazz)
{
biomes.add(b); biomes.add(b);
break; break;
} }

View file

@ -22,8 +22,10 @@ import mod.acgaming.spackenmobs.render.RenderSmavaCreeper;
import mod.acgaming.spackenmobs.render.RenderWolfMZTE; import mod.acgaming.spackenmobs.render.RenderWolfMZTE;
import net.minecraftforge.fml.client.registry.RenderingRegistry; import net.minecraftforge.fml.client.registry.RenderingRegistry;
public class ModEntities { public class ModEntities
public static void initModels() { {
public static void initModels()
{
RenderingRegistry.registerEntityRenderingHandler(EntityApoRed.class, RenderApoRed.FACTORY); RenderingRegistry.registerEntityRenderingHandler(EntityApoRed.class, RenderApoRed.FACTORY);
RenderingRegistry.registerEntityRenderingHandler(EntityDrachenlord.class, RenderDrachenlord.FACTORY); RenderingRegistry.registerEntityRenderingHandler(EntityDrachenlord.class, RenderDrachenlord.FACTORY);
RenderingRegistry.registerEntityRenderingHandler(EntityIslamist.class, RenderIslamist.FACTORY); RenderingRegistry.registerEntityRenderingHandler(EntityIslamist.class, RenderIslamist.FACTORY);

View file

@ -6,7 +6,8 @@ import net.minecraft.item.Item;
import net.minecraftforge.fml.common.registry.GameRegistry.ObjectHolder; import net.minecraftforge.fml.common.registry.GameRegistry.ObjectHolder;
@ObjectHolder(Spackenmobs.MODID) @ObjectHolder(Spackenmobs.MODID)
public class ModItems { public class ModItems
{
public static final Item RAM = new ItemBase("ram", Spackenmobs.SPACKENMOBS_TAB); public static final Item RAM = new ItemBase("ram", Spackenmobs.SPACKENMOBS_TAB);
public static final Item RAM_ON_A_STICK = new ItemBase("ram_on_a_stick", Spackenmobs.SPACKENMOBS_TAB); public static final Item RAM_ON_A_STICK = new ItemBase("ram_on_a_stick", Spackenmobs.SPACKENMOBS_TAB);
public static final Item SURSTROEMMING = new ItemBase("surstroemming", Spackenmobs.SPACKENMOBS_TAB); public static final Item SURSTROEMMING = new ItemBase("surstroemming", Spackenmobs.SPACKENMOBS_TAB);

View file

@ -0,0 +1,59 @@
package mod.acgaming.spackenmobs.misc;
import java.io.File;
import java.util.Collections;
import java.util.Set;
import com.google.common.collect.Sets;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.storage.loot.LootTable;
import net.minecraft.world.storage.loot.LootTableManager;
public class ModLootTableList
{
private static final Set<ResourceLocation> LOOT_TABLES = Sets.<ResourceLocation>newHashSet();
private static final Set<ResourceLocation> READ_ONLY_LOOT_TABLES = Collections.<ResourceLocation>unmodifiableSet(LOOT_TABLES);
public static final ResourceLocation EMPTY = register("empty");
public static final ResourceLocation ENTITIES_JENS = register("entities/jens");
private static ResourceLocation register(String id)
{
return register(new ResourceLocation("spackenmobs", id));
}
public static ResourceLocation register(ResourceLocation id)
{
if (LOOT_TABLES.add(id))
{
return id;
}
else
{
throw new IllegalArgumentException(id + " is already a registered built-in loot table");
}
}
/**
* An unmodifiable set is returned
*/
public static Set<ResourceLocation> getAll()
{
return READ_ONLY_LOOT_TABLES;
}
public static boolean test()
{
LootTableManager loottablemanager = new LootTableManager((File) null);
for (ResourceLocation resourcelocation : READ_ONLY_LOOT_TABLES)
{
if (loottablemanager.getLootTableFromLocation(resourcelocation) == LootTable.EMPTY_LOOT_TABLE)
{
return false;
}
}
return true;
}
}

View file

@ -1,5 +1,6 @@
package mod.acgaming.spackenmobs.misc; package mod.acgaming.spackenmobs.misc;
public class ModPotions { public class ModPotions
{
} }

View file

@ -6,74 +6,44 @@ import net.minecraft.util.SoundEvent;
import net.minecraftforge.fml.common.registry.GameRegistry.ObjectHolder; import net.minecraftforge.fml.common.registry.GameRegistry.ObjectHolder;
@ObjectHolder(Spackenmobs.MODID) @ObjectHolder(Spackenmobs.MODID)
public class ModSoundEvents { public class ModSoundEvents
public static final SoundEvent ENTITY_SMAVACREEPER_FUSE = new SoundEvent( {
new ResourceLocation("spackenmobs:entities.smava_creeper.fuse")); public static final SoundEvent ENTITY_SMAVACREEPER_FUSE = new SoundEvent(new ResourceLocation("spackenmobs:entities.smava_creeper.fuse"));
public static final SoundEvent ENTITY_SMAVACREEPER_BLOW = new SoundEvent( public static final SoundEvent ENTITY_SMAVACREEPER_BLOW = new SoundEvent(new ResourceLocation("spackenmobs:entities.smava_creeper.blow"));
new ResourceLocation("spackenmobs:entities.smava_creeper.blow")); public static final SoundEvent ENTITY_SMAVACREEPER_HURT = new SoundEvent(new ResourceLocation("spackenmobs:entities.smava_creeper.hurt"));
public static final SoundEvent ENTITY_SMAVACREEPER_HURT = new SoundEvent( public static final SoundEvent ENTITY_SMAVACREEPER_AMBIENT = new SoundEvent(new ResourceLocation("spackenmobs:entities.smava_creeper.ambient"));
new ResourceLocation("spackenmobs:entities.smava_creeper.hurt"));
public static final SoundEvent ENTITY_SMAVACREEPER_AMBIENT = new SoundEvent(
new ResourceLocation("spackenmobs:entities.smava_creeper.ambient"));
public static final SoundEvent ENTITY_MARCELLDAVIS_AMBIENT = new SoundEvent( public static final SoundEvent ENTITY_MARCELLDAVIS_AMBIENT = new SoundEvent(new ResourceLocation("spackenmobs:entities.marcell_davis.ambient"));
new ResourceLocation("spackenmobs:entities.marcell_davis.ambient")); public static final SoundEvent ENTITY_MARCELLDAVIS_HURT = new SoundEvent(new ResourceLocation("spackenmobs:entities.marcell_davis.hurt"));
public static final SoundEvent ENTITY_MARCELLDAVIS_HURT = new SoundEvent( public static final SoundEvent ENTITY_MARCELLDAVIS_DEATH = new SoundEvent(new ResourceLocation("spackenmobs:entities.marcell_davis.death"));
new ResourceLocation("spackenmobs:entities.marcell_davis.hurt"));
public static final SoundEvent ENTITY_MARCELLDAVIS_DEATH = new SoundEvent(
new ResourceLocation("spackenmobs:entities.marcell_davis.death"));
public static final SoundEvent ENTITY_ISLAMIST_FUSE = new SoundEvent( public static final SoundEvent ENTITY_ISLAMIST_FUSE = new SoundEvent(new ResourceLocation("spackenmobs:entities.islamist.fuse"));
new ResourceLocation("spackenmobs:entities.islamist.fuse")); public static final SoundEvent ENTITY_ISLAMIST_BLOW = new SoundEvent(new ResourceLocation("spackenmobs:entities.islamist.blow"));
public static final SoundEvent ENTITY_ISLAMIST_BLOW = new SoundEvent( public static final SoundEvent ENTITY_ISLAMIST_HURT = new SoundEvent(new ResourceLocation("spackenmobs:entities.islamist.hurt"));
new ResourceLocation("spackenmobs:entities.islamist.blow")); public static final SoundEvent ENTITY_ISLAMIST_AMBIENT = new SoundEvent(new ResourceLocation("spackenmobs:entities.islamist.ambient"));
public static final SoundEvent ENTITY_ISLAMIST_HURT = new SoundEvent(
new ResourceLocation("spackenmobs:entities.islamist.hurt"));
public static final SoundEvent ENTITY_ISLAMIST_AMBIENT = new SoundEvent(
new ResourceLocation("spackenmobs:entities.islamist.ambient"));
public static final SoundEvent ENTITY_APORED_AMBIENT = new SoundEvent( public static final SoundEvent ENTITY_APORED_AMBIENT = new SoundEvent(new ResourceLocation("spackenmobs:entities.apored.ambient"));
new ResourceLocation("spackenmobs:entities.apored.ambient")); public static final SoundEvent ENTITY_APORED_HURT = new SoundEvent(new ResourceLocation("spackenmobs:entities.apored.hurt"));
public static final SoundEvent ENTITY_APORED_HURT = new SoundEvent( public static final SoundEvent ENTITY_APORED_DEATH = new SoundEvent(new ResourceLocation("spackenmobs:entities.apored.death"));
new ResourceLocation("spackenmobs:entities.apored.hurt"));
public static final SoundEvent ENTITY_APORED_DEATH = new SoundEvent(
new ResourceLocation("spackenmobs:entities.apored.death"));
public static final SoundEvent ENTITY_MRBEAN_AMBIENT = new SoundEvent( public static final SoundEvent ENTITY_MRBEAN_AMBIENT = new SoundEvent(new ResourceLocation("spackenmobs:entities.mr_bean.ambient"));
new ResourceLocation("spackenmobs:entities.mr_bean.ambient")); public static final SoundEvent ENTITY_MRBEAN_HURT = new SoundEvent(new ResourceLocation("spackenmobs:entities.mr_bean.hurt"));
public static final SoundEvent ENTITY_MRBEAN_HURT = new SoundEvent( public static final SoundEvent ENTITY_MRBEAN_DEATH = new SoundEvent(new ResourceLocation("spackenmobs:entities.mr_bean.death"));
new ResourceLocation("spackenmobs:entities.mr_bean.hurt"));
public static final SoundEvent ENTITY_MRBEAN_DEATH = new SoundEvent(
new ResourceLocation("spackenmobs:entities.mr_bean.death"));
public static final SoundEvent ENTITY_DRACHENLORD_AMBIENT = new SoundEvent( public static final SoundEvent ENTITY_DRACHENLORD_AMBIENT = new SoundEvent(new ResourceLocation("spackenmobs:entities.drachenlord.ambient"));
new ResourceLocation("spackenmobs:entities.drachenlord.ambient")); public static final SoundEvent ENTITY_DRACHENLORD_HURT = new SoundEvent(new ResourceLocation("spackenmobs:entities.drachenlord.hurt"));
public static final SoundEvent ENTITY_DRACHENLORD_HURT = new SoundEvent( public static final SoundEvent ENTITY_DRACHENLORD_DEATH = new SoundEvent(new ResourceLocation("spackenmobs:entities.drachenlord.death"));
new ResourceLocation("spackenmobs:entities.drachenlord.hurt")); public static final SoundEvent ENTITY_DRACHENLORD_ANGRY = new SoundEvent(new ResourceLocation("spackenmobs:entities.drachenlord.angry"));
public static final SoundEvent ENTITY_DRACHENLORD_DEATH = new SoundEvent(
new ResourceLocation("spackenmobs:entities.drachenlord.death"));
public static final SoundEvent ENTITY_DRACHENLORD_ANGRY = new SoundEvent(
new ResourceLocation("spackenmobs:entities.drachenlord.angry"));
public static final SoundEvent ENTITY_SCHALKER_AMBIENT = new SoundEvent( public static final SoundEvent ENTITY_SCHALKER_AMBIENT = new SoundEvent(new ResourceLocation("spackenmobs:entities.schalker.ambient"));
new ResourceLocation("spackenmobs:entities.schalker.ambient")); public static final SoundEvent ENTITY_SCHALKER_HURT = new SoundEvent(new ResourceLocation("spackenmobs:entities.schalker.hurt"));
public static final SoundEvent ENTITY_SCHALKER_HURT = new SoundEvent( public static final SoundEvent ENTITY_SCHALKER_DEATH = new SoundEvent(new ResourceLocation("spackenmobs:entities.schalker.death"));
new ResourceLocation("spackenmobs:entities.schalker.hurt")); public static final SoundEvent ENTITY_SCHALKER_OPEN = new SoundEvent(new ResourceLocation("spackenmobs:entities.schalker.open"));
public static final SoundEvent ENTITY_SCHALKER_DEATH = new SoundEvent( public static final SoundEvent ENTITY_SCHALKER_SHOOT = new SoundEvent(new ResourceLocation("spackenmobs:entities.schalker.shoot"));
new ResourceLocation("spackenmobs:entities.schalker.death"));
public static final SoundEvent ENTITY_SCHALKER_OPEN = new SoundEvent(
new ResourceLocation("spackenmobs:entities.schalker.open"));
public static final SoundEvent ENTITY_SCHALKER_SHOOT = new SoundEvent(
new ResourceLocation("spackenmobs:entities.schalker.shoot"));
public static final SoundEvent ENTITY_JENS_AMBIENT = new SoundEvent( public static final SoundEvent ENTITY_JENS_AMBIENT = new SoundEvent(new ResourceLocation("spackenmobs:entities.jens.ambient"));
new ResourceLocation("spackenmobs:entities.jens.ambient")); public static final SoundEvent ENTITY_JENS_HURT = new SoundEvent(new ResourceLocation("spackenmobs:entities.jens.hurt"));
public static final SoundEvent ENTITY_JENS_HURT = new SoundEvent( public static final SoundEvent ENTITY_JENS_DEATH = new SoundEvent(new ResourceLocation("spackenmobs:entities.jens.death"));
new ResourceLocation("spackenmobs:entities.jens.hurt")); public static final SoundEvent ENTITY_JENS_EAT = new SoundEvent(new ResourceLocation("spackenmobs:entities.jens.eat"));
public static final SoundEvent ENTITY_JENS_DEATH = new SoundEvent( public static final SoundEvent ENTITY_JENS_POOP = new SoundEvent(new ResourceLocation("spackenmobs:entities.jens.poop"));
new ResourceLocation("spackenmobs:entities.jens.death"));
public static final SoundEvent ENTITY_JENS_EAT = new SoundEvent(
new ResourceLocation("spackenmobs:entities.jens.eat"));
public static final SoundEvent ENTITY_JENS_POOP = new SoundEvent(
new ResourceLocation("spackenmobs:entities.jens.poop"));
} }

View file

@ -11,7 +11,6 @@ import mod.acgaming.spackenmobs.entities.EntityMrBean;
import mod.acgaming.spackenmobs.entities.EntitySchalker; import mod.acgaming.spackenmobs.entities.EntitySchalker;
import mod.acgaming.spackenmobs.entities.EntitySmavaCreeper; import mod.acgaming.spackenmobs.entities.EntitySmavaCreeper;
import mod.acgaming.spackenmobs.entities.EntityWolfMZTE; import mod.acgaming.spackenmobs.entities.EntityWolfMZTE;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.EnumCreatureType; import net.minecraft.entity.EnumCreatureType;
import net.minecraft.entity.monster.EntityCreeper; import net.minecraft.entity.monster.EntityCreeper;
import net.minecraft.entity.monster.EntityPigZombie; import net.minecraft.entity.monster.EntityPigZombie;
@ -31,102 +30,77 @@ import net.minecraftforge.fml.common.registry.EntityEntry;
import net.minecraftforge.fml.common.registry.EntityRegistry; import net.minecraftforge.fml.common.registry.EntityRegistry;
@EventBusSubscriber(modid = Spackenmobs.MODID) @EventBusSubscriber(modid = Spackenmobs.MODID)
public class RegHandler { public class RegHandler
{
@SubscribeEvent @SubscribeEvent
public static void registerItems(Register<Item> event) { public static void registerItems(Register<Item> event)
final Item[] items = { {
new Item().setRegistryName(Spackenmobs.MODID, "ram").setUnlocalizedName(Spackenmobs.MODID + "." + "ram") final Item[] items =
.setCreativeTab(CreativeTabs.MISC), {
new Item().setRegistryName(Spackenmobs.MODID, "ram_on_a_stick") new Item().setRegistryName(Spackenmobs.MODID, "ram").setUnlocalizedName(Spackenmobs.MODID + "." + "ram").setCreativeTab(Spackenmobs.SPACKENMOBS_TAB),
.setUnlocalizedName(Spackenmobs.MODID + "." + "ram_on_a_stick") new Item().setRegistryName(Spackenmobs.MODID, "ram_on_a_stick").setUnlocalizedName(Spackenmobs.MODID + "." + "ram_on_a_stick").setCreativeTab(Spackenmobs.SPACKENMOBS_TAB),
.setCreativeTab(CreativeTabs.MISC), new Item().setRegistryName(Spackenmobs.MODID, "surstroemming").setUnlocalizedName(Spackenmobs.MODID + "." + "surstroemming").setCreativeTab(Spackenmobs.SPACKENMOBS_TAB)
new Item().setRegistryName(Spackenmobs.MODID, "surstroemming") };
.setUnlocalizedName(Spackenmobs.MODID + "." + "surstroemming")
.setCreativeTab(CreativeTabs.MISC) };
event.getRegistry().registerAll(items); event.getRegistry().registerAll(items);
} }
@SubscribeEvent @SubscribeEvent
public static void registerEntities(Register<EntityEntry> event) { public static void registerEntities(Register<EntityEntry> event)
{
int id = 1; int id = 1;
// Smava Creeper // Smava Creeper
EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:smava_creeper"), EntitySmavaCreeper.class, EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:smava_creeper"), EntitySmavaCreeper.class, "smava_creeper", id++, Spackenmobs.instance, 64, 1, true, 7649828, 11053224);
"smava_creeper", id++, Spackenmobs.instance, 64, 1, true, 7649828, 11053224); EntityRegistry.addSpawn(EntitySmavaCreeper.class, 25, 1, 4, EnumCreatureType.MONSTER, BiomeHelper.getBiomesWithMonster(EntityCreeper.class));
EntityRegistry.addSpawn(EntitySmavaCreeper.class, 25, 1, 4, EnumCreatureType.MONSTER,
BiomeHelper.getBiomesWithMonster(EntityCreeper.class));
// Marcell D'Avis // Marcell D'Avis
EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:marcell_davis"), EntityMarcellDAvis.class, EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:marcell_davis"), EntityMarcellDAvis.class, "marcell_davis", id++, Spackenmobs.instance, 64, 1, true, 15759, 16777215);
"marcell_davis", id++, Spackenmobs.instance, 64, 1, true, 15759, 16777215); EntityRegistry.addSpawn(EntityMarcellDAvis.class, 50, 1, 4, EnumCreatureType.MONSTER, BiomeHelper.getBiomesWithMonster(EntityZombie.class));
EntityRegistry.addSpawn(EntityMarcellDAvis.class, 50, 1, 4, EnumCreatureType.MONSTER,
BiomeHelper.getBiomesWithMonster(EntityZombie.class));
// Islamist // Islamist
EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:islamist"), EntityIslamist.class, "islamist", EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:islamist"), EntityIslamist.class, "islamist", id++, Spackenmobs.instance, 64, 1, true, 15263976, 15211548);
id++, Spackenmobs.instance, 64, 1, true, 15263976, 15211548); EntityRegistry.addSpawn(EntityIslamist.class, 50, 1, 4, EnumCreatureType.MONSTER, BiomeHelper.getBiomesWithMonster(EntityCreeper.class));
EntityRegistry.addSpawn(EntityIslamist.class, 50, 1, 4, EnumCreatureType.MONSTER,
BiomeHelper.getBiomesWithMonster(EntityCreeper.class));
// ApoRed // ApoRed
EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:apored"), EntityApoRed.class, "apored", id++, EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:apored"), EntityApoRed.class, "apored", id++, Spackenmobs.instance, 64, 1, true, 2039583, 16711680);
Spackenmobs.instance, 64, 1, true, 2039583, 16711680); EntityRegistry.addSpawn(EntityApoRed.class, 50, 1, 4, EnumCreatureType.MONSTER, BiomeHelper.getBiomesWithMonster(EntitySkeleton.class));
EntityRegistry.addSpawn(EntityApoRed.class, 50, 1, 4, EnumCreatureType.MONSTER,
BiomeHelper.getBiomesWithMonster(EntitySkeleton.class));
// Mr. Bean // Mr. Bean
EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:mr_bean"), EntityMrBean.class, "mr_bean", EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:mr_bean"), EntityMrBean.class, "mr_bean", id++, Spackenmobs.instance, 64, 1, true, 4802350, 3220238);
id++, Spackenmobs.instance, 64, 1, true, 4802350, 3220238); EntityRegistry.addSpawn(EntityMrBean.class, 50, 1, 4, EnumCreatureType.MONSTER, BiomeHelper.getBiomesWithMonster(EntityZombie.class));
EntityRegistry.addSpawn(EntityMrBean.class, 50, 1, 4, EnumCreatureType.MONSTER,
BiomeHelper.getBiomesWithMonster(EntityZombie.class));
// Drachenlord // Drachenlord
EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:drachenlord"), EntityDrachenlord.class, EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:drachenlord"), EntityDrachenlord.class, "drachenlord", id++, Spackenmobs.instance, 64, 1, true, 15256745, 8738878);
"drachenlord", id++, Spackenmobs.instance, 64, 1, true, 15256745, 8738878); EntityRegistry.addSpawn(EntityDrachenlord.class, 50, 1, 4, EnumCreatureType.MONSTER, BiomeHelper.getBiomesWithMonster(EntityPigZombie.class));
EntityRegistry.addSpawn(EntityDrachenlord.class, 50, 1, 4, EnumCreatureType.MONSTER,
BiomeHelper.getBiomesWithMonster(EntityPigZombie.class));
// Schalker // Schalker
EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:schalker"), EntitySchalker.class, "schalker", EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:schalker"), EntitySchalker.class, "schalker", id++, Spackenmobs.instance, 64, 1, true, 24745, 16777215);
id++, Spackenmobs.instance, 64, 1, true, 24745, 16777215); EntityRegistry.addSpawn(EntitySchalker.class, 50, 1, 4, EnumCreatureType.MONSTER, BiomeHelper.getBiomesWithMonster(EntityShulker.class));
EntityRegistry.addSpawn(EntitySchalker.class, 50, 1, 4, EnumCreatureType.MONSTER,
BiomeHelper.getBiomesWithMonster(EntityShulker.class));
// Jens // Jens
EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:jens"), EntityJens.class, "jens", id++, EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:jens"), EntityJens.class, "jens", id++, Spackenmobs.instance, 64, 1, true, 6704526, 6767911);
Spackenmobs.instance, 64, 1, true, 6704526, 6767911); EntityRegistry.addSpawn(EntityJens.class, 25, 1, 4, EnumCreatureType.CREATURE, BiomeHelper.getBiomesWithCreature(EntityPig.class));
EntityRegistry.addSpawn(EntityJens.class, 50, 1, 4, EnumCreatureType.CREATURE,
BiomeHelper.getBiomesWithCreature(EntityPig.class));
// WolfMZTE // WolfMZTE
EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:wolfmzte"), EntityWolfMZTE.class, "wolfmzte", EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:wolfmzte"), EntityWolfMZTE.class, "wolfmzte", id++, Spackenmobs.instance, 64, 1, true, 16711680, 0);
id++, Spackenmobs.instance, 64, 1, true, 16711680, 0); EntityRegistry.addSpawn(EntityJens.class, 50, 1, 4, EnumCreatureType.CREATURE, BiomeHelper.getBiomesWithCreature(EntityWolf.class));
EntityRegistry.addSpawn(EntityJens.class, 50, 1, 4, EnumCreatureType.CREATURE,
BiomeHelper.getBiomesWithCreature(EntityWolf.class));
// Holzstammhuhn // Holzstammhuhn
EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:holzstammhuhn"), EntityHolzstammhuhn.class, EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:holzstammhuhn"), EntityHolzstammhuhn.class, "holzstammhuhn", id++, Spackenmobs.instance, 64, 1, true, 12096347, 5295899);
"holzstammhuhn", id++, Spackenmobs.instance, 64, 1, true, 12096347, 5295899); EntityRegistry.addSpawn(EntityJens.class, 50, 1, 4, EnumCreatureType.CREATURE, BiomeHelper.getBiomesWithCreature(EntityChicken.class));
EntityRegistry.addSpawn(EntityJens.class, 50, 1, 4, EnumCreatureType.CREATURE,
BiomeHelper.getBiomesWithCreature(EntityChicken.class));
// LootTableList.register(EntityJens.LOOT);
} }
@SubscribeEvent @SubscribeEvent
public static void registerSounds(Register<SoundEvent> event) { public static void registerSounds(Register<SoundEvent> event)
{
// Smava Creeper // Smava Creeper
ModSoundEvents.ENTITY_SMAVACREEPER_FUSE ModSoundEvents.ENTITY_SMAVACREEPER_FUSE.setRegistryName(new ResourceLocation("spackenmobs:entities.smava_creeper.fuse"));
.setRegistryName(new ResourceLocation("spackenmobs:entities.smava_creeper.fuse"));
event.getRegistry().register(ModSoundEvents.ENTITY_SMAVACREEPER_FUSE); event.getRegistry().register(ModSoundEvents.ENTITY_SMAVACREEPER_FUSE);
ModSoundEvents.ENTITY_SMAVACREEPER_BLOW ModSoundEvents.ENTITY_SMAVACREEPER_BLOW.setRegistryName(new ResourceLocation("spackenmobs:entities.smava_creeper.blow"));
.setRegistryName(new ResourceLocation("spackenmobs:entities.smava_creeper.blow"));
event.getRegistry().register(ModSoundEvents.ENTITY_SMAVACREEPER_BLOW); event.getRegistry().register(ModSoundEvents.ENTITY_SMAVACREEPER_BLOW);
ModSoundEvents.ENTITY_SMAVACREEPER_HURT ModSoundEvents.ENTITY_SMAVACREEPER_HURT.setRegistryName(new ResourceLocation("spackenmobs:entities.smava_creeper.hurt"));
.setRegistryName(new ResourceLocation("spackenmobs:entities.smava_creeper.hurt"));
event.getRegistry().register(ModSoundEvents.ENTITY_SMAVACREEPER_HURT); event.getRegistry().register(ModSoundEvents.ENTITY_SMAVACREEPER_HURT);
ModSoundEvents.ENTITY_SMAVACREEPER_AMBIENT ModSoundEvents.ENTITY_SMAVACREEPER_AMBIENT.setRegistryName(new ResourceLocation("spackenmobs:entities.smava_creeper.ambient"));
.setRegistryName(new ResourceLocation("spackenmobs:entities.smava_creeper.ambient"));
event.getRegistry().register(ModSoundEvents.ENTITY_SMAVACREEPER_AMBIENT); event.getRegistry().register(ModSoundEvents.ENTITY_SMAVACREEPER_AMBIENT);
// Islamist // Islamist
@ -136,19 +110,15 @@ public class RegHandler {
event.getRegistry().register(ModSoundEvents.ENTITY_ISLAMIST_HURT); event.getRegistry().register(ModSoundEvents.ENTITY_ISLAMIST_HURT);
// Marcell D'Avis // Marcell D'Avis
ModSoundEvents.ENTITY_MARCELLDAVIS_AMBIENT ModSoundEvents.ENTITY_MARCELLDAVIS_AMBIENT.setRegistryName(new ResourceLocation("spackenmobs:entities.marcell_davis.ambient"));
.setRegistryName(new ResourceLocation("spackenmobs:entities.marcell_davis.ambient"));
event.getRegistry().register(ModSoundEvents.ENTITY_MARCELLDAVIS_AMBIENT); event.getRegistry().register(ModSoundEvents.ENTITY_MARCELLDAVIS_AMBIENT);
ModSoundEvents.ENTITY_MARCELLDAVIS_HURT ModSoundEvents.ENTITY_MARCELLDAVIS_HURT.setRegistryName(new ResourceLocation("spackenmobs:entities.marcell_davis.hurt"));
.setRegistryName(new ResourceLocation("spackenmobs:entities.marcell_davis.hurt"));
event.getRegistry().register(ModSoundEvents.ENTITY_MARCELLDAVIS_HURT); event.getRegistry().register(ModSoundEvents.ENTITY_MARCELLDAVIS_HURT);
ModSoundEvents.ENTITY_MARCELLDAVIS_DEATH ModSoundEvents.ENTITY_MARCELLDAVIS_DEATH.setRegistryName(new ResourceLocation("spackenmobs:entities.marcell_davis.death"));
.setRegistryName(new ResourceLocation("spackenmobs:entities.marcell_davis.death"));
event.getRegistry().register(ModSoundEvents.ENTITY_MARCELLDAVIS_DEATH); event.getRegistry().register(ModSoundEvents.ENTITY_MARCELLDAVIS_DEATH);
// Mr. Bean // Mr. Bean
ModSoundEvents.ENTITY_MRBEAN_AMBIENT ModSoundEvents.ENTITY_MRBEAN_AMBIENT.setRegistryName(new ResourceLocation("spackenmobs:entities.mr_bean.ambient"));
.setRegistryName(new ResourceLocation("spackenmobs:entities.mr_bean.ambient"));
event.getRegistry().register(ModSoundEvents.ENTITY_MRBEAN_AMBIENT); event.getRegistry().register(ModSoundEvents.ENTITY_MRBEAN_AMBIENT);
ModSoundEvents.ENTITY_MRBEAN_HURT.setRegistryName(new ResourceLocation("spackenmobs:entities.mr_bean.hurt")); ModSoundEvents.ENTITY_MRBEAN_HURT.setRegistryName(new ResourceLocation("spackenmobs:entities.mr_bean.hurt"));
event.getRegistry().register(ModSoundEvents.ENTITY_MRBEAN_HURT); event.getRegistry().register(ModSoundEvents.ENTITY_MRBEAN_HURT);
@ -156,8 +126,7 @@ public class RegHandler {
event.getRegistry().register(ModSoundEvents.ENTITY_MRBEAN_DEATH); event.getRegistry().register(ModSoundEvents.ENTITY_MRBEAN_DEATH);
// ApoRed // ApoRed
ModSoundEvents.ENTITY_APORED_AMBIENT ModSoundEvents.ENTITY_APORED_AMBIENT.setRegistryName(new ResourceLocation("spackenmobs:entities.apored.ambient"));
.setRegistryName(new ResourceLocation("spackenmobs:entities.apored.ambient"));
event.getRegistry().register(ModSoundEvents.ENTITY_APORED_AMBIENT); event.getRegistry().register(ModSoundEvents.ENTITY_APORED_AMBIENT);
ModSoundEvents.ENTITY_APORED_HURT.setRegistryName(new ResourceLocation("spackenmobs:entities.apored.hurt")); ModSoundEvents.ENTITY_APORED_HURT.setRegistryName(new ResourceLocation("spackenmobs:entities.apored.hurt"));
event.getRegistry().register(ModSoundEvents.ENTITY_APORED_HURT); event.getRegistry().register(ModSoundEvents.ENTITY_APORED_HURT);
@ -165,32 +134,25 @@ public class RegHandler {
event.getRegistry().register(ModSoundEvents.ENTITY_APORED_DEATH); event.getRegistry().register(ModSoundEvents.ENTITY_APORED_DEATH);
// Drachenlord // Drachenlord
ModSoundEvents.ENTITY_DRACHENLORD_AMBIENT ModSoundEvents.ENTITY_DRACHENLORD_AMBIENT.setRegistryName(new ResourceLocation("spackenmobs:entities.drachenlord.ambient"));
.setRegistryName(new ResourceLocation("spackenmobs:entities.drachenlord.ambient"));
event.getRegistry().register(ModSoundEvents.ENTITY_DRACHENLORD_AMBIENT); event.getRegistry().register(ModSoundEvents.ENTITY_DRACHENLORD_AMBIENT);
ModSoundEvents.ENTITY_DRACHENLORD_HURT ModSoundEvents.ENTITY_DRACHENLORD_HURT.setRegistryName(new ResourceLocation("spackenmobs:entities.drachenlord.hurt"));
.setRegistryName(new ResourceLocation("spackenmobs:entities.drachenlord.hurt"));
event.getRegistry().register(ModSoundEvents.ENTITY_DRACHENLORD_HURT); event.getRegistry().register(ModSoundEvents.ENTITY_DRACHENLORD_HURT);
ModSoundEvents.ENTITY_DRACHENLORD_DEATH ModSoundEvents.ENTITY_DRACHENLORD_DEATH.setRegistryName(new ResourceLocation("spackenmobs:entities.drachenlord.death"));
.setRegistryName(new ResourceLocation("spackenmobs:entities.drachenlord.death"));
event.getRegistry().register(ModSoundEvents.ENTITY_DRACHENLORD_DEATH); event.getRegistry().register(ModSoundEvents.ENTITY_DRACHENLORD_DEATH);
ModSoundEvents.ENTITY_DRACHENLORD_ANGRY ModSoundEvents.ENTITY_DRACHENLORD_ANGRY.setRegistryName(new ResourceLocation("spackenmobs:entities.drachenlord.angry"));
.setRegistryName(new ResourceLocation("spackenmobs:entities.drachenlord.angry"));
event.getRegistry().register(ModSoundEvents.ENTITY_DRACHENLORD_ANGRY); event.getRegistry().register(ModSoundEvents.ENTITY_DRACHENLORD_ANGRY);
// Schalker // Schalker
ModSoundEvents.ENTITY_SCHALKER_AMBIENT ModSoundEvents.ENTITY_SCHALKER_AMBIENT.setRegistryName(new ResourceLocation("spackenmobs:entities.schalker.ambient"));
.setRegistryName(new ResourceLocation("spackenmobs:entities.schalker.ambient"));
event.getRegistry().register(ModSoundEvents.ENTITY_SCHALKER_AMBIENT); event.getRegistry().register(ModSoundEvents.ENTITY_SCHALKER_AMBIENT);
ModSoundEvents.ENTITY_SCHALKER_HURT.setRegistryName(new ResourceLocation("spackenmobs:entities.schalker.hurt")); ModSoundEvents.ENTITY_SCHALKER_HURT.setRegistryName(new ResourceLocation("spackenmobs:entities.schalker.hurt"));
event.getRegistry().register(ModSoundEvents.ENTITY_SCHALKER_HURT); event.getRegistry().register(ModSoundEvents.ENTITY_SCHALKER_HURT);
ModSoundEvents.ENTITY_SCHALKER_DEATH ModSoundEvents.ENTITY_SCHALKER_DEATH.setRegistryName(new ResourceLocation("spackenmobs:entities.schalker.death"));
.setRegistryName(new ResourceLocation("spackenmobs:entities.schalker.death"));
event.getRegistry().register(ModSoundEvents.ENTITY_SCHALKER_DEATH); event.getRegistry().register(ModSoundEvents.ENTITY_SCHALKER_DEATH);
ModSoundEvents.ENTITY_SCHALKER_OPEN.setRegistryName(new ResourceLocation("spackenmobs:entities.schalker.open")); ModSoundEvents.ENTITY_SCHALKER_OPEN.setRegistryName(new ResourceLocation("spackenmobs:entities.schalker.open"));
event.getRegistry().register(ModSoundEvents.ENTITY_SCHALKER_OPEN); event.getRegistry().register(ModSoundEvents.ENTITY_SCHALKER_OPEN);
ModSoundEvents.ENTITY_SCHALKER_SHOOT ModSoundEvents.ENTITY_SCHALKER_SHOOT.setRegistryName(new ResourceLocation("spackenmobs:entities.schalker.shoot"));
.setRegistryName(new ResourceLocation("spackenmobs:entities.schalker.shoot"));
event.getRegistry().register(ModSoundEvents.ENTITY_SCHALKER_SHOOT); event.getRegistry().register(ModSoundEvents.ENTITY_SCHALKER_SHOOT);
// Jens // Jens

View file

@ -10,16 +10,18 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
@EventBusSubscriber(value = Side.CLIENT, modid = Spackenmobs.MODID) @EventBusSubscriber(value = Side.CLIENT, modid = Spackenmobs.MODID)
public class RegHandlerModels { public class RegHandlerModels
{
@SubscribeEvent @SubscribeEvent
public static void registerModels(ModelRegistryEvent event) { public static void registerModels(ModelRegistryEvent event)
{
registerModel(ModItems.RAM, 0); registerModel(ModItems.RAM, 0);
registerModel(ModItems.RAM_ON_A_STICK, 0); registerModel(ModItems.RAM_ON_A_STICK, 0);
registerModel(ModItems.SURSTROEMMING, 0); registerModel(ModItems.SURSTROEMMING, 0);
} }
private static void registerModel(Item item, int meta) { private static void registerModel(Item item, int meta)
ModelLoader.setCustomModelResourceLocation(item, meta, {
new ModelResourceLocation(item.getRegistryName(), "inventory")); ModelLoader.setCustomModelResourceLocation(item, meta, new ModelResourceLocation(item.getRegistryName(), "inventory"));
} }
} }

View file

@ -9,12 +9,14 @@ import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public class ModelSchalker extends ModelBase { public class ModelSchalker extends ModelBase
{
public final ModelRenderer base; public final ModelRenderer base;
public final ModelRenderer lid; public final ModelRenderer lid;
public ModelRenderer head; public ModelRenderer head;
public ModelSchalker() { public ModelSchalker()
{
this.textureHeight = 64; this.textureHeight = 64;
this.textureWidth = 64; this.textureWidth = 64;
this.lid = new ModelRenderer(this); this.lid = new ModelRenderer(this);
@ -29,23 +31,27 @@ public class ModelSchalker extends ModelBase {
} }
@Override @Override
public void setRotationAngles(float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, public void setRotationAngles(float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scaleFactor, Entity entityIn)
float headPitch, float scaleFactor, Entity entityIn) { {
EntitySchalker EntitySchalker = (EntitySchalker) entityIn; EntitySchalker EntitySchalker = (EntitySchalker) entityIn;
float f = ageInTicks - EntitySchalker.ticksExisted; float f = ageInTicks - EntitySchalker.ticksExisted;
float f1 = (0.5F + EntitySchalker.getClientPeekAmount(f)) * (float) Math.PI; float f1 = (0.5F + EntitySchalker.getClientPeekAmount(f)) * (float) Math.PI;
float f2 = -1.0F + MathHelper.sin(f1); float f2 = -1.0F + MathHelper.sin(f1);
float f3 = 0.0F; float f3 = 0.0F;
if (f1 > (float) Math.PI) { if (f1 > (float) Math.PI)
{
f3 = MathHelper.sin(ageInTicks * 0.1F) * 0.7F; f3 = MathHelper.sin(ageInTicks * 0.1F) * 0.7F;
} }
this.lid.setRotationPoint(0.0F, 16.0F + MathHelper.sin(f1) * 8.0F + f3, 0.0F); this.lid.setRotationPoint(0.0F, 16.0F + MathHelper.sin(f1) * 8.0F + f3, 0.0F);
if (EntitySchalker.getClientPeekAmount(f) > 0.3F) { if (EntitySchalker.getClientPeekAmount(f) > 0.3F)
{
this.lid.rotateAngleY = f2 * f2 * f2 * f2 * (float) Math.PI * 0.125F; this.lid.rotateAngleY = f2 * f2 * f2 * f2 * (float) Math.PI * 0.125F;
} else { }
else
{
this.lid.rotateAngleY = 0.0F; this.lid.rotateAngleY = 0.0F;
} }
@ -54,8 +60,8 @@ public class ModelSchalker extends ModelBase {
} }
@Override @Override
public void render(Entity entityIn, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, public void render(Entity entityIn, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scale)
float headPitch, float scale) { {
this.base.render(scale); this.base.render(scale);
this.lid.render(scale); this.lid.render(scale);
} }

View file

@ -15,17 +15,20 @@ import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public class RenderApoRed extends RenderSkeleton { public class RenderApoRed extends RenderSkeleton
private static final ResourceLocation APORED_TEXTURE = new ResourceLocation( {
"spackenmobs:textures/entities/apored.png"); private static final ResourceLocation APORED_TEXTURE = new ResourceLocation("spackenmobs:textures/entities/apored.png");
public static final Factory FACTORY = new Factory(); public static final Factory FACTORY = new Factory();
public RenderApoRed(RenderManager renderManagerIn) { public RenderApoRed(RenderManager renderManagerIn)
{
super(renderManagerIn); super(renderManagerIn);
this.addLayer(new LayerHeldItem(this)); this.addLayer(new LayerHeldItem(this));
this.addLayer(new LayerBipedArmor(this) { this.addLayer(new LayerBipedArmor(this)
{
@Override @Override
protected void initArmor() { protected void initArmor()
{
this.modelLeggings = new ModelSkeleton(0.5F, true); this.modelLeggings = new ModelSkeleton(0.5F, true);
this.modelArmor = new ModelSkeleton(1.0F, true); this.modelArmor = new ModelSkeleton(1.0F, true);
} }
@ -33,18 +36,22 @@ public class RenderApoRed extends RenderSkeleton {
} }
@Override @Override
public void transformHeldFull3DItemLayer() { public void transformHeldFull3DItemLayer()
{
GlStateManager.translate(0.09375F, 0.1875F, 0.0F); GlStateManager.translate(0.09375F, 0.1875F, 0.0F);
} }
@Override @Override
protected ResourceLocation getEntityTexture(AbstractSkeleton entity) { protected ResourceLocation getEntityTexture(AbstractSkeleton entity)
{
return APORED_TEXTURE; return APORED_TEXTURE;
} }
public static class Factory implements IRenderFactory<EntityApoRed> { public static class Factory implements IRenderFactory<EntityApoRed>
{
@Override @Override
public Render<? super EntityApoRed> createRenderFor(RenderManager manager) { public Render<? super EntityApoRed> createRenderFor(RenderManager manager)
{
return new RenderApoRed(manager); return new RenderApoRed(manager);
} }
} }

View file

@ -13,16 +13,19 @@ import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public class RenderDrachenlord extends RenderZombie { public class RenderDrachenlord extends RenderZombie
private static final ResourceLocation DRACHENLORD_TEXTURE = new ResourceLocation( {
"spackenmobs:textures/entities/drachenlord.png"); private static final ResourceLocation DRACHENLORD_TEXTURE = new ResourceLocation("spackenmobs:textures/entities/drachenlord.png");
public static final Factory FACTORY = new Factory(); public static final Factory FACTORY = new Factory();
public RenderDrachenlord(RenderManager renderManagerIn) { public RenderDrachenlord(RenderManager renderManagerIn)
{
super(renderManagerIn); super(renderManagerIn);
this.addLayer(new LayerBipedArmor(this) { this.addLayer(new LayerBipedArmor(this)
{
@Override @Override
protected void initArmor() { protected void initArmor()
{
this.modelLeggings = new ModelZombie(0.5F, true); this.modelLeggings = new ModelZombie(0.5F, true);
this.modelArmor = new ModelZombie(1.0F, true); this.modelArmor = new ModelZombie(1.0F, true);
} }
@ -30,13 +33,16 @@ public class RenderDrachenlord extends RenderZombie {
} }
@Override @Override
protected ResourceLocation getEntityTexture(EntityZombie entity) { protected ResourceLocation getEntityTexture(EntityZombie entity)
{
return DRACHENLORD_TEXTURE; return DRACHENLORD_TEXTURE;
} }
public static class Factory implements IRenderFactory<EntityDrachenlord> { public static class Factory implements IRenderFactory<EntityDrachenlord>
{
@Override @Override
public Render<? super EntityDrachenlord> createRenderFor(RenderManager manager) { public Render<? super EntityDrachenlord> createRenderFor(RenderManager manager)
{
return new RenderDrachenlord(manager); return new RenderDrachenlord(manager);
} }
} }

View file

@ -11,23 +11,27 @@ import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public class RenderHolzstammhuhn extends RenderChicken { public class RenderHolzstammhuhn extends RenderChicken
private static final ResourceLocation HOLZSTAMMHUHN_TEXTURE = new ResourceLocation( {
"spackenmobs:textures/entities/holzstammhuhn.png"); private static final ResourceLocation HOLZSTAMMHUHN_TEXTURE = new ResourceLocation("spackenmobs:textures/entities/holzstammhuhn.png");
public static final Factory FACTORY = new Factory(); public static final Factory FACTORY = new Factory();
public RenderHolzstammhuhn(RenderManager renderManagerIn) { public RenderHolzstammhuhn(RenderManager renderManagerIn)
{
super(renderManagerIn); super(renderManagerIn);
} }
@Override @Override
protected ResourceLocation getEntityTexture(EntityChicken entity) { protected ResourceLocation getEntityTexture(EntityChicken entity)
{
return HOLZSTAMMHUHN_TEXTURE; return HOLZSTAMMHUHN_TEXTURE;
} }
public static class Factory implements IRenderFactory<EntityHolzstammhuhn> { public static class Factory implements IRenderFactory<EntityHolzstammhuhn>
{
@Override @Override
public Render<? super EntityHolzstammhuhn> createRenderFor(RenderManager manager) { public Render<? super EntityHolzstammhuhn> createRenderFor(RenderManager manager)
{
return new RenderHolzstammhuhn(manager); return new RenderHolzstammhuhn(manager);
} }
} }

View file

@ -12,24 +12,28 @@ import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public class RenderIslamist extends RenderCreeper { public class RenderIslamist extends RenderCreeper
private static final ResourceLocation ISLAMIST_TEXTURE = new ResourceLocation( {
"spackenmobs:textures/entities/islamist.png"); private static final ResourceLocation ISLAMIST_TEXTURE = new ResourceLocation("spackenmobs:textures/entities/islamist.png");
public static final Factory FACTORY = new Factory(); public static final Factory FACTORY = new Factory();
public RenderIslamist(RenderManager renderManagerIn) { public RenderIslamist(RenderManager renderManagerIn)
{
super(renderManagerIn); super(renderManagerIn);
this.addLayer(new LayerCreeperCharge(this)); this.addLayer(new LayerCreeperCharge(this));
} }
@Override @Override
protected ResourceLocation getEntityTexture(EntityCreeper entity) { protected ResourceLocation getEntityTexture(EntityCreeper entity)
{
return ISLAMIST_TEXTURE; return ISLAMIST_TEXTURE;
} }
public static class Factory implements IRenderFactory<EntityIslamist> { public static class Factory implements IRenderFactory<EntityIslamist>
{
@Override @Override
public Render<? super EntityIslamist> createRenderFor(RenderManager manager) { public Render<? super EntityIslamist> createRenderFor(RenderManager manager)
{
return new RenderIslamist(manager); return new RenderIslamist(manager);
} }
} }

View file

@ -11,22 +11,27 @@ import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public class RenderJens extends RenderBiped<EntityJens> { public class RenderJens extends RenderBiped<EntityJens>
{
private static final ResourceLocation JENS_TEXTURE = new ResourceLocation("spackenmobs:textures/entities/jens.png"); private static final ResourceLocation JENS_TEXTURE = new ResourceLocation("spackenmobs:textures/entities/jens.png");
public static final Factory FACTORY = new Factory(); public static final Factory FACTORY = new Factory();
public RenderJens(RenderManager renderManagerIn) { public RenderJens(RenderManager renderManagerIn)
{
super(renderManagerIn, new ModelBiped(), 0.25F); super(renderManagerIn, new ModelBiped(), 0.25F);
} }
@Override @Override
protected ResourceLocation getEntityTexture(EntityJens entity) { protected ResourceLocation getEntityTexture(EntityJens entity)
{
return JENS_TEXTURE; return JENS_TEXTURE;
} }
private static class Factory implements IRenderFactory<EntityJens> { private static class Factory implements IRenderFactory<EntityJens>
{
@Override @Override
public Render<? super EntityJens> createRenderFor(RenderManager manager) { public Render<? super EntityJens> createRenderFor(RenderManager manager)
{
return new RenderJens(manager); return new RenderJens(manager);
} }
} }

View file

@ -13,16 +13,19 @@ import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public class RenderMarcellDAvis extends RenderZombie { public class RenderMarcellDAvis extends RenderZombie
private static final ResourceLocation MARCELLDAVIS_TEXTURE = new ResourceLocation( {
"spackenmobs:textures/entities/marcell_davis.png"); private static final ResourceLocation MARCELLDAVIS_TEXTURE = new ResourceLocation("spackenmobs:textures/entities/marcell_davis.png");
public static final Factory FACTORY = new Factory(); public static final Factory FACTORY = new Factory();
public RenderMarcellDAvis(RenderManager renderManagerIn) { public RenderMarcellDAvis(RenderManager renderManagerIn)
{
super(renderManagerIn); super(renderManagerIn);
LayerBipedArmor layerbipedarmor = new LayerBipedArmor(this) { LayerBipedArmor layerbipedarmor = new LayerBipedArmor(this)
{
@Override @Override
protected void initArmor() { protected void initArmor()
{
this.modelLeggings = new ModelZombie(0.5F, true); this.modelLeggings = new ModelZombie(0.5F, true);
this.modelArmor = new ModelZombie(1.0F, true); this.modelArmor = new ModelZombie(1.0F, true);
} }
@ -31,13 +34,16 @@ public class RenderMarcellDAvis extends RenderZombie {
} }
@Override @Override
protected ResourceLocation getEntityTexture(EntityZombie entity) { protected ResourceLocation getEntityTexture(EntityZombie entity)
{
return MARCELLDAVIS_TEXTURE; return MARCELLDAVIS_TEXTURE;
} }
public static class Factory implements IRenderFactory<EntityMarcellDAvis> { public static class Factory implements IRenderFactory<EntityMarcellDAvis>
{
@Override @Override
public Render<? super EntityMarcellDAvis> createRenderFor(RenderManager manager) { public Render<? super EntityMarcellDAvis> createRenderFor(RenderManager manager)
{
return new RenderMarcellDAvis(manager); return new RenderMarcellDAvis(manager);
} }
} }

View file

@ -13,16 +13,19 @@ import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public class RenderMrBean extends RenderZombie { public class RenderMrBean extends RenderZombie
private static final ResourceLocation MRBEAN_TEXTURE = new ResourceLocation( {
"spackenmobs:textures/entities/mr_bean.png"); private static final ResourceLocation MRBEAN_TEXTURE = new ResourceLocation("spackenmobs:textures/entities/mr_bean.png");
public static final Factory FACTORY = new Factory(); public static final Factory FACTORY = new Factory();
public RenderMrBean(RenderManager renderManagerIn) { public RenderMrBean(RenderManager renderManagerIn)
{
super(renderManagerIn); super(renderManagerIn);
LayerBipedArmor layerbipedarmor = new LayerBipedArmor(this) { LayerBipedArmor layerbipedarmor = new LayerBipedArmor(this)
{
@Override @Override
protected void initArmor() { protected void initArmor()
{
this.modelLeggings = new ModelZombie(0.5F, true); this.modelLeggings = new ModelZombie(0.5F, true);
this.modelArmor = new ModelZombie(1.0F, true); this.modelArmor = new ModelZombie(1.0F, true);
} }
@ -31,13 +34,16 @@ public class RenderMrBean extends RenderZombie {
} }
@Override @Override
protected ResourceLocation getEntityTexture(EntityZombie entity) { protected ResourceLocation getEntityTexture(EntityZombie entity)
{
return MRBEAN_TEXTURE; return MRBEAN_TEXTURE;
} }
public static class Factory implements IRenderFactory<EntityMrBean> { public static class Factory implements IRenderFactory<EntityMrBean>
{
@Override @Override
public Render<? super EntityMrBean> createRenderFor(RenderManager manager) { public Render<? super EntityMrBean> createRenderFor(RenderManager manager)
{
return new RenderMrBean(manager); return new RenderMrBean(manager);
} }
} }

View file

@ -17,41 +17,40 @@ import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public class RenderSchalker extends RenderLiving<EntitySchalker> { public class RenderSchalker extends RenderLiving<EntitySchalker>
public static final ResourceLocation[] SCHALKER_TEXTURE = new ResourceLocation[] { {
new ResourceLocation("spackenmobs:textures/entities/schalker.png"), public static final ResourceLocation[] SCHALKER_TEXTURE = new ResourceLocation[]
new ResourceLocation("spackenmobs:textures/entities/schalker.png"), {
new ResourceLocation("spackenmobs:textures/entities/schalker.png"), new ResourceLocation("spackenmobs:textures/entities/schalker.png"), new ResourceLocation("spackenmobs:textures/entities/schalker.png"),
new ResourceLocation("spackenmobs:textures/entities/schalker.png"), new ResourceLocation("spackenmobs:textures/entities/schalker.png"), new ResourceLocation("spackenmobs:textures/entities/schalker.png"),
new ResourceLocation("spackenmobs:textures/entities/schalker.png"), new ResourceLocation("spackenmobs:textures/entities/schalker.png"), new ResourceLocation("spackenmobs:textures/entities/schalker.png"),
new ResourceLocation("spackenmobs:textures/entities/schalker.png"), new ResourceLocation("spackenmobs:textures/entities/schalker.png"), new ResourceLocation("spackenmobs:textures/entities/schalker.png"),
new ResourceLocation("spackenmobs:textures/entities/schalker.png"), new ResourceLocation("spackenmobs:textures/entities/schalker.png"), new ResourceLocation("spackenmobs:textures/entities/schalker.png"),
new ResourceLocation("spackenmobs:textures/entities/schalker.png"), new ResourceLocation("spackenmobs:textures/entities/schalker.png"), new ResourceLocation("spackenmobs:textures/entities/schalker.png"),
new ResourceLocation("spackenmobs:textures/entities/schalker.png"), new ResourceLocation("spackenmobs:textures/entities/schalker.png"), new ResourceLocation("spackenmobs:textures/entities/schalker.png"),
new ResourceLocation("spackenmobs:textures/entities/schalker.png"), new ResourceLocation("spackenmobs:textures/entities/schalker.png"), new ResourceLocation("spackenmobs:textures/entities/schalker.png")
new ResourceLocation("spackenmobs:textures/entities/schalker.png"), };
new ResourceLocation("spackenmobs:textures/entities/schalker.png"),
new ResourceLocation("spackenmobs:textures/entities/schalker.png"),
new ResourceLocation("spackenmobs:textures/entities/schalker.png"),
new ResourceLocation("spackenmobs:textures/entities/schalker.png"),
new ResourceLocation("spackenmobs:textures/entities/schalker.png") };
public static final Factory FACTORY = new Factory(); public static final Factory FACTORY = new Factory();
public RenderSchalker(RenderManager p_i47194_1_) { public RenderSchalker(RenderManager p_i47194_1_)
{
super(p_i47194_1_, new ModelSchalker(), 0.0F); super(p_i47194_1_, new ModelSchalker(), 0.0F);
this.addLayer(new RenderSchalker.HeadLayer()); this.addLayer(new RenderSchalker.HeadLayer());
} }
@Override @Override
public ModelSchalker getMainModel() { public ModelSchalker getMainModel()
{
return (ModelSchalker) super.getMainModel(); return (ModelSchalker) super.getMainModel();
} }
@Override @Override
public void doRender(EntitySchalker entity, double x, double y, double z, float entityYaw, float partialTicks) { public void doRender(EntitySchalker entity, double x, double y, double z, float entityYaw, float partialTicks)
{
int i = entity.getClientTeleportInterp(); int i = entity.getClientTeleportInterp();
if (i > 0 && entity.isAttachedToBlock()) { if (i > 0 && entity.isAttachedToBlock())
{
BlockPos blockpos = entity.getAttachmentPos(); BlockPos blockpos = entity.getAttachmentPos();
BlockPos blockpos1 = entity.getOldAttachPos(); BlockPos blockpos1 = entity.getOldAttachPos();
double d0 = (i - partialTicks) / 6.0D; double d0 = (i - partialTicks) / 6.0D;
@ -60,24 +59,31 @@ public class RenderSchalker extends RenderLiving<EntitySchalker> {
double d2 = (blockpos.getY() - blockpos1.getY()) * d0; double d2 = (blockpos.getY() - blockpos1.getY()) * d0;
double d3 = (blockpos.getZ() - blockpos1.getZ()) * d0; double d3 = (blockpos.getZ() - blockpos1.getZ()) * d0;
super.doRender(entity, x - d1, y - d2, z - d3, entityYaw, partialTicks); super.doRender(entity, x - d1, y - d2, z - d3, entityYaw, partialTicks);
} else { }
else
{
super.doRender(entity, x, y, z, entityYaw, partialTicks); super.doRender(entity, x, y, z, entityYaw, partialTicks);
} }
} }
@Override @Override
public boolean shouldRender(EntitySchalker livingEntity, ICamera camera, double camX, double camY, double camZ) { public boolean shouldRender(EntitySchalker livingEntity, ICamera camera, double camX, double camY, double camZ)
if (super.shouldRender(livingEntity, camera, camX, camY, camZ)) { {
if (super.shouldRender(livingEntity, camera, camX, camY, camZ))
{
return true; return true;
} else { }
if (livingEntity.getClientTeleportInterp() > 0 && livingEntity.isAttachedToBlock()) { else
{
if (livingEntity.getClientTeleportInterp() > 0 && livingEntity.isAttachedToBlock())
{
BlockPos blockpos = livingEntity.getOldAttachPos(); BlockPos blockpos = livingEntity.getOldAttachPos();
BlockPos blockpos1 = livingEntity.getAttachmentPos(); BlockPos blockpos1 = livingEntity.getAttachmentPos();
Vec3d vec3d = new Vec3d(blockpos1.getX(), blockpos1.getY(), blockpos1.getZ()); Vec3d vec3d = new Vec3d(blockpos1.getX(), blockpos1.getY(), blockpos1.getZ());
Vec3d vec3d1 = new Vec3d(blockpos.getX(), blockpos.getY(), blockpos.getZ()); Vec3d vec3d1 = new Vec3d(blockpos.getX(), blockpos.getY(), blockpos.getZ());
if (camera.isBoundingBoxInFrustum( if (camera.isBoundingBoxInFrustum(new AxisAlignedBB(vec3d1.x, vec3d1.y, vec3d1.z, vec3d.x, vec3d.y, vec3d.z)))
new AxisAlignedBB(vec3d1.x, vec3d1.y, vec3d1.z, vec3d.x, vec3d.y, vec3d.z))) { {
return true; return true;
} }
} }
@ -87,16 +93,18 @@ public class RenderSchalker extends RenderLiving<EntitySchalker> {
} }
@Override @Override
protected ResourceLocation getEntityTexture(EntitySchalker entity) { protected ResourceLocation getEntityTexture(EntitySchalker entity)
{
return SCHALKER_TEXTURE[entity.getColor().getMetadata()]; return SCHALKER_TEXTURE[entity.getColor().getMetadata()];
} }
@Override @Override
protected void applyRotations(EntitySchalker entityLiving, float p_77043_2_, float rotationYaw, protected void applyRotations(EntitySchalker entityLiving, float p_77043_2_, float rotationYaw, float partialTicks)
float partialTicks) { {
super.applyRotations(entityLiving, p_77043_2_, rotationYaw, partialTicks); super.applyRotations(entityLiving, p_77043_2_, rotationYaw, partialTicks);
switch (entityLiving.getAttachmentFacing()) { switch (entityLiving.getAttachmentFacing())
{
case DOWN: case DOWN:
default: default:
break; break;
@ -126,22 +134,26 @@ public class RenderSchalker extends RenderLiving<EntitySchalker> {
} }
@Override @Override
protected void preRenderCallback(EntitySchalker entitylivingbaseIn, float partialTickTime) { protected void preRenderCallback(EntitySchalker entitylivingbaseIn, float partialTickTime)
{
float f = 0.999F; float f = 0.999F;
GlStateManager.scale(0.999F, 0.999F, 0.999F); GlStateManager.scale(0.999F, 0.999F, 0.999F);
} }
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
class HeadLayer implements LayerRenderer<EntitySchalker> { class HeadLayer implements LayerRenderer<EntitySchalker>
private HeadLayer() { {
private HeadLayer()
{
} }
@Override @Override
public void doRenderLayer(EntitySchalker entitylivingbaseIn, float limbSwing, float limbSwingAmount, public void doRenderLayer(EntitySchalker entitylivingbaseIn, float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, float netHeadYaw, float headPitch, float scale)
float partialTicks, float ageInTicks, float netHeadYaw, float headPitch, float scale) { {
GlStateManager.pushMatrix(); GlStateManager.pushMatrix();
switch (entitylivingbaseIn.getAttachmentFacing()) { switch (entitylivingbaseIn.getAttachmentFacing())
{
case DOWN: case DOWN:
default: default:
break; break;
@ -174,21 +186,23 @@ public class RenderSchalker extends RenderLiving<EntitySchalker> {
ModelRenderer modelrenderer = RenderSchalker.this.getMainModel().head; ModelRenderer modelrenderer = RenderSchalker.this.getMainModel().head;
modelrenderer.rotateAngleY = netHeadYaw * 0.017453292F; modelrenderer.rotateAngleY = netHeadYaw * 0.017453292F;
modelrenderer.rotateAngleX = headPitch * 0.017453292F; modelrenderer.rotateAngleX = headPitch * 0.017453292F;
RenderSchalker.this RenderSchalker.this.bindTexture(RenderSchalker.SCHALKER_TEXTURE[entitylivingbaseIn.getColor().getMetadata()]);
.bindTexture(RenderSchalker.SCHALKER_TEXTURE[entitylivingbaseIn.getColor().getMetadata()]);
modelrenderer.render(scale); modelrenderer.render(scale);
GlStateManager.popMatrix(); GlStateManager.popMatrix();
} }
@Override @Override
public boolean shouldCombineTextures() { public boolean shouldCombineTextures()
{
return false; return false;
} }
} }
public static class Factory implements IRenderFactory<EntitySchalker> { public static class Factory implements IRenderFactory<EntitySchalker>
{
@Override @Override
public Render<? super EntitySchalker> createRenderFor(RenderManager manager) { public Render<? super EntitySchalker> createRenderFor(RenderManager manager)
{
return new RenderSchalker(manager); return new RenderSchalker(manager);
} }
} }

View file

@ -12,24 +12,28 @@ import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public class RenderSmavaCreeper extends RenderCreeper { public class RenderSmavaCreeper extends RenderCreeper
private static final ResourceLocation SMAVA_TEXTURE = new ResourceLocation( {
"spackenmobs:textures/entities/smava_creeper.png"); private static final ResourceLocation SMAVA_TEXTURE = new ResourceLocation("spackenmobs:textures/entities/smava_creeper.png");
public static final Factory FACTORY = new Factory(); public static final Factory FACTORY = new Factory();
public RenderSmavaCreeper(RenderManager renderManagerIn) { public RenderSmavaCreeper(RenderManager renderManagerIn)
{
super(renderManagerIn); super(renderManagerIn);
this.addLayer(new LayerCreeperCharge(this)); this.addLayer(new LayerCreeperCharge(this));
} }
@Override @Override
protected ResourceLocation getEntityTexture(EntityCreeper entity) { protected ResourceLocation getEntityTexture(EntityCreeper entity)
{
return SMAVA_TEXTURE; return SMAVA_TEXTURE;
} }
public static class Factory implements IRenderFactory<EntitySmavaCreeper> { public static class Factory implements IRenderFactory<EntitySmavaCreeper>
{
@Override @Override
public Render<? super EntitySmavaCreeper> createRenderFor(RenderManager manager) { public Render<? super EntitySmavaCreeper> createRenderFor(RenderManager manager)
{
return new RenderSmavaCreeper(manager); return new RenderSmavaCreeper(manager);
} }
} }

View file

@ -13,28 +13,30 @@ import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public class RenderWolfMZTE extends RenderWolf { public class RenderWolfMZTE extends RenderWolf
private static final ResourceLocation WOLFMZTE_TEXTURE = new ResourceLocation( {
"spackenmobs:textures/entities/wolfmzte.png"); private static final ResourceLocation WOLFMZTE_TEXTURE = new ResourceLocation("spackenmobs:textures/entities/wolfmzte.png");
private static final ResourceLocation TAMED_WOLFMZTE_TEXTURE = new ResourceLocation( private static final ResourceLocation TAMED_WOLFMZTE_TEXTURE = new ResourceLocation("spackenmobs:textures/entities/wolfmzte_tame.png");
"spackenmobs:textures/entities/wolfmzte_tame.png"); private static final ResourceLocation ANRGY_WOLFMZTE_TEXTURE = new ResourceLocation("spackenmobs:textures/entities/wolfmzte_angry.png");
private static final ResourceLocation ANRGY_WOLFMZTE_TEXTURE = new ResourceLocation(
"spackenmobs:textures/entities/wolfmzte_angry.png");
public static final Factory FACTORY = new Factory(); public static final Factory FACTORY = new Factory();
public RenderWolfMZTE(RenderManager renderManagerIn) { public RenderWolfMZTE(RenderManager renderManagerIn)
{
super(renderManagerIn); super(renderManagerIn);
this.addLayer(new LayerWolfCollar(this)); this.addLayer(new LayerWolfCollar(this));
} }
@Override @Override
protected float handleRotationFloat(EntityWolf livingBase, float partialTicks) { protected float handleRotationFloat(EntityWolf livingBase, float partialTicks)
{
return livingBase.getTailRotation(); return livingBase.getTailRotation();
} }
@Override @Override
public void doRender(EntityWolf entity, double x, double y, double z, float entityYaw, float partialTicks) { public void doRender(EntityWolf entity, double x, double y, double z, float entityYaw, float partialTicks)
if (entity.isWolfWet()) { {
if (entity.isWolfWet())
{
float f = entity.getBrightness() * entity.getShadingWhileWet(partialTicks); float f = entity.getBrightness() * entity.getShadingWhileWet(partialTicks);
GlStateManager.color(f, f, f); GlStateManager.color(f, f, f);
} }
@ -43,17 +45,23 @@ public class RenderWolfMZTE extends RenderWolf {
} }
@Override @Override
protected ResourceLocation getEntityTexture(EntityWolf entity) { protected ResourceLocation getEntityTexture(EntityWolf entity)
if (entity.isTamed()) { {
if (entity.isTamed())
{
return TAMED_WOLFMZTE_TEXTURE; return TAMED_WOLFMZTE_TEXTURE;
} else { }
else
{
return entity.isAngry() ? ANRGY_WOLFMZTE_TEXTURE : WOLFMZTE_TEXTURE; return entity.isAngry() ? ANRGY_WOLFMZTE_TEXTURE : WOLFMZTE_TEXTURE;
} }
} }
public static class Factory implements IRenderFactory<EntityWolfMZTE> { public static class Factory implements IRenderFactory<EntityWolfMZTE>
{
@Override @Override
public Render<? super EntityWolfMZTE> createRenderFor(RenderManager manager) { public Render<? super EntityWolfMZTE> createRenderFor(RenderManager manager)
{
return new RenderWolfMZTE(manager); return new RenderWolfMZTE(manager);
} }
} }

View file

@ -1,13 +1,14 @@
entity.smava_creeper.name=Smava-Creeper
entity.marcell_davis.name=Marcell D'Avis
entity.islamist.name=Islamist
entity.apored.name=ApoRed entity.apored.name=ApoRed
entity.mr_bean.name=Mr. Bean
entity.drachenlord.name=Drachenlord entity.drachenlord.name=Drachenlord
entity.schalker.name=Schalker
entity.jens.name=Jens
entity.wolfmzte.name=WolfMZTE
entity.holzstammhuhn.name=Holzstammhuhn entity.holzstammhuhn.name=Holzstammhuhn
entity.islamist.name=Islamist
entity.jens.name=Jens
entity.marcell_davis.name=Marcell D'Avis
entity.mr_bean.name=Mr. Bean
entity.schalker.name=Schalker
entity.smava_creeper.name=Smava-Creeper
entity.wolfmzte.name=WolfMZTE
item.spackenmobs.ram.name=RAM item.spackenmobs.ram.name=RAM
item.spackenmobs.ram_on_a_stick.name=RAM-Rute item.spackenmobs.ram_on_a_stick.name=RAM-Rute
item.spackenmobs.surstroemming.name=Surströmming item.spackenmobs.surstroemming.name=Surströmming
itemGroup.spackenmobs.tabSpackenmobs=Spackenmobs

View file

@ -1,13 +1,14 @@
entity.smava_creeper.name=Smava Creeper
entity.marcell_davis.name=Marcell D'Avis
entity.islamist.name=Islamist
entity.apored.name=ApoRed entity.apored.name=ApoRed
entity.mr_bean.name=Mr. Bean
entity.drachenlord.name=Drachenlord entity.drachenlord.name=Drachenlord
entity.schalker.name=Schalker
entity.jens.name=Jens
entity.wolfmzte.name=WolfMZTE
entity.holzstammhuhn.name=Holzstammhuhn entity.holzstammhuhn.name=Holzstammhuhn
entity.islamist.name=Islamist
entity.jens.name=Jens
entity.marcell_davis.name=Marcell D'Avis
entity.mr_bean.name=Mr. Bean
entity.schalker.name=Schalker
entity.smava_creeper.name=Smava Creeper
entity.wolfmzte.name=WolfMZTE
item.spackenmobs.ram.name=RAM item.spackenmobs.ram.name=RAM
item.spackenmobs.ram_on_a_stick.name=RAM on a Stick item.spackenmobs.ram_on_a_stick.name=RAM on a Stick
item.spackenmobs.surstroemming.name=Surströmming item.spackenmobs.surstroemming.name=Surströmming
itemGroup.spackenmobs.tabSpackenmobs=Spackenmobs

View file

@ -0,0 +1,26 @@
{
"pools": [{
"name": "jens",
"rolls": 1,
"entries": [{
"type": "item",
"name": "spackenmobs:ram",
"weight": 1,
"functions": [{
"function": "set_count",
"count": {
"min": 1,
"max": 3
}
},
{
"function": "looting_enchant",
"count": {
"min": 0,
"max": 1
}
}
]
}]
}]
}