forked from ACGaming/Spackenmobs
massive cleanup
damn this code was shit
This commit is contained in:
parent
373ab78823
commit
484236b477
41 changed files with 2517 additions and 3851 deletions
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
|
@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-bin.zip
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
package mod.acgaming.spackenmobs;
|
package mod.acgaming.spackenmobs;
|
||||||
|
|
||||||
import mod.acgaming.spackenmobs.events.SurstroemmingSmellsBadEvent;
|
|
||||||
import mod.acgaming.spackenmobs.misc.ModEntities;
|
import mod.acgaming.spackenmobs.misc.ModEntities;
|
||||||
import net.minecraft.creativetab.CreativeTabs;
|
import net.minecraft.creativetab.CreativeTabs;
|
||||||
import net.minecraftforge.common.MinecraftForge;
|
|
||||||
import net.minecraftforge.fml.common.Mod;
|
import net.minecraftforge.fml.common.Mod;
|
||||||
import net.minecraftforge.fml.common.Mod.EventHandler;
|
import net.minecraftforge.fml.common.Mod.EventHandler;
|
||||||
import net.minecraftforge.fml.common.Mod.Instance;
|
import net.minecraftforge.fml.common.Mod.Instance;
|
||||||
|
@ -13,39 +11,34 @@ import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
@Mod(modid = "spackenmobs", version = "RC3", 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 = "RC3";
|
public static final String VERSION = "RC1";
|
||||||
|
|
||||||
public static final CreativeTabs SPACKENMOBS_TAB = new SpackenmobsTab("tabSpackenmobs");
|
public static final CreativeTabs SPACKENMOBS_TAB = new SpackenmobsTab();
|
||||||
|
|
||||||
@Instance
|
@Instance
|
||||||
public static Spackenmobs instance;
|
public static Spackenmobs instance;
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void init(FMLInitializationEvent event)
|
|
||||||
{
|
|
||||||
MinecraftForge.EVENT_BUS.register(new SurstroemmingSmellsBadEvent());
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void postInit(FMLPostInitializationEvent event)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void preInit(FMLPreInitializationEvent event)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void preInitClient(FMLPreInitializationEvent event)
|
public void preInitClient(FMLPreInitializationEvent event) {
|
||||||
{
|
|
||||||
ModEntities.initModels();
|
ModEntities.initModels();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void preInit(FMLPreInitializationEvent event) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void init(FMLInitializationEvent event) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void postInit(FMLPostInitializationEvent event) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -6,17 +6,14 @@ 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() {
|
||||||
public SpackenmobsTab(String name)
|
super(Spackenmobs.MODID);
|
||||||
{
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,13 +1,11 @@
|
||||||
package mod.acgaming.spackenmobs.entities;
|
package mod.acgaming.spackenmobs.entities;
|
||||||
|
|
||||||
import net.minecraft.block.BlockJukebox;
|
import net.minecraft.block.BlockJukebox;
|
||||||
import net.minecraft.block.properties.IProperty;
|
|
||||||
import net.minecraft.entity.ai.EntityAIBase;
|
import net.minecraft.entity.ai.EntityAIBase;
|
||||||
import net.minecraft.init.Blocks;
|
import net.minecraft.init.Blocks;
|
||||||
|
|
||||||
// Thanks to Akrivus!
|
// Thanks to Akrivus!
|
||||||
public class EntityAIDance extends EntityAIBase
|
public class EntityAIDance extends EntityAIBase {
|
||||||
{
|
|
||||||
private final EntityJens jens;
|
private final EntityJens jens;
|
||||||
|
|
||||||
private final int searchRadius;
|
private final int searchRadius;
|
||||||
|
@ -16,36 +14,29 @@ public class EntityAIDance extends EntityAIBase
|
||||||
|
|
||||||
private int danceStage = 0;
|
private int danceStage = 0;
|
||||||
|
|
||||||
public EntityAIDance(EntityJens jens, int searchRadius)
|
public EntityAIDance(EntityJens jens, int searchRadius) {
|
||||||
{
|
|
||||||
this.jens = jens;
|
this.jens = jens;
|
||||||
this.searchRadius = searchRadius;
|
this.searchRadius = searchRadius;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void resetTask()
|
public void resetTask() {
|
||||||
{
|
|
||||||
this.lastDanceMoveTime = 0;
|
this.lastDanceMoveTime = 0;
|
||||||
this.danceStage = 0;
|
this.danceStage = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldContinueExecuting()
|
public boolean shouldContinueExecuting() {
|
||||||
{
|
|
||||||
return shouldExecute();
|
return shouldExecute();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldExecute()
|
public boolean shouldExecute() {
|
||||||
{
|
for(int x = -this.searchRadius; x <= this.searchRadius; x++) {
|
||||||
for (int x = -this.searchRadius; x <= this.searchRadius; x++)
|
for(int y = -2; y <= 2; y++) {
|
||||||
{
|
for(int z = -this.searchRadius; z <= this.searchRadius; z++) {
|
||||||
for (int y = -2; y <= 2; y++)
|
|
||||||
{
|
|
||||||
for (int z = -this.searchRadius; z <= this.searchRadius; z++)
|
|
||||||
{
|
|
||||||
if(this.jens.world.getBlockState(this.jens.getPosition().add(x, y, z)).getBlock() == Blocks.JUKEBOX
|
if(this.jens.world.getBlockState(this.jens.getPosition().add(x, y, z)).getBlock() == Blocks.JUKEBOX
|
||||||
&& ((Boolean) this.jens.world.getBlockState(this.jens.getPosition().add(x, y, z)).getValue((IProperty) BlockJukebox.HAS_RECORD)).booleanValue())
|
&& this.jens.world.getBlockState(this.jens.getPosition().add(x, y, z)).getValue(BlockJukebox.HAS_RECORD))
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -54,18 +45,14 @@ public class EntityAIDance extends EntityAIBase
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void startExecuting()
|
public void startExecuting() {
|
||||||
{
|
|
||||||
this.danceStage = 1;
|
this.danceStage = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateTask()
|
public void updateTask() {
|
||||||
{
|
if(this.lastDanceMoveTime <= 0) {
|
||||||
if (this.lastDanceMoveTime <= 0)
|
switch(this.danceStage) {
|
||||||
{
|
|
||||||
switch (this.danceStage)
|
|
||||||
{
|
|
||||||
case 1:
|
case 1:
|
||||||
this.danceStage = this.jens.world.rand.nextBoolean() ? 1 : 2;
|
this.danceStage = this.jens.world.rand.nextBoolean() ? 1 : 2;
|
||||||
this.jens.motionY = 0.42D;
|
this.jens.motionY = 0.42D;
|
||||||
|
|
|
@ -1,44 +1,51 @@
|
||||||
package mod.acgaming.spackenmobs.entities;
|
package mod.acgaming.spackenmobs.entities;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
import mod.acgaming.spackenmobs.misc.ModConfigs;
|
|
||||||
import net.minecraft.entity.ai.EntityAIBase;
|
import net.minecraft.entity.ai.EntityAIBase;
|
||||||
import net.minecraft.entity.item.EntityItem;
|
import net.minecraft.entity.item.EntityItem;
|
||||||
import net.minecraft.item.ItemStack;
|
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
|
import java.util.List;
|
||||||
{
|
|
||||||
private EntityJens jens;
|
|
||||||
private Random rand = new Random();
|
|
||||||
private World world = null;
|
|
||||||
double searchDistance = ModConfigs.Jens_search_distance;
|
|
||||||
|
|
||||||
public EntityAIEatDroppedFish(EntityJens jens)
|
public class EntityAIEatDroppedFish extends EntityAIBase {
|
||||||
{
|
double searchDistance = 10.0D;
|
||||||
|
private final EntityJens jens;
|
||||||
|
private final World world;
|
||||||
|
|
||||||
|
public EntityAIEatDroppedFish(EntityJens jens) {
|
||||||
this.jens = jens;
|
this.jens = jens;
|
||||||
this.world = jens.world;
|
this.world = jens.world;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void eatItem(EntityItem item)
|
public EntityItem getNearbyFood() {
|
||||||
{
|
List<EntityItem> items = getItems();
|
||||||
ItemStack stack = item.getItem();
|
for(EntityItem item : items) {
|
||||||
stack.setCount(stack.getCount() - 1);
|
return item;
|
||||||
if (stack.getCount() == 0)
|
|
||||||
{
|
|
||||||
item.setDead();
|
|
||||||
}
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean execute(EntityJens jens, EntityItem item)
|
List<EntityItem> getItems() {
|
||||||
{
|
return this.world.getEntitiesWithinAABB(EntityItem.class,
|
||||||
if (jens.getNavigator().tryMoveToXYZ(item.posX, item.posY, item.posZ, 1.25D))
|
new AxisAlignedBB(this.jens.posX - this.searchDistance, this.jens.posY - this.searchDistance,
|
||||||
{
|
this.jens.posZ - this.searchDistance, this.jens.posX + this.searchDistance,
|
||||||
if (jens.getDistance(item) < 1.0F)
|
this.jens.posY + this.searchDistance, this.jens.posZ + this.searchDistance));
|
||||||
{
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldExecute() {
|
||||||
|
EntityItem getNearbyFood = getNearbyFood();
|
||||||
|
if(getNearbyFood != null && !this.jens.isChild() && !this.jens.digesting
|
||||||
|
&& this.jens.isFishItem(getNearbyFood.getItem())) {
|
||||||
|
execute(this.jens, getNearbyFood);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
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) {
|
||||||
eatItem(item);
|
eatItem(item);
|
||||||
jens.digestFish();
|
jens.digestFish();
|
||||||
}
|
}
|
||||||
|
@ -46,34 +53,11 @@ public class EntityAIEatDroppedFish extends EntityAIBase
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<EntityItem> getItems()
|
public void eatItem(EntityItem item) {
|
||||||
{
|
ItemStack stack = item.getItem();
|
||||||
return this.world.getEntitiesWithinAABB(EntityItem.class, new AxisAlignedBB(this.jens.posX - this.searchDistance, this.jens.posY - this.searchDistance, this.jens.posZ - this.searchDistance,
|
stack.setCount(stack.getCount() - 1);
|
||||||
this.jens.posX + this.searchDistance, this.jens.posY + this.searchDistance, this.jens.posZ + this.searchDistance));
|
if(stack.getCount() == 0) {
|
||||||
}
|
item.setDead();
|
||||||
|
|
||||||
public EntityItem getNearbyFood()
|
|
||||||
{
|
|
||||||
List<EntityItem> items = getItems();
|
|
||||||
for (EntityItem item : items)
|
|
||||||
{
|
|
||||||
EntityItem stack = item;
|
|
||||||
if (items != null)
|
|
||||||
{
|
|
||||||
return stack;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean shouldExecute()
|
|
||||||
{
|
|
||||||
EntityItem nearbyFood = getNearbyFood();
|
|
||||||
if (nearbyFood != null && !this.jens.isChild() && this.jens.digesting == false && this.jens.isFishItem(nearbyFood.getItem()))
|
|
||||||
{
|
|
||||||
execute(this.jens, nearbyFood);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -1,99 +1,28 @@
|
||||||
package mod.acgaming.spackenmobs.entities;
|
package mod.acgaming.spackenmobs.entities;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
|
|
||||||
import mod.acgaming.spackenmobs.misc.ModSoundEvents;
|
import mod.acgaming.spackenmobs.misc.ModSoundEvents;
|
||||||
import net.minecraft.entity.EntityLiving;
|
|
||||||
import net.minecraft.entity.monster.EntityCreeper;
|
|
||||||
import net.minecraft.entity.monster.EntitySkeleton;
|
import net.minecraft.entity.monster.EntitySkeleton;
|
||||||
import net.minecraft.entity.projectile.EntityArrow;
|
|
||||||
import net.minecraft.entity.projectile.EntitySpectralArrow;
|
|
||||||
import net.minecraft.entity.projectile.EntityTippedArrow;
|
|
||||||
import net.minecraft.init.Items;
|
|
||||||
import net.minecraft.inventory.EntityEquipmentSlot;
|
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
import net.minecraft.util.DamageSource;
|
import net.minecraft.util.DamageSource;
|
||||||
import net.minecraft.util.ResourceLocation;
|
|
||||||
import net.minecraft.util.SoundEvent;
|
import net.minecraft.util.SoundEvent;
|
||||||
import net.minecraft.util.datafix.DataFixer;
|
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraft.world.storage.loot.LootTableList;
|
|
||||||
|
|
||||||
public class EntityApoRed extends EntitySkeleton
|
public class EntityApoRed extends EntitySkeleton {
|
||||||
{
|
public EntityApoRed(World worldIn) {
|
||||||
public static void registerFixesApoRed(DataFixer fixer)
|
|
||||||
{
|
|
||||||
EntityLiving.registerFixesMob(fixer, EntityApoRed.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
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 EntityArrow getArrow(float p_190726_1_)
|
protected SoundEvent getHurtSound(DamageSource damageSourceIn) {
|
||||||
{
|
|
||||||
ItemStack itemstack = this.getItemStackFromSlot(EntityEquipmentSlot.OFFHAND);
|
|
||||||
|
|
||||||
if (itemstack.getItem() == Items.SPECTRAL_ARROW)
|
|
||||||
{
|
|
||||||
EntitySpectralArrow entityspectralarrow = new EntitySpectralArrow(this.world, this);
|
|
||||||
entityspectralarrow.setEnchantmentEffectsFromEntity(this, p_190726_1_);
|
|
||||||
return entityspectralarrow;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
EntityArrow entityarrow = super.getArrow(p_190726_1_);
|
|
||||||
|
|
||||||
if (itemstack.getItem() == Items.TIPPED_ARROW && entityarrow instanceof EntityTippedArrow)
|
|
||||||
{
|
|
||||||
((EntityTippedArrow) entityarrow).setPotionEffect(itemstack);
|
|
||||||
}
|
|
||||||
|
|
||||||
return entityarrow;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected SoundEvent getDeathSound()
|
|
||||||
{
|
|
||||||
return ModSoundEvents.ENTITY_APORED_DEATH;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected SoundEvent getHurtSound(DamageSource damageSourceIn)
|
|
||||||
{
|
|
||||||
return ModSoundEvents.ENTITY_APORED_HURT;
|
return ModSoundEvents.ENTITY_APORED_HURT;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Nullable
|
protected SoundEvent getDeathSound() {
|
||||||
protected ResourceLocation getLootTable()
|
return ModSoundEvents.ENTITY_APORED_DEATH;
|
||||||
{
|
|
||||||
return LootTableList.ENTITIES_SKELETON;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onDeath(DamageSource cause)
|
|
||||||
{
|
|
||||||
super.onDeath(cause);
|
|
||||||
|
|
||||||
if (cause.getTrueSource() instanceof EntityCreeper)
|
|
||||||
{
|
|
||||||
EntityCreeper entitycreeper = (EntityCreeper) cause.getTrueSource();
|
|
||||||
|
|
||||||
if (entitycreeper.getPowered() && entitycreeper.ableToCauseSkullDrop())
|
|
||||||
{
|
|
||||||
entitycreeper.incrementDroppedSkulls();
|
|
||||||
this.entityDropItem(new ItemStack(Items.SKULL, 1, 0), 0.0F);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,23 +1,10 @@
|
||||||
package mod.acgaming.spackenmobs.entities;
|
package mod.acgaming.spackenmobs.entities;
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
|
|
||||||
import mod.acgaming.spackenmobs.misc.ModSoundEvents;
|
import mod.acgaming.spackenmobs.misc.ModSoundEvents;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.EntityAreaEffectCloud;
|
import net.minecraft.entity.EntityAreaEffectCloud;
|
||||||
import net.minecraft.entity.EntityLiving;
|
|
||||||
import net.minecraft.entity.SharedMonsterAttributes;
|
import net.minecraft.entity.SharedMonsterAttributes;
|
||||||
import net.minecraft.entity.ai.EntityAIAttackMelee;
|
import net.minecraft.entity.ai.*;
|
||||||
import net.minecraft.entity.ai.EntityAIAvoidEntity;
|
|
||||||
import net.minecraft.entity.ai.EntityAICreeperSwell;
|
|
||||||
import net.minecraft.entity.ai.EntityAIHurtByTarget;
|
|
||||||
import net.minecraft.entity.ai.EntityAILookIdle;
|
|
||||||
import net.minecraft.entity.ai.EntityAINearestAttackableTarget;
|
|
||||||
import net.minecraft.entity.ai.EntityAISwimming;
|
|
||||||
import net.minecraft.entity.ai.EntityAIWanderAvoidWater;
|
|
||||||
import net.minecraft.entity.ai.EntityAIWatchClosest;
|
|
||||||
import net.minecraft.entity.effect.EntityLightningBolt;
|
import net.minecraft.entity.effect.EntityLightningBolt;
|
||||||
import net.minecraft.entity.monster.EntityCreeper;
|
import net.minecraft.entity.monster.EntityCreeper;
|
||||||
import net.minecraft.entity.monster.EntitySkeleton;
|
import net.minecraft.entity.monster.EntitySkeleton;
|
||||||
|
@ -36,72 +23,59 @@ import net.minecraft.util.DamageSource;
|
||||||
import net.minecraft.util.EnumHand;
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
import net.minecraft.util.SoundEvent;
|
import net.minecraft.util.SoundEvent;
|
||||||
import net.minecraft.util.datafix.DataFixer;
|
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraft.world.storage.loot.LootTableList;
|
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 EntityBakaMitaiCreeper extends EntityCreeper
|
import javax.annotation.Nullable;
|
||||||
{
|
import java.util.Collection;
|
||||||
private static final DataParameter<Integer> STATE = EntityDataManager.<Integer>createKey(EntityBakaMitaiCreeper.class, DataSerializers.VARINT);
|
|
||||||
private static final DataParameter<Boolean> POWERED = EntityDataManager.<Boolean>createKey(EntityBakaMitaiCreeper.class, DataSerializers.BOOLEAN);
|
|
||||||
private static final DataParameter<Boolean> IGNITED = EntityDataManager.<Boolean>createKey(EntityBakaMitaiCreeper.class, DataSerializers.BOOLEAN);
|
|
||||||
|
|
||||||
public static void registerFixesCreeper(DataFixer fixer)
|
|
||||||
{
|
|
||||||
EntityLiving.registerFixesMob(fixer, EntityBakaMitaiCreeper.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
public class EntityBakaMitaiCreeper extends EntityCreeper {
|
||||||
|
private static final DataParameter<Integer> STATE = EntityDataManager.createKey(EntityBakaMitaiCreeper.class, DataSerializers.VARINT);
|
||||||
|
private static final DataParameter<Boolean> POWERED = EntityDataManager.createKey(EntityBakaMitaiCreeper.class, DataSerializers.BOOLEAN);
|
||||||
|
private static final DataParameter<Boolean> IGNITED = EntityDataManager.createKey(EntityBakaMitaiCreeper.class, DataSerializers.BOOLEAN);
|
||||||
private int lastActiveTime;
|
private int lastActiveTime;
|
||||||
private int timeSinceIgnited;
|
private int timeSinceIgnited;
|
||||||
private int fuseTime = 100;
|
private int fuseTime = 100;
|
||||||
private int explosionRadius = 12;
|
private int explosionRadius = 12;
|
||||||
|
|
||||||
private int droppedSkulls;
|
private int droppedSkulls;
|
||||||
|
|
||||||
public EntityBakaMitaiCreeper(World worldIn)
|
public EntityBakaMitaiCreeper(World worldIn) {
|
||||||
{
|
|
||||||
super(worldIn);
|
super(worldIn);
|
||||||
this.setSize(0.6F, 1.7F);
|
this.setSize(0.6F, 1.7F);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean ableToCauseSkullDrop()
|
public boolean ableToCauseSkullDrop() {
|
||||||
{
|
|
||||||
return this.droppedSkulls < 1 && this.world.getGameRules().getBoolean("doMobLoot");
|
return this.droppedSkulls < 1 && this.world.getGameRules().getBoolean("doMobLoot");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void applyEntityAttributes()
|
protected void applyEntityAttributes() {
|
||||||
{
|
|
||||||
super.applyEntityAttributes();
|
super.applyEntityAttributes();
|
||||||
this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(0.25D);
|
this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(0.25D);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean attackEntityAsMob(Entity entityIn)
|
public boolean attackEntityAsMob(Entity entityIn) {
|
||||||
{
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void entityInit()
|
protected void entityInit() {
|
||||||
{
|
|
||||||
super.entityInit();
|
super.entityInit();
|
||||||
this.dataManager.register(STATE, Integer.valueOf(-1));
|
this.dataManager.register(STATE, -1);
|
||||||
this.dataManager.register(POWERED, Boolean.valueOf(false));
|
this.dataManager.register(POWERED, false);
|
||||||
this.dataManager.register(IGNITED, Boolean.valueOf(false));
|
this.dataManager.register(IGNITED, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
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_BAKAMITAICREEPER_BLOW, getSoundCategory(), 1.0F, 1.0F);
|
this.world.playSound(null, getPosition(), ModSoundEvents.ENTITY_SMAVACREEPER_BLOW /*TODO sound missing?*/, getSoundCategory(), 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();
|
||||||
this.spawnLingeringCloud();
|
this.spawnLingeringCloud();
|
||||||
|
@ -109,110 +83,97 @@ public class EntityBakaMitaiCreeper extends EntityCreeper
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void fall(float distance, float damageMultiplier)
|
public void fall(float distance, float damageMultiplier) {
|
||||||
{
|
|
||||||
super.fall(distance, damageMultiplier);
|
super.fall(distance, damageMultiplier);
|
||||||
this.timeSinceIgnited = (int)(this.timeSinceIgnited + distance * 1.5F);
|
this.timeSinceIgnited = (int)(this.timeSinceIgnited + distance * 1.5F);
|
||||||
|
|
||||||
if (this.timeSinceIgnited > this.fuseTime - 5)
|
if(this.timeSinceIgnited > this.fuseTime - 5) {
|
||||||
{
|
|
||||||
this.timeSinceIgnited = this.fuseTime - 5;
|
this.timeSinceIgnited = this.fuseTime - 5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public float getCreeperFlashIntensity(float p_70831_1_)
|
public float getCreeperFlashIntensity(float p_70831_1_) {
|
||||||
{
|
|
||||||
return (this.lastActiveTime + (this.timeSinceIgnited - this.lastActiveTime) * p_70831_1_) / (this.fuseTime - 2);
|
return (this.lastActiveTime + (this.timeSinceIgnited - this.lastActiveTime) * p_70831_1_) / (this.fuseTime - 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getCreeperState()
|
public int getCreeperState() {
|
||||||
{
|
return this.dataManager.get(STATE);
|
||||||
return this.dataManager.get(STATE).intValue();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected SoundEvent getDeathSound()
|
public void setCreeperState(int state) {
|
||||||
{
|
this.dataManager.set(STATE, state);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected SoundEvent getDeathSound() {
|
||||||
return SoundEvents.ENTITY_CREEPER_DEATH;
|
return SoundEvents.ENTITY_CREEPER_DEATH;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected SoundEvent getHurtSound(DamageSource damageSourceIn)
|
protected SoundEvent getHurtSound(DamageSource damageSourceIn) {
|
||||||
{
|
|
||||||
return SoundEvents.ENTITY_CREEPER_HURT;
|
return SoundEvents.ENTITY_CREEPER_HURT;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Nullable
|
@Nullable
|
||||||
protected ResourceLocation getLootTable()
|
protected ResourceLocation getLootTable() {
|
||||||
{
|
|
||||||
return LootTableList.ENTITIES_CREEPER;
|
return LootTableList.ENTITIES_CREEPER;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMaxFallHeight()
|
public int getMaxFallHeight() {
|
||||||
{
|
|
||||||
return this.getAttackTarget() == null ? 3 : 3 + (int)(this.getHealth() - 1.0F);
|
return this.getAttackTarget() == null ? 3 : 3 + (int)(this.getHealth() - 1.0F);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean getPowered()
|
public boolean getPowered() {
|
||||||
{
|
return this.dataManager.get(POWERED);
|
||||||
return this.dataManager.get(POWERED).booleanValue();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasIgnited()
|
public boolean hasIgnited() {
|
||||||
{
|
return this.dataManager.get(IGNITED);
|
||||||
return this.dataManager.get(IGNITED).booleanValue();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void ignite()
|
public void ignite() {
|
||||||
{
|
this.dataManager.set(IGNITED, true);
|
||||||
this.dataManager.set(IGNITED, Boolean.valueOf(true));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void incrementDroppedSkulls()
|
public void incrementDroppedSkulls() {
|
||||||
{
|
|
||||||
++this.droppedSkulls;
|
++this.droppedSkulls;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void initEntityAI()
|
protected void initEntityAI() {
|
||||||
{
|
|
||||||
this.tasks.addTask(1, new EntityAISwimming(this));
|
this.tasks.addTask(1, new EntityAISwimming(this));
|
||||||
this.tasks.addTask(2, new EntityAICreeperSwell(this));
|
this.tasks.addTask(2, new EntityAICreeperSwell(this));
|
||||||
this.tasks.addTask(3, new EntityAIAvoidEntity(this, EntityOcelot.class, 6.0F, 1.0D, 1.2D));
|
this.tasks.addTask(3, new EntityAIAvoidEntity<>(this, EntityOcelot.class, 6.0F, 1.0D, 1.2D));
|
||||||
this.tasks.addTask(4, new EntityAIAttackMelee(this, 1.0D, false));
|
this.tasks.addTask(4, new EntityAIAttackMelee(this, 1.0D, false));
|
||||||
this.tasks.addTask(5, new EntityAIWanderAvoidWater(this, 0.8D));
|
this.tasks.addTask(5, new EntityAIWanderAvoidWater(this, 0.8D));
|
||||||
this.tasks.addTask(6, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F));
|
this.tasks.addTask(6, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F));
|
||||||
this.tasks.addTask(6, new EntityAILookIdle(this));
|
this.tasks.addTask(6, new EntityAILookIdle(this));
|
||||||
this.targetTasks.addTask(1, new EntityAINearestAttackableTarget(this, EntityPlayer.class, true));
|
this.targetTasks.addTask(1, new EntityAINearestAttackableTarget<>(this, EntityPlayer.class, true));
|
||||||
this.targetTasks.addTask(2, new EntityAIHurtByTarget(this, false, new Class[0]));
|
this.targetTasks.addTask(2, new EntityAIHurtByTarget(this, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDeath(DamageSource cause)
|
public void onDeath(DamageSource cause) {
|
||||||
{
|
|
||||||
super.onDeath(cause);
|
super.onDeath(cause);
|
||||||
|
|
||||||
if (this.world.getGameRules().getBoolean("doMobLoot"))
|
if(this.world.getGameRules().getBoolean("doMobLoot")) {
|
||||||
{
|
if(cause.getTrueSource() instanceof EntitySkeleton) {
|
||||||
if (cause.getTrueSource() instanceof EntitySkeleton)
|
|
||||||
{
|
|
||||||
int i = Item.getIdFromItem(Items.RECORD_13);
|
int i = Item.getIdFromItem(Items.RECORD_13);
|
||||||
int j = Item.getIdFromItem(Items.RECORD_WAIT);
|
int j = Item.getIdFromItem(Items.RECORD_WAIT);
|
||||||
int k = i + this.rand.nextInt(j - i + 1);
|
int k = i + this.rand.nextInt(j - i + 1);
|
||||||
this.dropItem(Item.getItemById(k), 1);
|
this.dropItem(Item.getItemById(k), 1);
|
||||||
}
|
}else if(cause.getTrueSource() instanceof EntityBakaMitaiCreeper && cause.getTrueSource() != this && ((EntityBakaMitaiCreeper)cause.getTrueSource()).getPowered()
|
||||||
else if (cause.getTrueSource() instanceof EntityBakaMitaiCreeper && cause.getTrueSource() != this && ((EntityBakaMitaiCreeper) cause.getTrueSource()).getPowered()
|
&& ((EntityBakaMitaiCreeper)cause.getTrueSource()).ableToCauseSkullDrop()) {
|
||||||
&& ((EntityBakaMitaiCreeper) cause.getTrueSource()).ableToCauseSkullDrop())
|
|
||||||
{
|
|
||||||
((EntityBakaMitaiCreeper)cause.getTrueSource()).incrementDroppedSkulls();
|
((EntityBakaMitaiCreeper)cause.getTrueSource()).incrementDroppedSkulls();
|
||||||
this.entityDropItem(new ItemStack(Items.SKULL, 1, 4), 0.0F);
|
this.entityDropItem(new ItemStack(Items.SKULL, 1, 4), 0.0F);
|
||||||
}
|
}
|
||||||
|
@ -220,40 +181,33 @@ public class EntityBakaMitaiCreeper extends EntityCreeper
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onStruckByLightning(EntityLightningBolt lightningBolt)
|
public void onStruckByLightning(EntityLightningBolt lightningBolt) {
|
||||||
{
|
|
||||||
super.onStruckByLightning(lightningBolt);
|
super.onStruckByLightning(lightningBolt);
|
||||||
this.dataManager.set(POWERED, Boolean.valueOf(true));
|
this.dataManager.set(POWERED, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@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 /*TODO sound missing?*/, 1.0F, 1.0F);
|
||||||
this.playSound(ModSoundEvents.ENTITY_BAKAMITAICREEPER_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();
|
||||||
}
|
}
|
||||||
|
@ -263,17 +217,14 @@ public class EntityBakaMitaiCreeper extends EntityCreeper
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean processInteract(EntityPlayer player, EnumHand hand)
|
protected boolean processInteract(EntityPlayer player, EnumHand hand) {
|
||||||
{
|
|
||||||
ItemStack itemstack = player.getHeldItem(hand);
|
ItemStack itemstack = player.getHeldItem(hand);
|
||||||
|
|
||||||
if (itemstack.getItem() == Items.FLINT_AND_STEEL)
|
if(itemstack.getItem() == Items.FLINT_AND_STEEL) {
|
||||||
{
|
|
||||||
this.world.playSound(player, this.posX, this.posY, this.posZ, SoundEvents.ITEM_FLINTANDSTEEL_USE, this.getSoundCategory(), 1.0F, this.rand.nextFloat() * 0.4F + 0.8F);
|
this.world.playSound(player, this.posX, this.posY, this.posZ, SoundEvents.ITEM_FLINTANDSTEEL_USE, this.getSoundCategory(), 1.0F, this.rand.nextFloat() * 0.4F + 0.8F);
|
||||||
player.swingArm(hand);
|
player.swingArm(hand);
|
||||||
|
|
||||||
if (!this.world.isRemote)
|
if(!this.world.isRemote) {
|
||||||
{
|
|
||||||
this.ignite();
|
this.ignite();
|
||||||
itemstack.damageItem(1, player);
|
itemstack.damageItem(1, player);
|
||||||
return true;
|
return true;
|
||||||
|
@ -284,39 +235,27 @@ public class EntityBakaMitaiCreeper extends EntityCreeper
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void readEntityFromNBT(NBTTagCompound compound)
|
public void readEntityFromNBT(NBTTagCompound compound) {
|
||||||
{
|
|
||||||
super.readEntityFromNBT(compound);
|
super.readEntityFromNBT(compound);
|
||||||
this.dataManager.set(POWERED, Boolean.valueOf(compound.getBoolean("powered")));
|
this.dataManager.set(POWERED, compound.getBoolean("powered"));
|
||||||
|
|
||||||
if (compound.hasKey("Fuse", 99))
|
if(compound.hasKey("Fuse", 99)) {
|
||||||
{
|
|
||||||
this.fuseTime = compound.getShort("Fuse");
|
this.fuseTime = compound.getShort("Fuse");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (compound.hasKey("ExplosionRadius", 99))
|
if(compound.hasKey("ExplosionRadius", 99)) {
|
||||||
{
|
|
||||||
this.explosionRadius = compound.getByte("ExplosionRadius");
|
this.explosionRadius = compound.getByte("ExplosionRadius");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (compound.getBoolean("ignited"))
|
if(compound.getBoolean("ignited")) {
|
||||||
{
|
|
||||||
this.ignite();
|
this.ignite();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
private void spawnLingeringCloud() {
|
||||||
public void setCreeperState(int state)
|
|
||||||
{
|
|
||||||
this.dataManager.set(STATE, Integer.valueOf(state));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void spawnLingeringCloud()
|
|
||||||
{
|
|
||||||
Collection<PotionEffect> collection = this.getActivePotionEffects();
|
Collection<PotionEffect> collection = this.getActivePotionEffects();
|
||||||
|
|
||||||
if (!collection.isEmpty())
|
if(!collection.isEmpty()) {
|
||||||
{
|
|
||||||
EntityAreaEffectCloud entityareaeffectcloud = new EntityAreaEffectCloud(this.world, this.posX, this.posY, this.posZ);
|
EntityAreaEffectCloud entityareaeffectcloud = new EntityAreaEffectCloud(this.world, this.posX, this.posY, this.posZ);
|
||||||
entityareaeffectcloud.setRadius(2.5F);
|
entityareaeffectcloud.setRadius(2.5F);
|
||||||
entityareaeffectcloud.setRadiusOnUse(-0.5F);
|
entityareaeffectcloud.setRadiusOnUse(-0.5F);
|
||||||
|
@ -324,8 +263,7 @@ public class EntityBakaMitaiCreeper extends EntityCreeper
|
||||||
entityareaeffectcloud.setDuration(entityareaeffectcloud.getDuration() / 2);
|
entityareaeffectcloud.setDuration(entityareaeffectcloud.getDuration() / 2);
|
||||||
entityareaeffectcloud.setRadiusPerTick(-entityareaeffectcloud.getRadius() / entityareaeffectcloud.getDuration());
|
entityareaeffectcloud.setRadiusPerTick(-entityareaeffectcloud.getRadius() / entityareaeffectcloud.getDuration());
|
||||||
|
|
||||||
for (PotionEffect potioneffect : collection)
|
for(PotionEffect potioneffect : collection) {
|
||||||
{
|
|
||||||
entityareaeffectcloud.addEffect(new PotionEffect(potioneffect));
|
entityareaeffectcloud.addEffect(new PotionEffect(potioneffect));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -334,12 +272,10 @@ public class EntityBakaMitaiCreeper extends EntityCreeper
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void writeEntityToNBT(NBTTagCompound compound)
|
public void writeEntityToNBT(NBTTagCompound compound) {
|
||||||
{
|
|
||||||
super.writeEntityToNBT(compound);
|
super.writeEntityToNBT(compound);
|
||||||
|
|
||||||
if (this.dataManager.get(POWERED).booleanValue())
|
if(this.dataManager.get(POWERED)) {
|
||||||
{
|
|
||||||
compound.setBoolean("powered", true);
|
compound.setBoolean("powered", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,8 @@
|
||||||
package mod.acgaming.spackenmobs.entities;
|
package mod.acgaming.spackenmobs.entities;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
|
|
||||||
import mod.acgaming.spackenmobs.misc.ModSoundEvents;
|
import mod.acgaming.spackenmobs.misc.ModSoundEvents;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.EntityCreature;
|
import net.minecraft.entity.EntityCreature;
|
||||||
import net.minecraft.entity.EntityLiving;
|
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
import net.minecraft.entity.SharedMonsterAttributes;
|
import net.minecraft.entity.SharedMonsterAttributes;
|
||||||
import net.minecraft.entity.ai.EntityAIHurtByTarget;
|
import net.minecraft.entity.ai.EntityAIHurtByTarget;
|
||||||
|
@ -24,77 +19,45 @@ import net.minecraft.util.DamageSource;
|
||||||
import net.minecraft.util.EnumHand;
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
import net.minecraft.util.SoundEvent;
|
import net.minecraft.util.SoundEvent;
|
||||||
import net.minecraft.util.datafix.DataFixer;
|
|
||||||
import net.minecraft.world.DifficultyInstance;
|
import net.minecraft.world.DifficultyInstance;
|
||||||
import net.minecraft.world.EnumDifficulty;
|
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
|
import javax.annotation.Nullable;
|
||||||
{
|
import java.util.UUID;
|
||||||
static class AIHurtByAggressor extends EntityAIHurtByTarget
|
|
||||||
{
|
|
||||||
public AIHurtByAggressor(EntityDrachenlord p_i45828_1_)
|
|
||||||
{
|
|
||||||
super(p_i45828_1_, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void setEntityAttackTarget(EntityCreature creatureIn, EntityLivingBase entityLivingBaseIn)
|
|
||||||
{
|
|
||||||
super.setEntityAttackTarget(creatureIn, entityLivingBaseIn);
|
|
||||||
|
|
||||||
if (creatureIn instanceof EntityDrachenlord)
|
|
||||||
{
|
|
||||||
((EntityDrachenlord) creatureIn).becomeAngryAt(entityLivingBaseIn);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static class AITargetAggressor extends EntityAINearestAttackableTarget<EntityPlayer>
|
|
||||||
{
|
|
||||||
public AITargetAggressor(EntityDrachenlord p_i45829_1_)
|
|
||||||
{
|
|
||||||
super(p_i45829_1_, EntityPlayer.class, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean shouldExecute()
|
|
||||||
{
|
|
||||||
return ((EntityDrachenlord) this.taskOwner).isAngry() && super.shouldExecute();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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(ATTACK_SPEED_BOOST_MODIFIER_UUID, "Attacking speed boost", 0.05D, 0)).setSaved(false);
|
|
||||||
|
|
||||||
public static void registerFixesDrachenlord(DataFixer fixer)
|
|
||||||
{
|
|
||||||
EntityLiving.registerFixesMob(fixer, EntityDrachenlord.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
public class EntityDrachenlord extends EntityZombie {
|
||||||
|
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(
|
||||||
|
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
|
||||||
protected void applyEntityAI()
|
public void setRevengeTarget(@Nullable EntityLivingBase livingBase) {
|
||||||
{
|
super.setRevengeTarget(livingBase);
|
||||||
|
|
||||||
|
if(livingBase != null) {
|
||||||
|
this.angerTargetUUID = livingBase.getUniqueID();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
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);
|
||||||
|
@ -102,162 +65,24 @@ public class EntityDrachenlord extends EntityZombie
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean attackEntityFrom(DamageSource source, float amount)
|
protected void updateAITasks() {
|
||||||
{
|
|
||||||
if (this.isEntityInvulnerable(source))
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Entity entity = source.getTrueSource();
|
|
||||||
|
|
||||||
if (entity instanceof EntityPlayer)
|
|
||||||
{
|
|
||||||
this.becomeAngryAt(entity);
|
|
||||||
}
|
|
||||||
|
|
||||||
return super.attackEntityFrom(source, amount);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void becomeAngryAt(Entity p_70835_1_)
|
|
||||||
{
|
|
||||||
this.angerLevel = 400 + this.rand.nextInt(400);
|
|
||||||
this.randomSoundDelay = this.rand.nextInt(40);
|
|
||||||
|
|
||||||
if (p_70835_1_ instanceof EntityLivingBase)
|
|
||||||
{
|
|
||||||
this.setRevengeTarget((EntityLivingBase) p_70835_1_);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected SoundEvent getAmbientSound()
|
|
||||||
{
|
|
||||||
return ModSoundEvents.ENTITY_DRACHENLORD_AMBIENT;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean getCanSpawnHere()
|
|
||||||
{
|
|
||||||
return this.world.getDifficulty() != EnumDifficulty.PEACEFUL;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected SoundEvent getDeathSound()
|
|
||||||
{
|
|
||||||
return ModSoundEvents.ENTITY_DRACHENLORD_DEATH;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected SoundEvent getHurtSound(DamageSource damageSourceIn)
|
|
||||||
{
|
|
||||||
return ModSoundEvents.ENTITY_DRACHENLORD_HURT;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@Nullable
|
|
||||||
protected ResourceLocation getLootTable()
|
|
||||||
{
|
|
||||||
return LootTableList.ENTITIES_ZOMBIE_PIGMAN;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected ItemStack getSkullDrop()
|
|
||||||
{
|
|
||||||
return ItemStack.EMPTY;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isAngry()
|
|
||||||
{
|
|
||||||
return this.angerLevel > 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isNotColliding()
|
|
||||||
{
|
|
||||||
return this.world.checkNoEntityCollision(this.getEntityBoundingBox(), this) && this.world.getCollisionBoxes(this, this.getEntityBoundingBox()).isEmpty()
|
|
||||||
&& !this.world.containsAnyLiquid(this.getEntityBoundingBox());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isPreventingPlayerRest(EntityPlayer playerIn)
|
|
||||||
{
|
|
||||||
return this.isAngry();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean processInteract(EntityPlayer player, EnumHand hand)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void readEntityFromNBT(NBTTagCompound compound)
|
|
||||||
{
|
|
||||||
super.readEntityFromNBT(compound);
|
|
||||||
this.angerLevel = compound.getShort("Anger");
|
|
||||||
String s = compound.getString("HurtBy");
|
|
||||||
|
|
||||||
if (!s.isEmpty())
|
|
||||||
{
|
|
||||||
this.angerTargetUUID = UUID.fromString(s);
|
|
||||||
EntityPlayer entityplayer = this.world.getPlayerEntityByUUID(this.angerTargetUUID);
|
|
||||||
this.setRevengeTarget(entityplayer);
|
|
||||||
|
|
||||||
if (entityplayer != null)
|
|
||||||
{
|
|
||||||
this.attackingPlayer = entityplayer;
|
|
||||||
this.recentlyHit = this.getRevengeTimer();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void setEquipmentBasedOnDifficulty(DifficultyInstance difficulty)
|
|
||||||
{
|
|
||||||
this.setItemStackToSlot(EntityEquipmentSlot.MAINHAND, new ItemStack(Items.GOLDEN_AXE));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setRevengeTarget(@Nullable
|
|
||||||
EntityLivingBase livingBase)
|
|
||||||
{
|
|
||||||
super.setRevengeTarget(livingBase);
|
|
||||||
|
|
||||||
if (livingBase != null)
|
|
||||||
{
|
|
||||||
this.angerTargetUUID = livingBase.getUniqueID();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
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;
|
||||||
|
@ -268,18 +93,139 @@ public class EntityDrachenlord extends EntityZombie
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void writeEntityToNBT(NBTTagCompound compound)
|
public boolean getCanSpawnHere() {
|
||||||
{
|
return this.world.getDifficulty() != EnumDifficulty.PEACEFUL;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isNotColliding() {
|
||||||
|
return this.world.checkNoEntityCollision(this.getEntityBoundingBox(), this)
|
||||||
|
&& this.world.getCollisionBoxes(this, this.getEntityBoundingBox()).isEmpty()
|
||||||
|
&& !this.world.containsAnyLiquid(this.getEntityBoundingBox());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
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
|
||||||
|
public void readEntityFromNBT(NBTTagCompound compound) {
|
||||||
|
super.readEntityFromNBT(compound);
|
||||||
|
this.angerLevel = compound.getShort("Anger");
|
||||||
|
String s = compound.getString("HurtBy");
|
||||||
|
|
||||||
|
if(!s.isEmpty()) {
|
||||||
|
this.angerTargetUUID = UUID.fromString(s);
|
||||||
|
EntityPlayer entityplayer = this.world.getPlayerEntityByUUID(this.angerTargetUUID);
|
||||||
|
this.setRevengeTarget(entityplayer);
|
||||||
|
|
||||||
|
if(entityplayer != null) {
|
||||||
|
this.attackingPlayer = entityplayer;
|
||||||
|
this.recentlyHit = this.getRevengeTimer();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean attackEntityFrom(DamageSource source, float amount) {
|
||||||
|
if(this.isEntityInvulnerable(source)) {
|
||||||
|
return false;
|
||||||
|
}else {
|
||||||
|
Entity entity = source.getTrueSource();
|
||||||
|
|
||||||
|
if(entity instanceof EntityPlayer) {
|
||||||
|
this.becomeAngryAt(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
return super.attackEntityFrom(source, amount);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void becomeAngryAt(Entity p_70835_1_) {
|
||||||
|
this.angerLevel = 400 + this.rand.nextInt(400);
|
||||||
|
this.randomSoundDelay = this.rand.nextInt(40);
|
||||||
|
|
||||||
|
if(p_70835_1_ instanceof EntityLivingBase) {
|
||||||
|
this.setRevengeTarget((EntityLivingBase)p_70835_1_);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isAngry() {
|
||||||
|
return this.angerLevel > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected SoundEvent getAmbientSound() {
|
||||||
|
return ModSoundEvents.ENTITY_DRACHENLORD_AMBIENT;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected SoundEvent getHurtSound(DamageSource damageSourceIn) {
|
||||||
|
return ModSoundEvents.ENTITY_DRACHENLORD_HURT;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected SoundEvent getDeathSound() {
|
||||||
|
return ModSoundEvents.ENTITY_DRACHENLORD_DEATH;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Nullable
|
||||||
|
protected ResourceLocation getLootTable() {
|
||||||
|
return LootTableList.ENTITIES_ZOMBIE_PIGMAN;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean processInteract(EntityPlayer player, EnumHand hand) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void setEquipmentBasedOnDifficulty(DifficultyInstance difficulty) {
|
||||||
|
this.setItemStackToSlot(EntityEquipmentSlot.MAINHAND, new ItemStack(Items.GOLDEN_AXE));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected ItemStack getSkullDrop() {
|
||||||
|
return ItemStack.EMPTY;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isPreventingPlayerRest(EntityPlayer playerIn) {
|
||||||
|
return this.isAngry();
|
||||||
|
}
|
||||||
|
|
||||||
|
static class AIHurtByAggressor extends EntityAIHurtByTarget {
|
||||||
|
public AIHurtByAggressor(EntityDrachenlord p_i45828_1_) {
|
||||||
|
super(p_i45828_1_, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void setEntityAttackTarget(EntityCreature creatureIn, EntityLivingBase entityLivingBaseIn) {
|
||||||
|
super.setEntityAttackTarget(creatureIn, entityLivingBaseIn);
|
||||||
|
|
||||||
|
if(creatureIn instanceof EntityDrachenlord) {
|
||||||
|
((EntityDrachenlord)creatureIn).becomeAngryAt(entityLivingBaseIn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static class AITargetAggressor extends EntityAINearestAttackableTarget<EntityPlayer> {
|
||||||
|
public AITargetAggressor(EntityDrachenlord p_i45829_1_) {
|
||||||
|
super(p_i45829_1_, EntityPlayer.class, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldExecute() {
|
||||||
|
return ((EntityDrachenlord)this.taskOwner).isAngry() && super.shouldExecute();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -1,19 +1,9 @@
|
||||||
package mod.acgaming.spackenmobs.entities;
|
package mod.acgaming.spackenmobs.entities;
|
||||||
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.entity.EntityAgeable;
|
import net.minecraft.entity.EntityAgeable;
|
||||||
import net.minecraft.entity.ai.EntityAIFollowParent;
|
import net.minecraft.entity.ai.*;
|
||||||
import net.minecraft.entity.ai.EntityAILookIdle;
|
|
||||||
import net.minecraft.entity.ai.EntityAIMate;
|
|
||||||
import net.minecraft.entity.ai.EntityAIPanic;
|
|
||||||
import net.minecraft.entity.ai.EntityAISwimming;
|
|
||||||
import net.minecraft.entity.ai.EntityAITempt;
|
|
||||||
import net.minecraft.entity.ai.EntityAIWanderAvoidWater;
|
|
||||||
import net.minecraft.entity.ai.EntityAIWatchClosest;
|
|
||||||
import net.minecraft.entity.passive.EntityChicken;
|
import net.minecraft.entity.passive.EntityChicken;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.init.Items;
|
import net.minecraft.init.Items;
|
||||||
|
@ -26,12 +16,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
|
import java.util.Set;
|
||||||
{
|
|
||||||
|
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;
|
||||||
|
@ -39,32 +29,7 @@ public class EntityHolzstammhuhn extends EntityChicken
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EntityHolzstammhuhn createChild(EntityAgeable ageable)
|
protected void initEntityAI() {
|
||||||
{
|
|
||||||
return new EntityHolzstammhuhn(this.world);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected SoundEvent getAmbientSound()
|
|
||||||
{
|
|
||||||
return SoundEvents.BLOCK_WOOD_PLACE;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected SoundEvent getDeathSound()
|
|
||||||
{
|
|
||||||
return SoundEvents.BLOCK_WOOD_BREAK;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected SoundEvent getHurtSound(DamageSource damageSourceIn)
|
|
||||||
{
|
|
||||||
return SoundEvents.BLOCK_WOOD_HIT;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
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));
|
||||||
|
@ -76,14 +41,32 @@ 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 void playStepSound(BlockPos pos, Block blockIn)
|
protected SoundEvent getAmbientSound() {
|
||||||
{
|
return SoundEvents.BLOCK_WOOD_PLACE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected SoundEvent getHurtSound(DamageSource damageSourceIn) {
|
||||||
|
return SoundEvents.BLOCK_WOOD_HIT;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected SoundEvent getDeathSound() {
|
||||||
|
return SoundEvents.BLOCK_WOOD_BREAK;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
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
|
||||||
|
public EntityHolzstammhuhn createChild(EntityAgeable ageable) {
|
||||||
|
return new EntityHolzstammhuhn(this.world);
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -1,259 +1,44 @@
|
||||||
package mod.acgaming.spackenmobs.entities;
|
package mod.acgaming.spackenmobs.entities;
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
|
|
||||||
import mod.acgaming.spackenmobs.misc.ModSoundEvents;
|
import mod.acgaming.spackenmobs.misc.ModSoundEvents;
|
||||||
import net.minecraft.entity.Entity;
|
|
||||||
import net.minecraft.entity.EntityAreaEffectCloud;
|
|
||||||
import net.minecraft.entity.EntityLiving;
|
|
||||||
import net.minecraft.entity.SharedMonsterAttributes;
|
|
||||||
import net.minecraft.entity.ai.EntityAIAttackMelee;
|
|
||||||
import net.minecraft.entity.ai.EntityAIAvoidEntity;
|
|
||||||
import net.minecraft.entity.ai.EntityAICreeperSwell;
|
|
||||||
import net.minecraft.entity.ai.EntityAIHurtByTarget;
|
|
||||||
import net.minecraft.entity.ai.EntityAILookIdle;
|
|
||||||
import net.minecraft.entity.ai.EntityAINearestAttackableTarget;
|
|
||||||
import net.minecraft.entity.ai.EntityAISwimming;
|
|
||||||
import net.minecraft.entity.ai.EntityAIWanderAvoidWater;
|
|
||||||
import net.minecraft.entity.ai.EntityAIWatchClosest;
|
|
||||||
import net.minecraft.entity.effect.EntityLightningBolt;
|
|
||||||
import net.minecraft.entity.monster.EntityCreeper;
|
import net.minecraft.entity.monster.EntityCreeper;
|
||||||
import net.minecraft.entity.monster.EntitySkeleton;
|
|
||||||
import net.minecraft.entity.passive.EntityOcelot;
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
|
||||||
import net.minecraft.init.Items;
|
|
||||||
import net.minecraft.init.SoundEvents;
|
|
||||||
import net.minecraft.item.Item;
|
|
||||||
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.potion.PotionEffect;
|
|
||||||
import net.minecraft.util.DamageSource;
|
import net.minecraft.util.DamageSource;
|
||||||
import net.minecraft.util.EnumHand;
|
|
||||||
import net.minecraft.util.ResourceLocation;
|
|
||||||
import net.minecraft.util.SoundEvent;
|
import net.minecraft.util.SoundEvent;
|
||||||
import net.minecraft.util.datafix.DataFixer;
|
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraft.world.storage.loot.LootTableList;
|
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
|
||||||
|
|
||||||
public class EntityIslamist extends EntityCreeper
|
|
||||||
{
|
|
||||||
private static final DataParameter<Integer> STATE = EntityDataManager.<Integer>createKey(EntityIslamist.class, DataSerializers.VARINT);
|
|
||||||
private static final DataParameter<Boolean> POWERED = EntityDataManager.<Boolean>createKey(EntityIslamist.class, DataSerializers.BOOLEAN);
|
|
||||||
private static final DataParameter<Boolean> IGNITED = EntityDataManager.<Boolean>createKey(EntityIslamist.class, DataSerializers.BOOLEAN);
|
|
||||||
|
|
||||||
public static void registerFixesIslamist(DataFixer fixer)
|
|
||||||
{
|
|
||||||
EntityLiving.registerFixesMob(fixer, EntityIslamist.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
private int droppedSkulls;
|
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 boolean ableToCauseSkullDrop()
|
public void onUpdate() {
|
||||||
{
|
if(this.isEntityAlive()) {
|
||||||
return this.droppedSkulls < 1 && this.world.getGameRules().getBoolean("doMobLoot");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void applyEntityAttributes()
|
|
||||||
{
|
|
||||||
super.applyEntityAttributes();
|
|
||||||
this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(0.25D);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean attackEntityAsMob(Entity entityIn)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void entityInit()
|
|
||||||
{
|
|
||||||
super.entityInit();
|
|
||||||
this.dataManager.register(STATE, Integer.valueOf(-1));
|
|
||||||
this.dataManager.register(POWERED, Boolean.valueOf(false));
|
|
||||||
this.dataManager.register(IGNITED, Boolean.valueOf(false));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void explode()
|
|
||||||
{
|
|
||||||
if (!this.world.isRemote)
|
|
||||||
{
|
|
||||||
boolean flag = net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.world, this);
|
|
||||||
float f = this.getPowered() ? 2.0F : 1.0F;
|
|
||||||
this.dead = true;
|
|
||||||
this.world.playSound(null, getPosition(), ModSoundEvents.ENTITY_ISLAMIST_BLOW, getSoundCategory(), 2.0F, 1.0F);
|
|
||||||
this.world.createExplosion(this, this.posX, this.posY, this.posZ, this.explosionRadius * f, flag);
|
|
||||||
this.setDead();
|
|
||||||
this.spawnLingeringCloud();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void fall(float distance, float damageMultiplier)
|
|
||||||
{
|
|
||||||
super.fall(distance, damageMultiplier);
|
|
||||||
this.timeSinceIgnited = (int) (this.timeSinceIgnited + distance * 1.5F);
|
|
||||||
|
|
||||||
if (this.timeSinceIgnited > this.fuseTime - 5)
|
|
||||||
{
|
|
||||||
this.timeSinceIgnited = this.fuseTime - 5;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected SoundEvent getAmbientSound()
|
|
||||||
{
|
|
||||||
return ModSoundEvents.ENTITY_ISLAMIST_AMBIENT;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@SideOnly(Side.CLIENT)
|
|
||||||
public float getCreeperFlashIntensity(float p_70831_1_)
|
|
||||||
{
|
|
||||||
return (this.lastActiveTime + (this.timeSinceIgnited - this.lastActiveTime) * p_70831_1_) / (this.fuseTime - 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getCreeperState()
|
|
||||||
{
|
|
||||||
return this.dataManager.get(STATE).intValue();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected SoundEvent getHurtSound(DamageSource damageSourceIn)
|
|
||||||
{
|
|
||||||
return ModSoundEvents.ENTITY_ISLAMIST_HURT;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@Nullable
|
|
||||||
protected ResourceLocation getLootTable()
|
|
||||||
{
|
|
||||||
return LootTableList.ENTITIES_CREEPER;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getMaxFallHeight()
|
|
||||||
{
|
|
||||||
return this.getAttackTarget() == null ? 3 : 3 + (int) (this.getHealth() - 1.0F);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean getPowered()
|
|
||||||
{
|
|
||||||
return this.dataManager.get(POWERED).booleanValue();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean hasIgnited()
|
|
||||||
{
|
|
||||||
return this.dataManager.get(IGNITED).booleanValue();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void ignite()
|
|
||||||
{
|
|
||||||
this.dataManager.set(IGNITED, Boolean.valueOf(true));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void incrementDroppedSkulls()
|
|
||||||
{
|
|
||||||
++this.droppedSkulls;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void initEntityAI()
|
|
||||||
{
|
|
||||||
this.tasks.addTask(1, new EntityAISwimming(this));
|
|
||||||
this.tasks.addTask(2, new EntityAICreeperSwell(this));
|
|
||||||
this.tasks.addTask(3, new EntityAIAvoidEntity(this, EntityOcelot.class, 6.0F, 1.0D, 1.2D));
|
|
||||||
this.tasks.addTask(4, new EntityAIAttackMelee(this, 1.0D, false));
|
|
||||||
this.tasks.addTask(5, new EntityAIWanderAvoidWater(this, 0.8D));
|
|
||||||
this.tasks.addTask(6, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F));
|
|
||||||
this.tasks.addTask(6, new EntityAILookIdle(this));
|
|
||||||
this.targetTasks.addTask(1, new EntityAINearestAttackableTarget(this, EntityPlayer.class, true));
|
|
||||||
this.targetTasks.addTask(2, new EntityAIHurtByTarget(this, false, new Class[0]));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onDeath(DamageSource cause)
|
|
||||||
{
|
|
||||||
super.onDeath(cause);
|
|
||||||
|
|
||||||
if (this.world.getGameRules().getBoolean("doMobLoot"))
|
|
||||||
{
|
|
||||||
if (cause.getTrueSource() instanceof EntitySkeleton)
|
|
||||||
{
|
|
||||||
int i = Item.getIdFromItem(Items.RECORD_13);
|
|
||||||
int j = Item.getIdFromItem(Items.RECORD_WAIT);
|
|
||||||
int k = i + this.rand.nextInt(j - i + 1);
|
|
||||||
this.dropItem(Item.getItemById(k), 1);
|
|
||||||
}
|
|
||||||
else if (cause.getTrueSource() instanceof EntityIslamist && cause.getTrueSource() != this && ((EntityIslamist) cause.getTrueSource()).getPowered()
|
|
||||||
&& ((EntityIslamist) cause.getTrueSource()).ableToCauseSkullDrop())
|
|
||||||
{
|
|
||||||
((EntityIslamist) cause.getTrueSource()).incrementDroppedSkulls();
|
|
||||||
this.entityDropItem(new ItemStack(Items.SKULL, 1, 4), 0.0F);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onStruckByLightning(EntityLightningBolt lightningBolt)
|
|
||||||
{
|
|
||||||
super.onStruckByLightning(lightningBolt);
|
|
||||||
this.dataManager.set(POWERED, Boolean.valueOf(true));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onUpdate()
|
|
||||||
{
|
|
||||||
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();
|
||||||
}
|
}
|
||||||
|
@ -262,89 +47,25 @@ public class EntityIslamist extends EntityCreeper
|
||||||
super.onUpdate();
|
super.onUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
private void explode() {
|
||||||
protected boolean processInteract(EntityPlayer player, EnumHand hand)
|
if(!this.world.isRemote) {
|
||||||
{
|
boolean flag = net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.world, this);
|
||||||
ItemStack itemstack = player.getHeldItem(hand);
|
float f = this.getPowered() ? 2.0F : 1.0F;
|
||||||
|
this.dead = true;
|
||||||
if (itemstack.getItem() == Items.FLINT_AND_STEEL)
|
this.world.playSound(null, getPosition(), ModSoundEvents.ENTITY_ISLAMIST_BLOW, getSoundCategory(), 1.0F,
|
||||||
{
|
1.0F);
|
||||||
this.world.playSound(player, this.posX, this.posY, this.posZ, SoundEvents.ITEM_FLINTANDSTEEL_USE, this.getSoundCategory(), 1.0F, this.rand.nextFloat() * 0.4F + 0.8F);
|
this.world.createExplosion(this, this.posX, this.posY, this.posZ, this.explosionRadius * f, flag);
|
||||||
player.swingArm(hand);
|
this.setDead();
|
||||||
|
|
||||||
if (!this.world.isRemote)
|
|
||||||
{
|
|
||||||
this.ignite();
|
|
||||||
itemstack.damageItem(1, player);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return super.processInteract(player, hand);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void readEntityFromNBT(NBTTagCompound compound)
|
|
||||||
{
|
|
||||||
super.readEntityFromNBT(compound);
|
|
||||||
this.dataManager.set(POWERED, Boolean.valueOf(compound.getBoolean("powered")));
|
|
||||||
|
|
||||||
if (compound.hasKey("Fuse", 99))
|
|
||||||
{
|
|
||||||
this.fuseTime = compound.getShort("Fuse");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (compound.hasKey("ExplosionRadius", 99))
|
|
||||||
{
|
|
||||||
this.explosionRadius = compound.getByte("ExplosionRadius");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (compound.getBoolean("ignited"))
|
|
||||||
{
|
|
||||||
this.ignite();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setCreeperState(int state)
|
protected SoundEvent getHurtSound(DamageSource damageSourceIn) {
|
||||||
{
|
return ModSoundEvents.ENTITY_ISLAMIST_HURT;
|
||||||
this.dataManager.set(STATE, Integer.valueOf(state));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void spawnLingeringCloud()
|
|
||||||
{
|
|
||||||
Collection<PotionEffect> collection = this.getActivePotionEffects();
|
|
||||||
|
|
||||||
if (!collection.isEmpty())
|
|
||||||
{
|
|
||||||
EntityAreaEffectCloud entityareaeffectcloud = new EntityAreaEffectCloud(this.world, this.posX, this.posY, this.posZ);
|
|
||||||
entityareaeffectcloud.setRadius(2.5F);
|
|
||||||
entityareaeffectcloud.setRadiusOnUse(-0.5F);
|
|
||||||
entityareaeffectcloud.setWaitTime(10);
|
|
||||||
entityareaeffectcloud.setDuration(entityareaeffectcloud.getDuration() / 2);
|
|
||||||
entityareaeffectcloud.setRadiusPerTick(-entityareaeffectcloud.getRadius() / entityareaeffectcloud.getDuration());
|
|
||||||
|
|
||||||
for (PotionEffect potioneffect : collection)
|
|
||||||
{
|
|
||||||
entityareaeffectcloud.addEffect(new PotionEffect(potioneffect));
|
|
||||||
}
|
|
||||||
|
|
||||||
this.world.spawnEntity(entityareaeffectcloud);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void writeEntityToNBT(NBTTagCompound compound)
|
protected SoundEvent getAmbientSound() {
|
||||||
{
|
return ModSoundEvents.ENTITY_ISLAMIST_AMBIENT;
|
||||||
super.writeEntityToNBT(compound);
|
|
||||||
|
|
||||||
if (this.dataManager.get(POWERED).booleanValue())
|
|
||||||
{
|
|
||||||
compound.setBoolean("powered", true);
|
|
||||||
}
|
|
||||||
|
|
||||||
compound.setShort("Fuse", (short) this.fuseTime);
|
|
||||||
compound.setByte("ExplosionRadius", (byte) this.explosionRadius);
|
|
||||||
compound.setBoolean("ignited", this.hasIgnited());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,9 +1,6 @@
|
||||||
package mod.acgaming.spackenmobs.entities;
|
package mod.acgaming.spackenmobs.entities;
|
||||||
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
|
|
||||||
import mod.acgaming.spackenmobs.misc.ModConfigs;
|
import mod.acgaming.spackenmobs.misc.ModConfigs;
|
||||||
import mod.acgaming.spackenmobs.misc.ModItems;
|
import mod.acgaming.spackenmobs.misc.ModItems;
|
||||||
import mod.acgaming.spackenmobs.misc.ModLootTableList;
|
import mod.acgaming.spackenmobs.misc.ModLootTableList;
|
||||||
|
@ -11,16 +8,8 @@ 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.*;
|
||||||
import net.minecraft.entity.ai.EntityAILookIdle;
|
|
||||||
import net.minecraft.entity.ai.EntityAIMate;
|
|
||||||
import net.minecraft.entity.ai.EntityAIPanic;
|
|
||||||
import net.minecraft.entity.ai.EntityAISwimming;
|
|
||||||
import net.minecraft.entity.ai.EntityAITempt;
|
|
||||||
import net.minecraft.entity.ai.EntityAIWanderAvoidWater;
|
|
||||||
import net.minecraft.entity.ai.EntityAIWatchClosest;
|
|
||||||
import net.minecraft.entity.passive.EntityPig;
|
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;
|
||||||
|
@ -32,90 +21,66 @@ import net.minecraft.network.datasync.DataParameter;
|
||||||
import net.minecraft.network.datasync.DataSerializers;
|
import net.minecraft.network.datasync.DataSerializers;
|
||||||
import net.minecraft.network.datasync.EntityDataManager;
|
import net.minecraft.network.datasync.EntityDataManager;
|
||||||
import net.minecraft.potion.PotionEffect;
|
import net.minecraft.potion.PotionEffect;
|
||||||
import net.minecraft.util.DamageSource;
|
import net.minecraft.util.*;
|
||||||
import net.minecraft.util.EnumHand;
|
|
||||||
import net.minecraft.util.EnumParticleTypes;
|
|
||||||
import net.minecraft.util.ResourceLocation;
|
|
||||||
import net.minecraft.util.SoundEvent;
|
|
||||||
import net.minecraft.util.datafix.DataFixer;
|
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
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 EntityJens extends EntityPig
|
import java.util.Set;
|
||||||
{
|
|
||||||
private static final DataParameter<Boolean> SADDLED = EntityDataManager.<Boolean>createKey(EntityJens.class, DataSerializers.BOOLEAN);
|
|
||||||
private static final DataParameter<Boolean> DIGESTING = EntityDataManager.<Boolean>createKey(EntityJens.class, DataSerializers.BOOLEAN);
|
|
||||||
|
|
||||||
private static final DataParameter<Integer> BOOST_TIME = EntityDataManager.<Integer>createKey(EntityJens.class, DataSerializers.VARINT);
|
public class EntityJens extends EntityPig {
|
||||||
private static final DataParameter<Integer> DIGEST_TIME = EntityDataManager.<Integer>createKey(EntityJens.class, DataSerializers.VARINT);
|
private static final DataParameter<Boolean> SADDLED = EntityDataManager.createKey(EntityJens.class, DataSerializers.BOOLEAN);
|
||||||
|
private static final DataParameter<Boolean> DIGESTING = EntityDataManager.createKey(EntityJens.class, DataSerializers.BOOLEAN);
|
||||||
|
|
||||||
|
private static final DataParameter<Integer> BOOST_TIME = EntityDataManager.createKey(EntityJens.class, DataSerializers.VARINT);
|
||||||
|
private static final DataParameter<Integer> DIGEST_TIME = EntityDataManager.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);
|
||||||
|
|
||||||
public static void registerFixesJens(DataFixer fixer)
|
|
||||||
{
|
|
||||||
EntityLiving.registerFixesMob(fixer, EntityJens.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean boosting;
|
|
||||||
public boolean digesting;
|
public boolean digesting;
|
||||||
|
|
||||||
private int boostTime;
|
|
||||||
private int totalBoostTime;
|
|
||||||
public int digestTime;
|
public int digestTime;
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
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 applyEntityAttributes()
|
protected void applyEntityAttributes() {
|
||||||
{
|
|
||||||
super.applyEntityAttributes();
|
super.applyEntityAttributes();
|
||||||
this.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(20.0D);
|
this.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(20.0D);
|
||||||
this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(0.25D);
|
this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(0.25D);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canBeSteered()
|
public boolean canBeSteered() {
|
||||||
{
|
|
||||||
Entity entity = this.getControllingPassenger();
|
Entity entity = this.getControllingPassenger();
|
||||||
|
|
||||||
if (!(entity instanceof EntityPlayer))
|
if(!(entity instanceof EntityPlayer)) {
|
||||||
{
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}else {
|
||||||
else
|
|
||||||
{
|
|
||||||
EntityPlayer entityplayer = (EntityPlayer)entity;
|
EntityPlayer entityplayer = (EntityPlayer)entity;
|
||||||
return entityplayer.getHeldItemMainhand().getItem() == ModItems.RAM_ON_A_STICK || entityplayer.getHeldItemOffhand().getItem() == ModItems.RAM_ON_A_STICK;
|
return entityplayer.getHeldItemMainhand().getItem() == ModItems.RAM_ON_A_STICK || entityplayer.getHeldItemOffhand().getItem() == ModItems.RAM_ON_A_STICK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EntityJens createChild(EntityAgeable ageable)
|
public EntityJens createChild(EntityAgeable ageable) {
|
||||||
{
|
|
||||||
return new EntityJens(this.world);
|
return new EntityJens(this.world);
|
||||||
}
|
}
|
||||||
|
|
||||||
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.digesting = true;
|
this.digesting = true;
|
||||||
this.dataManager.set(DIGESTING, Boolean.valueOf(true));
|
this.dataManager.set(DIGESTING, true);
|
||||||
|
|
||||||
this.digestTime = (ModConfigs.Jens_digest_time * 20);
|
this.digestTime = (ModConfigs.Jens_digest_time * 20);
|
||||||
this.dataManager.set(DIGEST_TIME, Integer.valueOf(this.digestTime));
|
this.dataManager.set(DIGEST_TIME, this.digestTime);
|
||||||
|
|
||||||
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;
|
||||||
|
@ -127,42 +92,36 @@ public class EntityJens extends EntityPig
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void entityInit()
|
protected void entityInit() {
|
||||||
{
|
|
||||||
super.entityInit();
|
super.entityInit();
|
||||||
this.dataManager.register(SADDLED, Boolean.valueOf(false));
|
this.dataManager.register(SADDLED, false);
|
||||||
this.dataManager.register(DIGESTING, Boolean.valueOf(false));
|
this.dataManager.register(DIGESTING, false);
|
||||||
this.dataManager.register(BOOST_TIME, Integer.valueOf(0));
|
this.dataManager.register(BOOST_TIME, 0);
|
||||||
this.dataManager.register(DIGEST_TIME, Integer.valueOf(0));
|
this.dataManager.register(DIGEST_TIME, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected SoundEvent getAmbientSound()
|
protected SoundEvent getAmbientSound() {
|
||||||
{
|
|
||||||
return ModSoundEvents.ENTITY_JENS_AMBIENT;
|
return ModSoundEvents.ENTITY_JENS_AMBIENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected SoundEvent getDeathSound()
|
protected SoundEvent getDeathSound() {
|
||||||
{
|
|
||||||
return ModSoundEvents.ENTITY_JENS_DEATH;
|
return ModSoundEvents.ENTITY_JENS_DEATH;
|
||||||
}
|
}
|
||||||
|
|
||||||
@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 ResourceLocation getLootTable()
|
protected ResourceLocation getLootTable() {
|
||||||
{
|
|
||||||
return ModLootTableList.ENTITIES_JENS;
|
return ModLootTableList.ENTITIES_JENS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@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 EntityAIDance(this, ModConfigs.Jens_search_distance));
|
this.tasks.addTask(2, new EntityAIDance(this, ModConfigs.Jens_search_distance));
|
||||||
|
@ -177,31 +136,25 @@ public class EntityJens extends EntityPig
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isBreedingItem(ItemStack stack)
|
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 void onLivingUpdate()
|
public void onLivingUpdate() {
|
||||||
{
|
|
||||||
super.onLivingUpdate();
|
super.onLivingUpdate();
|
||||||
|
|
||||||
if (!this.world.isRemote && this.digesting == true && this.digestTime > 0)
|
if(!this.world.isRemote && this.digesting && this.digestTime > 0) {
|
||||||
{
|
|
||||||
this.digestTime--;
|
this.digestTime--;
|
||||||
this.dataManager.set(DIGEST_TIME, Integer.valueOf(this.digestTime));
|
this.dataManager.set(DIGEST_TIME, this.digestTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.world.isRemote && this.digesting == true && this.digestTime <= 0)
|
if(!this.world.isRemote && this.digesting && this.digestTime <= 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;
|
||||||
|
@ -213,59 +166,44 @@ public class EntityJens extends EntityPig
|
||||||
this.clearActivePotions();
|
this.clearActivePotions();
|
||||||
|
|
||||||
this.digesting = false;
|
this.digesting = false;
|
||||||
this.dataManager.set(DIGESTING, Boolean.valueOf(false));
|
this.dataManager.set(DIGESTING, false);
|
||||||
|
|
||||||
this.digestTime = 0;
|
this.digestTime = 0;
|
||||||
this.dataManager.set(DIGEST_TIME, Integer.valueOf(0));
|
this.dataManager.set(DIGEST_TIME, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean processInteract(EntityPlayer player, EnumHand hand)
|
public boolean processInteract(EntityPlayer player, EnumHand hand) {
|
||||||
{
|
if(!super.processInteract(player, hand)) {
|
||||||
if (!super.processInteract(player, hand))
|
|
||||||
{
|
|
||||||
ItemStack itemstack = player.getHeldItem(hand);
|
ItemStack itemstack = player.getHeldItem(hand);
|
||||||
if (itemstack.getItem() == Items.FISH && !this.isChild() && this.digesting == false)
|
if(itemstack.getItem() == Items.FISH && !this.isChild() && !this.digesting) {
|
||||||
{
|
|
||||||
itemstack.shrink(1);
|
itemstack.shrink(1);
|
||||||
digestFish();
|
digestFish();
|
||||||
return true;
|
return true;
|
||||||
}
|
}else if(itemstack.getItem() == Items.NAME_TAG) {
|
||||||
else if (itemstack.getItem() == Items.NAME_TAG)
|
|
||||||
{
|
|
||||||
itemstack.interactWithEntity(player, this, hand);
|
itemstack.interactWithEntity(player, this, hand);
|
||||||
return true;
|
return true;
|
||||||
}
|
}else if(this.getSaddled() && !this.isBeingRidden()) {
|
||||||
else if (this.getSaddled() && !this.isBeingRidden())
|
if(!this.world.isRemote) {
|
||||||
{
|
|
||||||
if (!this.world.isRemote)
|
|
||||||
{
|
|
||||||
player.startRiding(this);
|
player.startRiding(this);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}else if(itemstack.getItem() == Items.SADDLE) {
|
||||||
else if (itemstack.getItem() == Items.SADDLE)
|
|
||||||
{
|
|
||||||
itemstack.interactWithEntity(player, this, hand);
|
itemstack.interactWithEntity(player, this, hand);
|
||||||
this.setCustomNameTag("Reitbarer Jens");
|
this.setCustomNameTag("Reitbarer Jens");
|
||||||
this.setAlwaysRenderNameTag(true);
|
this.setAlwaysRenderNameTag(true);
|
||||||
return true;
|
return true;
|
||||||
}
|
}else {
|
||||||
else
|
|
||||||
{
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}else {
|
||||||
else
|
|
||||||
{
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void readEntityFromNBT(NBTTagCompound compound)
|
public void readEntityFromNBT(NBTTagCompound compound) {
|
||||||
{
|
|
||||||
super.readEntityFromNBT(compound);
|
super.readEntityFromNBT(compound);
|
||||||
this.setSaddled(compound.getBoolean("Saddle"));
|
this.setSaddled(compound.getBoolean("Saddle"));
|
||||||
this.digesting = compound.getBoolean("Digesting");
|
this.digesting = compound.getBoolean("Digesting");
|
||||||
|
@ -273,8 +211,7 @@ public class EntityJens extends EntityPig
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void writeEntityToNBT(NBTTagCompound compound)
|
public void writeEntityToNBT(NBTTagCompound compound) {
|
||||||
{
|
|
||||||
super.writeEntityToNBT(compound);
|
super.writeEntityToNBT(compound);
|
||||||
compound.setBoolean("Saddle", this.getSaddled());
|
compound.setBoolean("Saddle", this.getSaddled());
|
||||||
compound.setBoolean("Digesting", this.digesting);
|
compound.setBoolean("Digesting", this.digesting);
|
||||||
|
|
|
@ -6,29 +6,24 @@ 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 getDeathSound()
|
protected SoundEvent getHurtSound(DamageSource damageSourceIn) {
|
||||||
{
|
return ModSoundEvents.ENTITY_MARCELLDAVIS_HURT;
|
||||||
return ModSoundEvents.ENTITY_MARCELLDAVIS_DEATH;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected SoundEvent getHurtSound(DamageSource damageSourceIn)
|
protected SoundEvent getDeathSound() {
|
||||||
{
|
return ModSoundEvents.ENTITY_MARCELLDAVIS_DEATH;
|
||||||
return ModSoundEvents.ENTITY_MARCELLDAVIS_HURT;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -6,29 +6,24 @@ 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 getDeathSound()
|
protected SoundEvent getHurtSound(DamageSource damageSourceIn) {
|
||||||
{
|
return ModSoundEvents.ENTITY_MRBEAN_HURT;
|
||||||
return ModSoundEvents.ENTITY_MRBEAN_DEATH;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected SoundEvent getHurtSound(DamageSource damageSourceIn)
|
protected SoundEvent getDeathSound() {
|
||||||
{
|
return ModSoundEvents.ENTITY_MRBEAN_DEATH;
|
||||||
return ModSoundEvents.ENTITY_MRBEAN_HURT;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
File diff suppressed because it is too large
Load diff
|
@ -1,259 +1,46 @@
|
||||||
package mod.acgaming.spackenmobs.entities;
|
package mod.acgaming.spackenmobs.entities;
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
|
|
||||||
import mod.acgaming.spackenmobs.misc.ModSoundEvents;
|
import mod.acgaming.spackenmobs.misc.ModSoundEvents;
|
||||||
import net.minecraft.entity.Entity;
|
|
||||||
import net.minecraft.entity.EntityAreaEffectCloud;
|
|
||||||
import net.minecraft.entity.EntityLiving;
|
|
||||||
import net.minecraft.entity.SharedMonsterAttributes;
|
import net.minecraft.entity.SharedMonsterAttributes;
|
||||||
import net.minecraft.entity.ai.EntityAIAttackMelee;
|
|
||||||
import net.minecraft.entity.ai.EntityAIAvoidEntity;
|
|
||||||
import net.minecraft.entity.ai.EntityAICreeperSwell;
|
|
||||||
import net.minecraft.entity.ai.EntityAIHurtByTarget;
|
|
||||||
import net.minecraft.entity.ai.EntityAILookIdle;
|
|
||||||
import net.minecraft.entity.ai.EntityAINearestAttackableTarget;
|
|
||||||
import net.minecraft.entity.ai.EntityAISwimming;
|
|
||||||
import net.minecraft.entity.ai.EntityAIWanderAvoidWater;
|
|
||||||
import net.minecraft.entity.ai.EntityAIWatchClosest;
|
|
||||||
import net.minecraft.entity.effect.EntityLightningBolt;
|
|
||||||
import net.minecraft.entity.monster.EntityCreeper;
|
import net.minecraft.entity.monster.EntityCreeper;
|
||||||
import net.minecraft.entity.monster.EntitySkeleton;
|
|
||||||
import net.minecraft.entity.passive.EntityOcelot;
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
|
||||||
import net.minecraft.init.Items;
|
|
||||||
import net.minecraft.init.SoundEvents;
|
|
||||||
import net.minecraft.item.Item;
|
|
||||||
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.potion.PotionEffect;
|
|
||||||
import net.minecraft.util.DamageSource;
|
import net.minecraft.util.DamageSource;
|
||||||
import net.minecraft.util.EnumHand;
|
|
||||||
import net.minecraft.util.ResourceLocation;
|
|
||||||
import net.minecraft.util.SoundEvent;
|
import net.minecraft.util.SoundEvent;
|
||||||
import net.minecraft.util.datafix.DataFixer;
|
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraft.world.storage.loot.LootTableList;
|
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
|
||||||
|
|
||||||
public class EntitySmavaCreeper extends EntityCreeper
|
|
||||||
{
|
|
||||||
private static final DataParameter<Integer> STATE = EntityDataManager.<Integer>createKey(EntitySmavaCreeper.class, DataSerializers.VARINT);
|
|
||||||
private static final DataParameter<Boolean> POWERED = EntityDataManager.<Boolean>createKey(EntitySmavaCreeper.class, DataSerializers.BOOLEAN);
|
|
||||||
private static final DataParameter<Boolean> IGNITED = EntityDataManager.<Boolean>createKey(EntitySmavaCreeper.class, DataSerializers.BOOLEAN);
|
|
||||||
|
|
||||||
public static void registerFixesSmavaCreeper(DataFixer fixer)
|
|
||||||
{
|
|
||||||
EntityLiving.registerFixesMob(fixer, EntitySmavaCreeper.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
private int droppedSkulls;
|
public EntitySmavaCreeper(World worldIn) {
|
||||||
|
|
||||||
public EntitySmavaCreeper(World worldIn)
|
|
||||||
{
|
|
||||||
super(worldIn);
|
super(worldIn);
|
||||||
this.setSize(0.6F, 1.7F);
|
setSize(0.6F, 1.7F);
|
||||||
|
getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(0.5D);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean ableToCauseSkullDrop()
|
public void onUpdate() {
|
||||||
{
|
if(this.isEntityAlive()) {
|
||||||
return this.droppedSkulls < 1 && this.world.getGameRules().getBoolean("doMobLoot");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void applyEntityAttributes()
|
|
||||||
{
|
|
||||||
super.applyEntityAttributes();
|
|
||||||
this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(0.5D);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean attackEntityAsMob(Entity entityIn)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void entityInit()
|
|
||||||
{
|
|
||||||
super.entityInit();
|
|
||||||
this.dataManager.register(STATE, Integer.valueOf(-1));
|
|
||||||
this.dataManager.register(POWERED, Boolean.valueOf(false));
|
|
||||||
this.dataManager.register(IGNITED, Boolean.valueOf(false));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void explode()
|
|
||||||
{
|
|
||||||
if (!this.world.isRemote)
|
|
||||||
{
|
|
||||||
boolean flag = net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.world, this);
|
|
||||||
float f = this.getPowered() ? 2.0F : 1.0F;
|
|
||||||
this.dead = true;
|
|
||||||
this.world.playSound(null, getPosition(), ModSoundEvents.ENTITY_SMAVACREEPER_BLOW, getSoundCategory(), 5.0F, 1.0F);
|
|
||||||
this.world.createExplosion(this, this.posX, this.posY, this.posZ, this.explosionRadius * f, flag);
|
|
||||||
this.setDead();
|
|
||||||
this.spawnLingeringCloud();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void fall(float distance, float damageMultiplier)
|
|
||||||
{
|
|
||||||
super.fall(distance, damageMultiplier);
|
|
||||||
this.timeSinceIgnited = (int) (this.timeSinceIgnited + distance * 1.5F);
|
|
||||||
|
|
||||||
if (this.timeSinceIgnited > this.fuseTime - 5)
|
|
||||||
{
|
|
||||||
this.timeSinceIgnited = this.fuseTime - 5;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected SoundEvent getAmbientSound()
|
|
||||||
{
|
|
||||||
return ModSoundEvents.ENTITY_SMAVACREEPER_AMBIENT;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@SideOnly(Side.CLIENT)
|
|
||||||
public float getCreeperFlashIntensity(float p_70831_1_)
|
|
||||||
{
|
|
||||||
return (this.lastActiveTime + (this.timeSinceIgnited - this.lastActiveTime) * p_70831_1_) / (this.fuseTime - 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getCreeperState()
|
|
||||||
{
|
|
||||||
return this.dataManager.get(STATE).intValue();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected SoundEvent getHurtSound(DamageSource damageSourceIn)
|
|
||||||
{
|
|
||||||
return ModSoundEvents.ENTITY_SMAVACREEPER_HURT;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@Nullable
|
|
||||||
protected ResourceLocation getLootTable()
|
|
||||||
{
|
|
||||||
return LootTableList.ENTITIES_CREEPER;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getMaxFallHeight()
|
|
||||||
{
|
|
||||||
return this.getAttackTarget() == null ? 3 : 3 + (int) (this.getHealth() - 1.0F);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean getPowered()
|
|
||||||
{
|
|
||||||
return this.dataManager.get(POWERED).booleanValue();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean hasIgnited()
|
|
||||||
{
|
|
||||||
return this.dataManager.get(IGNITED).booleanValue();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void ignite()
|
|
||||||
{
|
|
||||||
this.dataManager.set(IGNITED, Boolean.valueOf(true));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void incrementDroppedSkulls()
|
|
||||||
{
|
|
||||||
++this.droppedSkulls;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void initEntityAI()
|
|
||||||
{
|
|
||||||
this.tasks.addTask(1, new EntityAISwimming(this));
|
|
||||||
this.tasks.addTask(2, new EntityAICreeperSwell(this));
|
|
||||||
this.tasks.addTask(3, new EntityAIAvoidEntity(this, EntityOcelot.class, 6.0F, 1.0D, 1.2D));
|
|
||||||
this.tasks.addTask(4, new EntityAIAttackMelee(this, 1.0D, false));
|
|
||||||
this.tasks.addTask(5, new EntityAIWanderAvoidWater(this, 0.8D));
|
|
||||||
this.tasks.addTask(6, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F));
|
|
||||||
this.tasks.addTask(6, new EntityAILookIdle(this));
|
|
||||||
this.targetTasks.addTask(1, new EntityAINearestAttackableTarget(this, EntityPlayer.class, true));
|
|
||||||
this.targetTasks.addTask(2, new EntityAIHurtByTarget(this, false, new Class[0]));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onDeath(DamageSource cause)
|
|
||||||
{
|
|
||||||
super.onDeath(cause);
|
|
||||||
|
|
||||||
if (this.world.getGameRules().getBoolean("doMobLoot"))
|
|
||||||
{
|
|
||||||
if (cause.getTrueSource() instanceof EntitySkeleton)
|
|
||||||
{
|
|
||||||
int i = Item.getIdFromItem(Items.RECORD_13);
|
|
||||||
int j = Item.getIdFromItem(Items.RECORD_WAIT);
|
|
||||||
int k = i + this.rand.nextInt(j - i + 1);
|
|
||||||
this.dropItem(Item.getItemById(k), 1);
|
|
||||||
}
|
|
||||||
else if (cause.getTrueSource() instanceof EntitySmavaCreeper && cause.getTrueSource() != this && ((EntitySmavaCreeper) cause.getTrueSource()).getPowered()
|
|
||||||
&& ((EntitySmavaCreeper) cause.getTrueSource()).ableToCauseSkullDrop())
|
|
||||||
{
|
|
||||||
((EntitySmavaCreeper) cause.getTrueSource()).incrementDroppedSkulls();
|
|
||||||
this.entityDropItem(new ItemStack(Items.SKULL, 1, 4), 0.0F);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onStruckByLightning(EntityLightningBolt lightningBolt)
|
|
||||||
{
|
|
||||||
super.onStruckByLightning(lightningBolt);
|
|
||||||
this.dataManager.set(POWERED, Boolean.valueOf(true));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onUpdate()
|
|
||||||
{
|
|
||||||
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();
|
||||||
}
|
}
|
||||||
|
@ -262,89 +49,25 @@ public class EntitySmavaCreeper extends EntityCreeper
|
||||||
super.onUpdate();
|
super.onUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
private void explode() {
|
||||||
protected boolean processInteract(EntityPlayer player, EnumHand hand)
|
if(!this.world.isRemote) {
|
||||||
{
|
boolean flag = net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.world, this);
|
||||||
ItemStack itemstack = player.getHeldItem(hand);
|
float f = this.getPowered() ? 2.0F : 1.0F;
|
||||||
|
this.dead = true;
|
||||||
if (itemstack.getItem() == Items.FLINT_AND_STEEL)
|
this.world.playSound(null, getPosition(), ModSoundEvents.ENTITY_SMAVACREEPER_BLOW, getSoundCategory(), 5.0F,
|
||||||
{
|
1.0F);
|
||||||
this.world.playSound(player, this.posX, this.posY, this.posZ, SoundEvents.ITEM_FLINTANDSTEEL_USE, this.getSoundCategory(), 1.0F, this.rand.nextFloat() * 0.4F + 0.8F);
|
this.world.createExplosion(this, this.posX, this.posY, this.posZ, this.explosionRadius * f, flag);
|
||||||
player.swingArm(hand);
|
this.setDead();
|
||||||
|
|
||||||
if (!this.world.isRemote)
|
|
||||||
{
|
|
||||||
this.ignite();
|
|
||||||
itemstack.damageItem(1, player);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return super.processInteract(player, hand);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void readEntityFromNBT(NBTTagCompound compound)
|
|
||||||
{
|
|
||||||
super.readEntityFromNBT(compound);
|
|
||||||
this.dataManager.set(POWERED, Boolean.valueOf(compound.getBoolean("powered")));
|
|
||||||
|
|
||||||
if (compound.hasKey("Fuse", 99))
|
|
||||||
{
|
|
||||||
this.fuseTime = compound.getShort("Fuse");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (compound.hasKey("ExplosionRadius", 99))
|
|
||||||
{
|
|
||||||
this.explosionRadius = compound.getByte("ExplosionRadius");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (compound.getBoolean("ignited"))
|
|
||||||
{
|
|
||||||
this.ignite();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setCreeperState(int state)
|
protected SoundEvent getHurtSound(DamageSource damageSourceIn) {
|
||||||
{
|
return ModSoundEvents.ENTITY_SMAVACREEPER_HURT;
|
||||||
this.dataManager.set(STATE, Integer.valueOf(state));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void spawnLingeringCloud()
|
|
||||||
{
|
|
||||||
Collection<PotionEffect> collection = this.getActivePotionEffects();
|
|
||||||
|
|
||||||
if (!collection.isEmpty())
|
|
||||||
{
|
|
||||||
EntityAreaEffectCloud entityareaeffectcloud = new EntityAreaEffectCloud(this.world, this.posX, this.posY, this.posZ);
|
|
||||||
entityareaeffectcloud.setRadius(2.5F);
|
|
||||||
entityareaeffectcloud.setRadiusOnUse(-0.5F);
|
|
||||||
entityareaeffectcloud.setWaitTime(10);
|
|
||||||
entityareaeffectcloud.setDuration(entityareaeffectcloud.getDuration() / 2);
|
|
||||||
entityareaeffectcloud.setRadiusPerTick(-entityareaeffectcloud.getRadius() / entityareaeffectcloud.getDuration());
|
|
||||||
|
|
||||||
for (PotionEffect potioneffect : collection)
|
|
||||||
{
|
|
||||||
entityareaeffectcloud.addEffect(new PotionEffect(potioneffect));
|
|
||||||
}
|
|
||||||
|
|
||||||
this.world.spawnEntity(entityareaeffectcloud);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void writeEntityToNBT(NBTTagCompound compound)
|
protected SoundEvent getAmbientSound() {
|
||||||
{
|
return ModSoundEvents.ENTITY_SMAVACREEPER_AMBIENT;
|
||||||
super.writeEntityToNBT(compound);
|
|
||||||
|
|
||||||
if (this.dataManager.get(POWERED).booleanValue())
|
|
||||||
{
|
|
||||||
compound.setBoolean("powered", true);
|
|
||||||
}
|
|
||||||
|
|
||||||
compound.setShort("Fuse", (short) this.fuseTime);
|
|
||||||
compound.setByte("ExplosionRadius", (byte) this.explosionRadius);
|
|
||||||
compound.setBoolean("ignited", this.hasIgnited());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,7 +1,5 @@
|
||||||
package mod.acgaming.spackenmobs.entities;
|
package mod.acgaming.spackenmobs.entities;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.EntityAgeable;
|
import net.minecraft.entity.EntityAgeable;
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
|
@ -18,111 +16,21 @@ 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
|
import java.util.UUID;
|
||||||
{
|
|
||||||
class AIAvoidEntity<T extends Entity> extends EntityAIAvoidEntity<T>
|
|
||||||
{
|
|
||||||
private final EntityWolfMZTE wolf;
|
|
||||||
|
|
||||||
public AIAvoidEntity(EntityWolfMZTE wolfIn, Class<T> p_i47251_3_, float p_i47251_4_, double p_i47251_5_, double p_i47251_7_)
|
public class EntityWolfMZTE extends EntityWolf {
|
||||||
{
|
public EntityWolfMZTE(World worldIn) {
|
||||||
super(wolfIn, p_i47251_3_, p_i47251_4_, p_i47251_5_, p_i47251_7_);
|
|
||||||
this.wolf = wolfIn;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean avoidLlama(EntityLlama p_190854_1_)
|
|
||||||
{
|
|
||||||
return p_190854_1_.getStrength() >= EntityWolfMZTE.this.rand.nextInt(5);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean shouldExecute()
|
|
||||||
{
|
|
||||||
if (super.shouldExecute() && this.closestLivingEntity instanceof EntityLlama)
|
|
||||||
{
|
|
||||||
return !this.wolf.isTamed() && this.avoidLlama((EntityLlama) this.closestLivingEntity);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void startExecuting()
|
|
||||||
{
|
|
||||||
EntityWolfMZTE.this.setAttackTarget((EntityLivingBase) null);
|
|
||||||
super.startExecuting();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void updateTask()
|
|
||||||
{
|
|
||||||
EntityWolfMZTE.this.setAttackTarget((EntityLivingBase) null);
|
|
||||||
super.updateTask();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static final DataParameter<Float> DATA_HEALTH_ID = EntityDataManager.<Float>createKey(EntityWolfMZTE.class, DataSerializers.FLOAT);
|
|
||||||
private static final DataParameter<Boolean> BEGGING = EntityDataManager.<Boolean>createKey(EntityWolfMZTE.class, DataSerializers.BOOLEAN);
|
|
||||||
private static final DataParameter<Integer> COLLAR_COLOR = EntityDataManager.<Integer>createKey(EntityWolfMZTE.class, DataSerializers.VARINT);
|
|
||||||
private float headRotationCourse;
|
|
||||||
private float headRotationCourseOld;
|
|
||||||
private boolean isWet;
|
|
||||||
private boolean isShaking;
|
|
||||||
private float timeWolfIsShaking;
|
|
||||||
|
|
||||||
private float prevTimeWolfIsShaking;
|
|
||||||
|
|
||||||
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 boolean canMateWith(EntityAnimal otherAnimal)
|
public EntityWolfMZTE createChild(EntityAgeable ageable) {
|
||||||
{
|
|
||||||
if (otherAnimal == this)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else if (!this.isTamed())
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else if (!(otherAnimal instanceof EntityWolfMZTE))
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
EntityWolfMZTE entitywolfmzte = (EntityWolfMZTE) otherAnimal;
|
|
||||||
|
|
||||||
if (!entitywolfmzte.isTamed())
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else if (entitywolfmzte.isSitting())
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return this.isInLove() && entitywolfmzte.isInLove();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
@ -131,31 +39,44 @@ public class EntityWolfMZTE extends EntityWolf
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldAttackEntity(EntityLivingBase target, EntityLivingBase owner)
|
public boolean canMateWith(EntityAnimal otherAnimal) {
|
||||||
{
|
if(otherAnimal == this) {
|
||||||
if (!(target instanceof EntityCreeper) && !(target instanceof EntityGhast))
|
return false;
|
||||||
{
|
}else if(!this.isTamed()) {
|
||||||
if (target instanceof EntityWolfMZTE)
|
return false;
|
||||||
{
|
}else if(!(otherAnimal instanceof EntityWolfMZTE)) {
|
||||||
|
return false;
|
||||||
|
}else {
|
||||||
|
EntityWolfMZTE entitywolfmzte = (EntityWolfMZTE)otherAnimal;
|
||||||
|
|
||||||
|
if(!entitywolfmzte.isTamed()) {
|
||||||
|
return false;
|
||||||
|
}else if(entitywolfmzte.isSitting()) {
|
||||||
|
return false;
|
||||||
|
}else {
|
||||||
|
return this.isInLove() && entitywolfmzte.isInLove();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldAttackEntity(EntityLivingBase target, EntityLivingBase owner) {
|
||||||
|
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 && !((EntityPlayer) owner).canAttackPlayer((EntityPlayer) target))
|
if(target instanceof EntityPlayer && owner instanceof EntityPlayer
|
||||||
{
|
&& !((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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,16 +8,12 @@ import net.minecraft.potion.PotionEffect;
|
||||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||||
import net.minecraftforge.fml.common.gameevent.TickEvent.PlayerTickEvent;
|
import net.minecraftforge.fml.common.gameevent.TickEvent.PlayerTickEvent;
|
||||||
|
|
||||||
public class SurstroemmingSmellsBadEvent
|
public class SurstroemmingSmellsBadEvent {
|
||||||
{
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public void onEvent(PlayerTickEvent event)
|
public void onEvent(PlayerTickEvent event) {
|
||||||
{
|
if(event.player != null) {
|
||||||
if (event.player instanceof EntityPlayer)
|
|
||||||
{
|
|
||||||
EntityPlayer player = event.player;
|
EntityPlayer player = event.player;
|
||||||
if (player.inventory.hasItemStack(new ItemStack(ModItems.SURSTROEMMING)))
|
if(player.inventory.hasItemStack(new ItemStack(ModItems.SURSTROEMMING))) {
|
||||||
{
|
|
||||||
player.addPotionEffect(new PotionEffect(MobEffects.NAUSEA, 100));
|
player.addPotionEffect(new PotionEffect(MobEffects.NAUSEA, 100));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,32 +1,26 @@
|
||||||
package mod.acgaming.spackenmobs.events;
|
package mod.acgaming.spackenmobs.events;
|
||||||
|
|
||||||
import org.lwjgl.input.Keyboard;
|
|
||||||
|
|
||||||
import mod.acgaming.spackenmobs.entities.EntityDrachenlord;
|
import mod.acgaming.spackenmobs.entities.EntityDrachenlord;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.util.DamageSource;
|
import net.minecraft.util.DamageSource;
|
||||||
import net.minecraft.util.math.AxisAlignedBB;
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||||
import net.minecraftforge.fml.common.gameevent.InputEvent.KeyInputEvent;
|
import net.minecraftforge.fml.common.gameevent.InputEvent.KeyInputEvent;
|
||||||
|
import org.lwjgl.input.Keyboard;
|
||||||
|
|
||||||
public class TauntDrachenlordEvent
|
public class TauntDrachenlordEvent {
|
||||||
{
|
public static AxisAlignedBB getBoundingBox(double x, double y, double z, int hRadius, int vRadius) {
|
||||||
public static AxisAlignedBB getBoundingBox(double x, double y, double z, int hRadius, int vRadius)
|
|
||||||
{
|
|
||||||
return new AxisAlignedBB(x - hRadius, y - vRadius, z - hRadius, x + hRadius, y + vRadius, z + hRadius);
|
return new AxisAlignedBB(x - hRadius, y - vRadius, z - hRadius, x + hRadius, y + vRadius, z + hRadius);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void makeAngry(EntityPlayer player, EntityDrachenlord drache)
|
public static void makeAngry(EntityPlayer player, EntityDrachenlord drache) {
|
||||||
{
|
|
||||||
drache.attackEntityFrom(DamageSource.causePlayerDamage(player), 0);
|
drache.attackEntityFrom(DamageSource.causePlayerDamage(player), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public void onKeyPress(KeyInputEvent event, EntityDrachenlord drache, EntityPlayer player)
|
public void onKeyPress(KeyInputEvent event, EntityDrachenlord drache, EntityPlayer player) {
|
||||||
{
|
|
||||||
final int aggroRange = 64;
|
final int aggroRange = 64;
|
||||||
if (Keyboard.isKeyDown(Keyboard.KEY_J))
|
if(Keyboard.isKeyDown(Keyboard.KEY_J)) {
|
||||||
{
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,18 +8,15 @@ 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"));
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -2,10 +2,8 @@ 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);
|
||||||
|
|
|
@ -1,42 +1,35 @@
|
||||||
package mod.acgaming.spackenmobs.misc;
|
package mod.acgaming.spackenmobs.misc;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.EnumCreatureType;
|
import net.minecraft.entity.EnumCreatureType;
|
||||||
import net.minecraft.world.biome.Biome;
|
import net.minecraft.world.biome.Biome;
|
||||||
import net.minecraft.world.biome.Biome.SpawnListEntry;
|
import net.minecraft.world.biome.Biome.SpawnListEntry;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
// Thanks to Vazkii!
|
// Thanks to Vazkii!
|
||||||
public class BiomeHelper
|
public class BiomeHelper {
|
||||||
{
|
|
||||||
|
|
||||||
public static Biome[] getBiomesWithCreature(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.CREATURE);
|
|
||||||
for (SpawnListEntry e : spawnList)
|
|
||||||
if (e.entityClass == clazz)
|
|
||||||
{
|
|
||||||
biomes.add(b);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return biomes.toArray(new Biome[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Biome[] getBiomesWithMonster(Class<? extends Entity> clazz)
|
|
||||||
{
|
|
||||||
List<Biome> biomes = new ArrayList<>();
|
|
||||||
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);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return biomes.toArray(new Biome[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Biome[] getBiomesWithCreature(Class<? extends Entity> clazz) {
|
||||||
|
List<Biome> biomes = new ArrayList<>();
|
||||||
|
for(Biome b : Biome.REGISTRY) {
|
||||||
|
List<SpawnListEntry> spawnList = b.getSpawnableList(EnumCreatureType.CREATURE);
|
||||||
|
for(SpawnListEntry e : spawnList)
|
||||||
|
if(e.entityClass == clazz) {
|
||||||
biomes.add(b);
|
biomes.add(b);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,21 +10,7 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||||
|
|
||||||
@Config(modid = "spackenmobs")
|
@Config(modid = "spackenmobs")
|
||||||
@LangKey("spackenmobs.config.title")
|
@LangKey("spackenmobs.config.title")
|
||||||
public class ModConfigs
|
public class ModConfigs {
|
||||||
{
|
|
||||||
@EventBusSubscriber(modid = "spackenmobs")
|
|
||||||
private static class EventHandler
|
|
||||||
{
|
|
||||||
@SubscribeEvent
|
|
||||||
public void onConfigChanged(ConfigChangedEvent.OnConfigChangedEvent event)
|
|
||||||
{
|
|
||||||
if (event.getModID().equals("spackenmobs"))
|
|
||||||
{
|
|
||||||
ConfigManager.sync("spackenmobs", Config.Type.INSTANCE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Name("Allow ApoRed to spawn?")
|
@Name("Allow ApoRed to spawn?")
|
||||||
public static boolean ApoRed_spawn = true;
|
public static boolean ApoRed_spawn = true;
|
||||||
@Name("Allow Baka Mitai Creeper to spawn?")
|
@Name("Allow Baka Mitai Creeper to spawn?")
|
||||||
|
@ -117,4 +103,14 @@ public class ModConfigs
|
||||||
public static int Jens_digest_time = 120;
|
public static int Jens_digest_time = 120;
|
||||||
@Name("Maximum distance in blocks Jens can search:")
|
@Name("Maximum distance in blocks Jens can search:")
|
||||||
public static int Jens_search_distance = 10;
|
public static int Jens_search_distance = 10;
|
||||||
|
|
||||||
|
@EventBusSubscriber(modid = "spackenmobs")
|
||||||
|
private static class EventHandler {
|
||||||
|
@SubscribeEvent
|
||||||
|
public void onConfigChanged(ConfigChangedEvent.OnConfigChangedEvent event) {
|
||||||
|
if(event.getModID().equals("spackenmobs")) {
|
||||||
|
ConfigManager.sync("spackenmobs", Config.Type.INSTANCE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -1,33 +1,11 @@
|
||||||
package mod.acgaming.spackenmobs.misc;
|
package mod.acgaming.spackenmobs.misc;
|
||||||
|
|
||||||
import mod.acgaming.spackenmobs.entities.EntityApoRed;
|
import mod.acgaming.spackenmobs.entities.*;
|
||||||
import mod.acgaming.spackenmobs.entities.EntityBakaMitaiCreeper;
|
import mod.acgaming.spackenmobs.render.*;
|
||||||
import mod.acgaming.spackenmobs.entities.EntityDrachenlord;
|
|
||||||
import mod.acgaming.spackenmobs.entities.EntityHolzstammhuhn;
|
|
||||||
import mod.acgaming.spackenmobs.entities.EntityIslamist;
|
|
||||||
import mod.acgaming.spackenmobs.entities.EntityJens;
|
|
||||||
import mod.acgaming.spackenmobs.entities.EntityMarcellDAvis;
|
|
||||||
import mod.acgaming.spackenmobs.entities.EntityMrBean;
|
|
||||||
import mod.acgaming.spackenmobs.entities.EntitySchalker;
|
|
||||||
import mod.acgaming.spackenmobs.entities.EntitySmavaCreeper;
|
|
||||||
import mod.acgaming.spackenmobs.entities.EntityWolfMZTE;
|
|
||||||
import mod.acgaming.spackenmobs.render.RenderApoRed;
|
|
||||||
import mod.acgaming.spackenmobs.render.RenderBakaMitaiCreeper;
|
|
||||||
import mod.acgaming.spackenmobs.render.RenderDrachenlord;
|
|
||||||
import mod.acgaming.spackenmobs.render.RenderHolzstammhuhn;
|
|
||||||
import mod.acgaming.spackenmobs.render.RenderIslamist;
|
|
||||||
import mod.acgaming.spackenmobs.render.RenderJens;
|
|
||||||
import mod.acgaming.spackenmobs.render.RenderMarcellDAvis;
|
|
||||||
import mod.acgaming.spackenmobs.render.RenderMrBean;
|
|
||||||
import mod.acgaming.spackenmobs.render.RenderSchalker;
|
|
||||||
import mod.acgaming.spackenmobs.render.RenderSmavaCreeper;
|
|
||||||
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);
|
||||||
|
@ -38,6 +16,5 @@ public class ModEntities
|
||||||
RenderingRegistry.registerEntityRenderingHandler(EntitySmavaCreeper.class, RenderSmavaCreeper.FACTORY);
|
RenderingRegistry.registerEntityRenderingHandler(EntitySmavaCreeper.class, RenderSmavaCreeper.FACTORY);
|
||||||
RenderingRegistry.registerEntityRenderingHandler(EntityWolfMZTE.class, RenderWolfMZTE.FACTORY);
|
RenderingRegistry.registerEntityRenderingHandler(EntityWolfMZTE.class, RenderWolfMZTE.FACTORY);
|
||||||
RenderingRegistry.registerEntityRenderingHandler(EntityHolzstammhuhn.class, RenderHolzstammhuhn.FACTORY);
|
RenderingRegistry.registerEntityRenderingHandler(EntityHolzstammhuhn.class, RenderHolzstammhuhn.FACTORY);
|
||||||
RenderingRegistry.registerEntityRenderingHandler(EntityBakaMitaiCreeper.class, RenderBakaMitaiCreeper.FACTORY);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -6,8 +6,7 @@ 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);
|
||||||
|
|
|
@ -1,52 +1,41 @@
|
||||||
package mod.acgaming.spackenmobs.misc;
|
package mod.acgaming.spackenmobs.misc;
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import com.google.common.collect.Sets;
|
public class ModLootTableList {
|
||||||
|
|
||||||
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> 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 EMPTY = register("empty");
|
||||||
public static final ResourceLocation ENTITIES_JENS = register("entities/jens");
|
public static final ResourceLocation ENTITIES_JENS = register("entities/jens");
|
||||||
|
private static final Set<ResourceLocation> READ_ONLY_LOOT_TABLES = Collections.<ResourceLocation>unmodifiableSet(LOOT_TABLES);
|
||||||
|
|
||||||
public static Set<ResourceLocation> getAll()
|
public static Set<ResourceLocation> getAll() {
|
||||||
{
|
|
||||||
return READ_ONLY_LOOT_TABLES;
|
return READ_ONLY_LOOT_TABLES;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ResourceLocation register(ResourceLocation id)
|
public static ResourceLocation register(ResourceLocation id) {
|
||||||
{
|
if(LOOT_TABLES.add(id)) {
|
||||||
if (LOOT_TABLES.add(id))
|
|
||||||
{
|
|
||||||
return id;
|
return id;
|
||||||
}
|
}else {
|
||||||
else
|
|
||||||
{
|
|
||||||
throw new IllegalArgumentException(id + " is already a registered built-in loot table");
|
throw new IllegalArgumentException(id + " is already a registered built-in loot table");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ResourceLocation register(String id)
|
private static ResourceLocation register(String id) {
|
||||||
{
|
|
||||||
return register(new ResourceLocation("spackenmobs", id));
|
return register(new ResourceLocation("spackenmobs", id));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean test()
|
public static boolean test() {
|
||||||
{
|
|
||||||
LootTableManager loottablemanager = new LootTableManager((File)null);
|
LootTableManager loottablemanager = new LootTableManager((File)null);
|
||||||
|
|
||||||
for (ResourceLocation resourcelocation : READ_ONLY_LOOT_TABLES)
|
for(ResourceLocation resourcelocation : READ_ONLY_LOOT_TABLES) {
|
||||||
{
|
if(loottablemanager.getLootTableFromLocation(resourcelocation) == LootTable.EMPTY_LOOT_TABLE) {
|
||||||
if (loottablemanager.getLootTableFromLocation(resourcelocation) == LootTable.EMPTY_LOOT_TABLE)
|
|
||||||
{
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,6 @@ import net.minecraft.potion.Potion;
|
||||||
import net.minecraftforge.fml.common.registry.GameRegistry.ObjectHolder;
|
import net.minecraftforge.fml.common.registry.GameRegistry.ObjectHolder;
|
||||||
|
|
||||||
@ObjectHolder(Spackenmobs.MODID)
|
@ObjectHolder(Spackenmobs.MODID)
|
||||||
public class ModPotions
|
public class ModPotions {
|
||||||
{
|
|
||||||
public static final Potion SURSTROEMMING_DRINK = new ItemPotion("surstroemming_drink", true, 42, 0, 0);
|
public static final Potion SURSTROEMMING_DRINK = new ItemPotion("surstroemming_drink", true, 42, 0, 0);
|
||||||
}
|
}
|
|
@ -6,46 +6,74 @@ 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(
|
||||||
public static final SoundEvent ENTITY_SMAVACREEPER_FUSE = new SoundEvent(new ResourceLocation("spackenmobs:entities.smava_creeper.fuse"));
|
new ResourceLocation("spackenmobs:entities.smava_creeper.fuse"));
|
||||||
public static final SoundEvent ENTITY_SMAVACREEPER_BLOW = new SoundEvent(new ResourceLocation("spackenmobs:entities.smava_creeper.blow"));
|
public static final SoundEvent ENTITY_SMAVACREEPER_BLOW = new SoundEvent(
|
||||||
public static final SoundEvent ENTITY_SMAVACREEPER_HURT = new SoundEvent(new ResourceLocation("spackenmobs:entities.smava_creeper.hurt"));
|
new ResourceLocation("spackenmobs:entities.smava_creeper.blow"));
|
||||||
public static final SoundEvent ENTITY_SMAVACREEPER_AMBIENT = new SoundEvent(new ResourceLocation("spackenmobs:entities.smava_creeper.ambient"));
|
public static final SoundEvent ENTITY_SMAVACREEPER_HURT = new SoundEvent(
|
||||||
|
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(new ResourceLocation("spackenmobs:entities.marcell_davis.ambient"));
|
public static final SoundEvent ENTITY_MARCELLDAVIS_AMBIENT = new SoundEvent(
|
||||||
public static final SoundEvent ENTITY_MARCELLDAVIS_HURT = new SoundEvent(new ResourceLocation("spackenmobs:entities.marcell_davis.hurt"));
|
new ResourceLocation("spackenmobs:entities.marcell_davis.ambient"));
|
||||||
public static final SoundEvent ENTITY_MARCELLDAVIS_DEATH = new SoundEvent(new ResourceLocation("spackenmobs:entities.marcell_davis.death"));
|
public static final SoundEvent ENTITY_MARCELLDAVIS_HURT = new SoundEvent(
|
||||||
|
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(new ResourceLocation("spackenmobs:entities.islamist.fuse"));
|
public static final SoundEvent ENTITY_ISLAMIST_FUSE = new SoundEvent(
|
||||||
public static final SoundEvent ENTITY_ISLAMIST_BLOW = new SoundEvent(new ResourceLocation("spackenmobs:entities.islamist.blow"));
|
new ResourceLocation("spackenmobs:entities.islamist.fuse"));
|
||||||
public static final SoundEvent ENTITY_ISLAMIST_HURT = new SoundEvent(new ResourceLocation("spackenmobs:entities.islamist.hurt"));
|
public static final SoundEvent ENTITY_ISLAMIST_BLOW = new SoundEvent(
|
||||||
public static final SoundEvent ENTITY_ISLAMIST_AMBIENT = new SoundEvent(new ResourceLocation("spackenmobs:entities.islamist.ambient"));
|
new ResourceLocation("spackenmobs:entities.islamist.blow"));
|
||||||
|
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(new ResourceLocation("spackenmobs:entities.apored.ambient"));
|
public static final SoundEvent ENTITY_APORED_AMBIENT = new SoundEvent(
|
||||||
public static final SoundEvent ENTITY_APORED_HURT = new SoundEvent(new ResourceLocation("spackenmobs:entities.apored.hurt"));
|
new ResourceLocation("spackenmobs:entities.apored.ambient"));
|
||||||
public static final SoundEvent ENTITY_APORED_DEATH = new SoundEvent(new ResourceLocation("spackenmobs:entities.apored.death"));
|
public static final SoundEvent ENTITY_APORED_HURT = new SoundEvent(
|
||||||
|
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(new ResourceLocation("spackenmobs:entities.mr_bean.ambient"));
|
public static final SoundEvent ENTITY_MRBEAN_AMBIENT = new SoundEvent(
|
||||||
public static final SoundEvent ENTITY_MRBEAN_HURT = new SoundEvent(new ResourceLocation("spackenmobs:entities.mr_bean.hurt"));
|
new ResourceLocation("spackenmobs:entities.mr_bean.ambient"));
|
||||||
public static final SoundEvent ENTITY_MRBEAN_DEATH = new SoundEvent(new ResourceLocation("spackenmobs:entities.mr_bean.death"));
|
public static final SoundEvent ENTITY_MRBEAN_HURT = new SoundEvent(
|
||||||
|
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(new ResourceLocation("spackenmobs:entities.drachenlord.ambient"));
|
public static final SoundEvent ENTITY_DRACHENLORD_AMBIENT = new SoundEvent(
|
||||||
public static final SoundEvent ENTITY_DRACHENLORD_HURT = new SoundEvent(new ResourceLocation("spackenmobs:entities.drachenlord.hurt"));
|
new ResourceLocation("spackenmobs:entities.drachenlord.ambient"));
|
||||||
public static final SoundEvent ENTITY_DRACHENLORD_DEATH = new SoundEvent(new ResourceLocation("spackenmobs:entities.drachenlord.death"));
|
public static final SoundEvent ENTITY_DRACHENLORD_HURT = new SoundEvent(
|
||||||
public static final SoundEvent ENTITY_DRACHENLORD_ANGRY = new SoundEvent(new ResourceLocation("spackenmobs:entities.drachenlord.angry"));
|
new ResourceLocation("spackenmobs:entities.drachenlord.hurt"));
|
||||||
|
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(new ResourceLocation("spackenmobs:entities.schalker.ambient"));
|
public static final SoundEvent ENTITY_SCHALKER_AMBIENT = new SoundEvent(
|
||||||
public static final SoundEvent ENTITY_SCHALKER_DEATH = new SoundEvent(new ResourceLocation("spackenmobs:entities.schalker.death"));
|
new ResourceLocation("spackenmobs:entities.schalker.ambient"));
|
||||||
public static final SoundEvent ENTITY_SCHALKER_OPEN = new SoundEvent(new ResourceLocation("spackenmobs:entities.schalker.open"));
|
public static final SoundEvent ENTITY_SCHALKER_HURT = new SoundEvent(
|
||||||
public static final SoundEvent ENTITY_SCHALKER_SHOOT = new SoundEvent(new ResourceLocation("spackenmobs:entities.schalker.shoot"));
|
new ResourceLocation("spackenmobs:entities.schalker.hurt"));
|
||||||
|
public static final SoundEvent ENTITY_SCHALKER_DEATH = new SoundEvent(
|
||||||
|
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(new ResourceLocation("spackenmobs:entities.jens.ambient"));
|
public static final SoundEvent ENTITY_JENS_AMBIENT = new SoundEvent(
|
||||||
public static final SoundEvent ENTITY_JENS_HURT = new SoundEvent(new ResourceLocation("spackenmobs:entities.jens.hurt"));
|
new ResourceLocation("spackenmobs:entities.jens.ambient"));
|
||||||
public static final SoundEvent ENTITY_JENS_DEATH = new SoundEvent(new ResourceLocation("spackenmobs:entities.jens.death"));
|
public static final SoundEvent ENTITY_JENS_HURT = new SoundEvent(
|
||||||
public static final SoundEvent ENTITY_JENS_EAT = new SoundEvent(new ResourceLocation("spackenmobs:entities.jens.eat"));
|
new ResourceLocation("spackenmobs:entities.jens.hurt"));
|
||||||
public static final SoundEvent ENTITY_JENS_POOP = new SoundEvent(new ResourceLocation("spackenmobs:entities.jens.poop"));
|
public static final SoundEvent ENTITY_JENS_DEATH = new SoundEvent(
|
||||||
|
new ResourceLocation("spackenmobs:entities.jens.death"));
|
||||||
public static final SoundEvent ENTITY_BAKAMITAICREEPER_FUSE = new SoundEvent(new ResourceLocation("spackenmobs:entities.bakamitai_creeper.fuse"));
|
public static final SoundEvent ENTITY_JENS_EAT = new SoundEvent(
|
||||||
public static final SoundEvent ENTITY_BAKAMITAICREEPER_BLOW = new SoundEvent(new ResourceLocation("spackenmobs:entities.bakamitai_creeper.blow"));
|
new ResourceLocation("spackenmobs:entities.jens.eat"));
|
||||||
|
public static final SoundEvent ENTITY_JENS_POOP = new SoundEvent(
|
||||||
|
new ResourceLocation("spackenmobs:entities.jens.poop"));
|
||||||
}
|
}
|
|
@ -1,23 +1,10 @@
|
||||||
package mod.acgaming.spackenmobs.misc;
|
package mod.acgaming.spackenmobs.misc;
|
||||||
|
|
||||||
import mod.acgaming.spackenmobs.Spackenmobs;
|
import mod.acgaming.spackenmobs.Spackenmobs;
|
||||||
import mod.acgaming.spackenmobs.entities.EntityApoRed;
|
import mod.acgaming.spackenmobs.entities.*;
|
||||||
import mod.acgaming.spackenmobs.entities.EntityBakaMitaiCreeper;
|
import net.minecraft.creativetab.CreativeTabs;
|
||||||
import mod.acgaming.spackenmobs.entities.EntityDrachenlord;
|
|
||||||
import mod.acgaming.spackenmobs.entities.EntityHolzstammhuhn;
|
|
||||||
import mod.acgaming.spackenmobs.entities.EntityIslamist;
|
|
||||||
import mod.acgaming.spackenmobs.entities.EntityJens;
|
|
||||||
import mod.acgaming.spackenmobs.entities.EntityMarcellDAvis;
|
|
||||||
import mod.acgaming.spackenmobs.entities.EntityMrBean;
|
|
||||||
import mod.acgaming.spackenmobs.entities.EntitySchalker;
|
|
||||||
import mod.acgaming.spackenmobs.entities.EntitySmavaCreeper;
|
|
||||||
import mod.acgaming.spackenmobs.entities.EntityWolfMZTE;
|
|
||||||
import net.minecraft.entity.EnumCreatureType;
|
import net.minecraft.entity.EnumCreatureType;
|
||||||
import net.minecraft.entity.monster.EntityCreeper;
|
import net.minecraft.entity.monster.*;
|
||||||
import net.minecraft.entity.monster.EntityPigZombie;
|
|
||||||
import net.minecraft.entity.monster.EntityShulker;
|
|
||||||
import net.minecraft.entity.monster.EntitySkeleton;
|
|
||||||
import net.minecraft.entity.monster.EntityZombie;
|
|
||||||
import net.minecraft.entity.passive.EntityChicken;
|
import net.minecraft.entity.passive.EntityChicken;
|
||||||
import net.minecraft.entity.passive.EntityPig;
|
import net.minecraft.entity.passive.EntityPig;
|
||||||
import net.minecraft.entity.passive.EntityWolf;
|
import net.minecraft.entity.passive.EntityWolf;
|
||||||
|
@ -31,146 +18,124 @@ 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 registerEntities(Register<EntityEntry> event)
|
public static void registerItems(Register<Item> event) {
|
||||||
{
|
final Item[] items = {
|
||||||
int id = 1;
|
new Item().setRegistryName(Spackenmobs.MODID, "ram").setUnlocalizedName(Spackenmobs.MODID + "." + "ram")
|
||||||
|
.setCreativeTab(CreativeTabs.MISC),
|
||||||
// Smava Creeper
|
new Item().setRegistryName(Spackenmobs.MODID, "ram_on_a_stick")
|
||||||
EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:smava_creeper"), EntitySmavaCreeper.class, "smava_creeper", id++, Spackenmobs.instance, 64, 1, true, 7649828, 11053224);
|
.setUnlocalizedName(Spackenmobs.MODID + "." + "ram_on_a_stick")
|
||||||
if (ModConfigs.SmavaCreeper_spawn == true)
|
.setCreativeTab(CreativeTabs.MISC),
|
||||||
{
|
new Item().setRegistryName(Spackenmobs.MODID, "surstroemming")
|
||||||
EntityRegistry.addSpawn(EntitySmavaCreeper.class, ModConfigs.SmavaCreeper_weight, ModConfigs.SmavaCreeper_min, ModConfigs.SmavaCreeper_max, EnumCreatureType.MONSTER,
|
.setUnlocalizedName(Spackenmobs.MODID + "." + "surstroemming")
|
||||||
BiomeHelper.getBiomesWithMonster(EntityCreeper.class));
|
.setCreativeTab(CreativeTabs.MISC)};
|
||||||
}
|
|
||||||
|
|
||||||
// Marcell D'Avis
|
|
||||||
EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:marcell_davis"), EntityMarcellDAvis.class, "marcell_davis", id++, Spackenmobs.instance, 64, 1, true, 15759, 16777215);
|
|
||||||
if (ModConfigs.MarcellDAvis_spawn == true)
|
|
||||||
{
|
|
||||||
EntityRegistry.addSpawn(EntityMarcellDAvis.class, ModConfigs.MarcellDAvis_weight, ModConfigs.MarcellDAvis_min, ModConfigs.MarcellDAvis_max, EnumCreatureType.MONSTER,
|
|
||||||
BiomeHelper.getBiomesWithMonster(EntityZombie.class));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Islamist
|
|
||||||
EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:islamist"), EntityIslamist.class, "islamist", id++, Spackenmobs.instance, 64, 1, true, 15263976, 15211548);
|
|
||||||
if (ModConfigs.Islamist_spawn == true)
|
|
||||||
{
|
|
||||||
EntityRegistry.addSpawn(EntityIslamist.class, ModConfigs.Islamist_weight, ModConfigs.Islamist_min, ModConfigs.Islamist_max, EnumCreatureType.MONSTER,
|
|
||||||
BiomeHelper.getBiomesWithMonster(EntityCreeper.class));
|
|
||||||
}
|
|
||||||
|
|
||||||
// ApoRed
|
|
||||||
EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:apored"), EntityApoRed.class, "apored", id++, Spackenmobs.instance, 64, 1, true, 2039583, 16711680);
|
|
||||||
if (ModConfigs.ApoRed_spawn == true)
|
|
||||||
{
|
|
||||||
EntityRegistry.addSpawn(EntityApoRed.class, ModConfigs.ApoRed_weight, ModConfigs.ApoRed_min, ModConfigs.ApoRed_max, EnumCreatureType.MONSTER,
|
|
||||||
BiomeHelper.getBiomesWithMonster(EntitySkeleton.class));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Mr. Bean
|
|
||||||
EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:mr_bean"), EntityMrBean.class, "mr_bean", id++, Spackenmobs.instance, 64, 1, true, 4802350, 3220238);
|
|
||||||
if (ModConfigs.MrBean_spawn == true)
|
|
||||||
{
|
|
||||||
EntityRegistry.addSpawn(EntityMrBean.class, ModConfigs.MrBean_weight, ModConfigs.MrBean_min, ModConfigs.MrBean_max, EnumCreatureType.MONSTER,
|
|
||||||
BiomeHelper.getBiomesWithMonster(EntityZombie.class));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Drachenlord
|
|
||||||
EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:drachenlord"), EntityDrachenlord.class, "drachenlord", id++, Spackenmobs.instance, 64, 1, true, 15256745, 8738878);
|
|
||||||
if (ModConfigs.Drachenlord_spawn == true)
|
|
||||||
{
|
|
||||||
EntityRegistry.addSpawn(EntityDrachenlord.class, ModConfigs.Drachenlord_weight, ModConfigs.Drachenlord_min, ModConfigs.Drachenlord_max, EnumCreatureType.MONSTER,
|
|
||||||
BiomeHelper.getBiomesWithMonster(EntityPigZombie.class));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Schalker
|
|
||||||
EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:schalker"), EntitySchalker.class, "schalker", id++, Spackenmobs.instance, 64, 1, true, 24745, 16777215);
|
|
||||||
if (ModConfigs.Schalker_spawn == true)
|
|
||||||
{
|
|
||||||
EntityRegistry.addSpawn(EntitySchalker.class, ModConfigs.Schalker_weight, ModConfigs.Schalker_min, ModConfigs.Schalker_max, EnumCreatureType.MONSTER,
|
|
||||||
BiomeHelper.getBiomesWithMonster(EntityShulker.class));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Jens
|
|
||||||
EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:jens"), EntityJens.class, "jens", id++, Spackenmobs.instance, 64, 1, true, 6704526, 6767911);
|
|
||||||
if (ModConfigs.Jens_spawn == true)
|
|
||||||
{
|
|
||||||
EntityRegistry.addSpawn(EntityJens.class, ModConfigs.Jens_weight, ModConfigs.Jens_min, ModConfigs.Jens_max, EnumCreatureType.CREATURE, BiomeHelper.getBiomesWithCreature(EntityPig.class));
|
|
||||||
}
|
|
||||||
|
|
||||||
// WolfMZTE
|
|
||||||
EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:wolfmzte"), EntityWolfMZTE.class, "wolfmzte", id++, Spackenmobs.instance, 64, 1, true, 16711680, 0);
|
|
||||||
if (ModConfigs.WolfMZTE_spawn == true)
|
|
||||||
{
|
|
||||||
EntityRegistry.addSpawn(EntityJens.class, ModConfigs.WolfMZTE_weight, ModConfigs.WolfMZTE_min, ModConfigs.WolfMZTE_max, EnumCreatureType.CREATURE,
|
|
||||||
BiomeHelper.getBiomesWithCreature(EntityWolf.class));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Holzstammhuhn
|
|
||||||
EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:holzstammhuhn"), EntityHolzstammhuhn.class, "holzstammhuhn", id++, Spackenmobs.instance, 64, 1, true, 12096347, 5295899);
|
|
||||||
if (ModConfigs.Holzstammhuhn_spawn == true)
|
|
||||||
{
|
|
||||||
EntityRegistry.addSpawn(EntityJens.class, ModConfigs.Holzstammhuhn_weight, ModConfigs.Holzstammhuhn_min, ModConfigs.Holzstammhuhn_max, EnumCreatureType.CREATURE,
|
|
||||||
BiomeHelper.getBiomesWithCreature(EntityChicken.class));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Baka Mitai Creeper
|
|
||||||
EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:bakamitai_creeper"), EntityBakaMitaiCreeper.class, "bakamitai_creeper", id++, Spackenmobs.instance, 64, 1, true, 826890, 0);
|
|
||||||
if (ModConfigs.BakaMitaiCreeper_spawn == true)
|
|
||||||
{
|
|
||||||
EntityRegistry.addSpawn(EntityBakaMitaiCreeper.class, ModConfigs.BakaMitaiCreeper_weight, ModConfigs.BakaMitaiCreeper_min, ModConfigs.BakaMitaiCreeper_max, EnumCreatureType.MONSTER,
|
|
||||||
BiomeHelper.getBiomesWithMonster(EntityCreeper.class));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@SubscribeEvent
|
|
||||||
public static void registerItems(Register<Item> event)
|
|
||||||
{
|
|
||||||
final Item[] items =
|
|
||||||
{
|
|
||||||
new Item().setRegistryName(Spackenmobs.MODID, "ram").setUnlocalizedName(Spackenmobs.MODID + "." + "ram").setCreativeTab(Spackenmobs.SPACKENMOBS_TAB),
|
|
||||||
new Item().setRegistryName(Spackenmobs.MODID, "ram_on_a_stick").setUnlocalizedName(Spackenmobs.MODID + "." + "ram_on_a_stick").setCreativeTab(Spackenmobs.SPACKENMOBS_TAB),
|
|
||||||
new Item().setRegistryName(Spackenmobs.MODID, "surstroemming").setUnlocalizedName(Spackenmobs.MODID + "." + "surstroemming").setCreativeTab(Spackenmobs.SPACKENMOBS_TAB)
|
|
||||||
};
|
|
||||||
event.getRegistry().registerAll(items);
|
event.getRegistry().registerAll(items);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public static void registerSounds(Register<SoundEvent> event)
|
public static void registerEntities(Register<EntityEntry> event) {
|
||||||
{
|
int id = 1;
|
||||||
|
|
||||||
// Smava Creeper
|
// Smava Creeper
|
||||||
ModSoundEvents.ENTITY_SMAVACREEPER_FUSE.setRegistryName(new ResourceLocation("spackenmobs:entities.smava_creeper.fuse"));
|
EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:smava_creeper"), EntitySmavaCreeper.class,
|
||||||
|
"smava_creeper", id++, Spackenmobs.instance, 64, 1, true, 7649828, 11053224);
|
||||||
|
EntityRegistry.addSpawn(EntitySmavaCreeper.class, 25, 1, 4, EnumCreatureType.MONSTER,
|
||||||
|
BiomeHelper.getBiomesWithMonster(EntityCreeper.class));
|
||||||
|
|
||||||
|
// Marcell D'Avis
|
||||||
|
EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:marcell_davis"), EntityMarcellDAvis.class,
|
||||||
|
"marcell_davis", id++, Spackenmobs.instance, 64, 1, true, 15759, 16777215);
|
||||||
|
EntityRegistry.addSpawn(EntityMarcellDAvis.class, 50, 1, 4, EnumCreatureType.MONSTER,
|
||||||
|
BiomeHelper.getBiomesWithMonster(EntityZombie.class));
|
||||||
|
|
||||||
|
// Islamist
|
||||||
|
EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:islamist"), EntityIslamist.class, "islamist",
|
||||||
|
id++, Spackenmobs.instance, 64, 1, true, 15263976, 15211548);
|
||||||
|
EntityRegistry.addSpawn(EntityIslamist.class, 50, 1, 4, EnumCreatureType.MONSTER,
|
||||||
|
BiomeHelper.getBiomesWithMonster(EntityCreeper.class));
|
||||||
|
|
||||||
|
// ApoRed
|
||||||
|
EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:apored"), EntityApoRed.class, "apored", id++,
|
||||||
|
Spackenmobs.instance, 64, 1, true, 2039583, 16711680);
|
||||||
|
EntityRegistry.addSpawn(EntityApoRed.class, 50, 1, 4, EnumCreatureType.MONSTER,
|
||||||
|
BiomeHelper.getBiomesWithMonster(EntitySkeleton.class));
|
||||||
|
|
||||||
|
// Mr. Bean
|
||||||
|
EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:mr_bean"), EntityMrBean.class, "mr_bean",
|
||||||
|
id++, Spackenmobs.instance, 64, 1, true, 4802350, 3220238);
|
||||||
|
EntityRegistry.addSpawn(EntityMrBean.class, 50, 1, 4, EnumCreatureType.MONSTER,
|
||||||
|
BiomeHelper.getBiomesWithMonster(EntityZombie.class));
|
||||||
|
|
||||||
|
// Drachenlord
|
||||||
|
EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:drachenlord"), EntityDrachenlord.class,
|
||||||
|
"drachenlord", id++, Spackenmobs.instance, 64, 1, true, 15256745, 8738878);
|
||||||
|
EntityRegistry.addSpawn(EntityDrachenlord.class, 50, 1, 4, EnumCreatureType.MONSTER,
|
||||||
|
BiomeHelper.getBiomesWithMonster(EntityPigZombie.class));
|
||||||
|
|
||||||
|
// Schalker
|
||||||
|
EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:schalker"), EntitySchalker.class, "schalker",
|
||||||
|
id++, Spackenmobs.instance, 64, 1, true, 24745, 16777215);
|
||||||
|
EntityRegistry.addSpawn(EntitySchalker.class, 50, 1, 4, EnumCreatureType.MONSTER,
|
||||||
|
BiomeHelper.getBiomesWithMonster(EntityShulker.class));
|
||||||
|
|
||||||
|
// Jens
|
||||||
|
EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:jens"), EntityJens.class, "jens", id++,
|
||||||
|
Spackenmobs.instance, 64, 1, true, 6704526, 6767911);
|
||||||
|
EntityRegistry.addSpawn(EntityJens.class, 50, 1, 4, EnumCreatureType.CREATURE,
|
||||||
|
BiomeHelper.getBiomesWithCreature(EntityPig.class));
|
||||||
|
|
||||||
|
// WolfMZTE
|
||||||
|
EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:wolfmzte"), EntityWolfMZTE.class, "wolfmzte",
|
||||||
|
id++, Spackenmobs.instance, 64, 1, true, 16711680, 0);
|
||||||
|
EntityRegistry.addSpawn(EntityJens.class, 50, 1, 4, EnumCreatureType.CREATURE,
|
||||||
|
BiomeHelper.getBiomesWithCreature(EntityWolf.class));
|
||||||
|
|
||||||
|
// Holzstammhuhn
|
||||||
|
EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:holzstammhuhn"), EntityHolzstammhuhn.class,
|
||||||
|
"holzstammhuhn", id++, Spackenmobs.instance, 64, 1, true, 12096347, 5295899);
|
||||||
|
EntityRegistry.addSpawn(EntityJens.class, 50, 1, 4, EnumCreatureType.CREATURE,
|
||||||
|
BiomeHelper.getBiomesWithCreature(EntityChicken.class));
|
||||||
|
|
||||||
|
// LootTableList.register(EntityJens.LOOT);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SubscribeEvent
|
||||||
|
public static void registerSounds(Register<SoundEvent> event) {
|
||||||
|
// Smava Creeper
|
||||||
|
ModSoundEvents.ENTITY_SMAVACREEPER_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.setRegistryName(new ResourceLocation("spackenmobs:entities.smava_creeper.blow"));
|
ModSoundEvents.ENTITY_SMAVACREEPER_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.setRegistryName(new ResourceLocation("spackenmobs:entities.smava_creeper.hurt"));
|
ModSoundEvents.ENTITY_SMAVACREEPER_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.setRegistryName(new ResourceLocation("spackenmobs:entities.smava_creeper.ambient"));
|
ModSoundEvents.ENTITY_SMAVACREEPER_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
|
||||||
ModSoundEvents.ENTITY_ISLAMIST_FUSE.setRegistryName(new ResourceLocation("spackenmobs:entities.islamist.fuse"));
|
ModSoundEvents.ENTITY_ISLAMIST_FUSE.setRegistryName(new ResourceLocation("spackenmobs:entities.islamist.fuse"));
|
||||||
event.getRegistry().register(ModSoundEvents.ENTITY_ISLAMIST_FUSE);
|
event.getRegistry().register(ModSoundEvents.ENTITY_ISLAMIST_FUSE);
|
||||||
ModSoundEvents.ENTITY_ISLAMIST_BLOW.setRegistryName(new ResourceLocation("spackenmobs:entities.islamist.blow"));
|
|
||||||
event.getRegistry().register(ModSoundEvents.ENTITY_ISLAMIST_BLOW);
|
|
||||||
ModSoundEvents.ENTITY_ISLAMIST_HURT.setRegistryName(new ResourceLocation("spackenmobs:entities.islamist.hurt"));
|
ModSoundEvents.ENTITY_ISLAMIST_HURT.setRegistryName(new ResourceLocation("spackenmobs:entities.islamist.hurt"));
|
||||||
event.getRegistry().register(ModSoundEvents.ENTITY_ISLAMIST_HURT);
|
event.getRegistry().register(ModSoundEvents.ENTITY_ISLAMIST_HURT);
|
||||||
ModSoundEvents.ENTITY_ISLAMIST_AMBIENT.setRegistryName(new ResourceLocation("spackenmobs:entities.islamist.ambient"));
|
|
||||||
event.getRegistry().register(ModSoundEvents.ENTITY_ISLAMIST_AMBIENT);
|
|
||||||
|
|
||||||
// Marcell D'Avis
|
// Marcell D'Avis
|
||||||
ModSoundEvents.ENTITY_MARCELLDAVIS_AMBIENT.setRegistryName(new ResourceLocation("spackenmobs:entities.marcell_davis.ambient"));
|
ModSoundEvents.ENTITY_MARCELLDAVIS_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.setRegistryName(new ResourceLocation("spackenmobs:entities.marcell_davis.hurt"));
|
ModSoundEvents.ENTITY_MARCELLDAVIS_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.setRegistryName(new ResourceLocation("spackenmobs:entities.marcell_davis.death"));
|
ModSoundEvents.ENTITY_MARCELLDAVIS_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.setRegistryName(new ResourceLocation("spackenmobs:entities.mr_bean.ambient"));
|
ModSoundEvents.ENTITY_MRBEAN_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);
|
||||||
|
@ -178,7 +143,8 @@ public class RegHandler
|
||||||
event.getRegistry().register(ModSoundEvents.ENTITY_MRBEAN_DEATH);
|
event.getRegistry().register(ModSoundEvents.ENTITY_MRBEAN_DEATH);
|
||||||
|
|
||||||
// ApoRed
|
// ApoRed
|
||||||
ModSoundEvents.ENTITY_APORED_AMBIENT.setRegistryName(new ResourceLocation("spackenmobs:entities.apored.ambient"));
|
ModSoundEvents.ENTITY_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);
|
||||||
|
@ -186,23 +152,32 @@ public class RegHandler
|
||||||
event.getRegistry().register(ModSoundEvents.ENTITY_APORED_DEATH);
|
event.getRegistry().register(ModSoundEvents.ENTITY_APORED_DEATH);
|
||||||
|
|
||||||
// Drachenlord
|
// Drachenlord
|
||||||
ModSoundEvents.ENTITY_DRACHENLORD_AMBIENT.setRegistryName(new ResourceLocation("spackenmobs:entities.drachenlord.ambient"));
|
ModSoundEvents.ENTITY_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.setRegistryName(new ResourceLocation("spackenmobs:entities.drachenlord.hurt"));
|
ModSoundEvents.ENTITY_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.setRegistryName(new ResourceLocation("spackenmobs:entities.drachenlord.death"));
|
ModSoundEvents.ENTITY_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.setRegistryName(new ResourceLocation("spackenmobs:entities.drachenlord.angry"));
|
ModSoundEvents.ENTITY_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.setRegistryName(new ResourceLocation("spackenmobs:entities.schalker.ambient"));
|
ModSoundEvents.ENTITY_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_DEATH.setRegistryName(new ResourceLocation("spackenmobs:entities.schalker.death"));
|
ModSoundEvents.ENTITY_SCHALKER_HURT.setRegistryName(new ResourceLocation("spackenmobs:entities.schalker.hurt"));
|
||||||
|
event.getRegistry().register(ModSoundEvents.ENTITY_SCHALKER_HURT);
|
||||||
|
ModSoundEvents.ENTITY_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.setRegistryName(new ResourceLocation("spackenmobs:entities.schalker.shoot"));
|
ModSoundEvents.ENTITY_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
|
||||||
|
@ -216,11 +191,5 @@ public class RegHandler
|
||||||
event.getRegistry().register(ModSoundEvents.ENTITY_JENS_EAT);
|
event.getRegistry().register(ModSoundEvents.ENTITY_JENS_EAT);
|
||||||
ModSoundEvents.ENTITY_JENS_POOP.setRegistryName(new ResourceLocation("spackenmobs:entities.jens.poop"));
|
ModSoundEvents.ENTITY_JENS_POOP.setRegistryName(new ResourceLocation("spackenmobs:entities.jens.poop"));
|
||||||
event.getRegistry().register(ModSoundEvents.ENTITY_JENS_POOP);
|
event.getRegistry().register(ModSoundEvents.ENTITY_JENS_POOP);
|
||||||
|
|
||||||
// Baka Mitai Creeper
|
|
||||||
ModSoundEvents.ENTITY_BAKAMITAICREEPER_FUSE.setRegistryName(new ResourceLocation("spackenmobs:entities.bakamitai_creeper.fuse"));
|
|
||||||
event.getRegistry().register(ModSoundEvents.ENTITY_BAKAMITAICREEPER_FUSE);
|
|
||||||
ModSoundEvents.ENTITY_BAKAMITAICREEPER_BLOW.setRegistryName(new ResourceLocation("spackenmobs:entities.bakamitai_creeper.blow"));
|
|
||||||
event.getRegistry().register(ModSoundEvents.ENTITY_BAKAMITAICREEPER_BLOW);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -10,18 +10,16 @@ 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 {
|
||||||
{
|
|
||||||
private static void registerModel(Item item, int meta)
|
|
||||||
{
|
|
||||||
ModelLoader.setCustomModelResourceLocation(item, meta, new ModelResourceLocation(item.getRegistryName(), "inventory"));
|
|
||||||
}
|
|
||||||
|
|
||||||
@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) {
|
||||||
|
ModelLoader.setCustomModelResourceLocation(item, meta,
|
||||||
|
new ModelResourceLocation(item.getRegistryName(), "inventory"));
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -9,14 +9,12 @@ 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);
|
||||||
|
@ -31,38 +29,34 @@ public class ModelSchalker extends ModelBase
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void render(Entity entityIn, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scale)
|
public void setRotationAngles(float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw,
|
||||||
{
|
float headPitch, float scaleFactor, Entity entityIn) {
|
||||||
this.base.render(scale);
|
|
||||||
this.lid.render(scale);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setRotationAngles(float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.head.rotateAngleX = headPitch * 0.017453292F;
|
this.head.rotateAngleX = headPitch * 0.017453292F;
|
||||||
this.head.rotateAngleY = netHeadYaw * 0.017453292F;
|
this.head.rotateAngleY = netHeadYaw * 0.017453292F;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void render(Entity entityIn, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw,
|
||||||
|
float headPitch, float scale) {
|
||||||
|
this.base.render(scale);
|
||||||
|
this.lid.render(scale);
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -15,30 +15,17 @@ 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 {
|
||||||
{
|
|
||||||
public static class Factory implements IRenderFactory<EntityApoRed>
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public Render<? super EntityApoRed> createRenderFor(RenderManager manager)
|
|
||||||
{
|
|
||||||
return new RenderApoRed(manager);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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();
|
||||||
|
private static final ResourceLocation APORED_TEXTURE = new ResourceLocation(
|
||||||
|
"spackenmobs:textures/entities/apored.png");
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
@ -46,14 +33,19 @@ public class RenderApoRed extends RenderSkeleton
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected ResourceLocation getEntityTexture(AbstractSkeleton entity)
|
public void transformHeldFull3DItemLayer() {
|
||||||
{
|
GlStateManager.translate(0.09375F, 0.1875F, 0.0F);
|
||||||
return APORED_TEXTURE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void transformHeldFull3DItemLayer()
|
protected ResourceLocation getEntityTexture(AbstractSkeleton entity) {
|
||||||
{
|
return APORED_TEXTURE;
|
||||||
GlStateManager.translate(0.09375F, 0.1875F, 0.0F);
|
}
|
||||||
|
|
||||||
|
public static class Factory implements IRenderFactory<EntityApoRed> {
|
||||||
|
@Override
|
||||||
|
public Render<? super EntityApoRed> createRenderFor(RenderManager manager) {
|
||||||
|
return new RenderApoRed(manager);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -14,37 +14,21 @@ 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 RenderBakaMitaiCreeper extends RenderCreeper
|
public class RenderBakaMitaiCreeper extends RenderCreeper {
|
||||||
{
|
public static final Factory FACTORY = new Factory();
|
||||||
public static class Factory implements IRenderFactory<EntityBakaMitaiCreeper>
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public Render<? super EntityBakaMitaiCreeper> createRenderFor(RenderManager manager)
|
|
||||||
{
|
|
||||||
return new RenderBakaMitaiCreeper(manager);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static final ResourceLocation CREEPER_TEXTURE = new ResourceLocation("textures/entity/creeper/creeper.png");
|
private static final ResourceLocation CREEPER_TEXTURE = new ResourceLocation("textures/entity/creeper/creeper.png");
|
||||||
|
|
||||||
public static final Factory FACTORY = new Factory();
|
public RenderBakaMitaiCreeper(RenderManager renderManagerIn) {
|
||||||
|
|
||||||
public RenderBakaMitaiCreeper(RenderManager renderManagerIn)
|
|
||||||
{
|
|
||||||
super(renderManagerIn);
|
super(renderManagerIn);
|
||||||
this.addLayer(new LayerCreeperCharge(this));
|
this.addLayer(new LayerCreeperCharge(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int getColorMultiplier(EntityBakaMitaiCreeper entitylivingbaseIn, float lightBrightness, float partialTickTime)
|
protected int getColorMultiplier(EntityBakaMitaiCreeper entitylivingbaseIn, float lightBrightness, float partialTickTime) {
|
||||||
{
|
|
||||||
float f = entitylivingbaseIn.getCreeperFlashIntensity(partialTickTime);
|
float f = entitylivingbaseIn.getCreeperFlashIntensity(partialTickTime);
|
||||||
|
|
||||||
if ((int) (f * 10.0F) % 2 == 0)
|
if((int)(f * 10.0F) % 2 == 0) {
|
||||||
{
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}else {
|
||||||
else
|
|
||||||
{
|
|
||||||
int i = (int)(f * 0.2F * 255.0F);
|
int i = (int)(f * 0.2F * 255.0F);
|
||||||
i = MathHelper.clamp(i, 0, 255);
|
i = MathHelper.clamp(i, 0, 255);
|
||||||
return i << 24 | 822083583;
|
return i << 24 | 822083583;
|
||||||
|
@ -52,13 +36,11 @@ public class RenderBakaMitaiCreeper extends RenderCreeper
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected ResourceLocation getEntityTexture(EntityCreeper entity)
|
protected ResourceLocation getEntityTexture(EntityCreeper entity) {
|
||||||
{
|
|
||||||
return CREEPER_TEXTURE;
|
return CREEPER_TEXTURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void preRenderCallback(EntityBakaMitaiCreeper entitylivingbaseIn, float partialTickTime)
|
protected void preRenderCallback(EntityBakaMitaiCreeper entitylivingbaseIn, float partialTickTime) {
|
||||||
{
|
|
||||||
float f = entitylivingbaseIn.getCreeperFlashIntensity(partialTickTime);
|
float f = entitylivingbaseIn.getCreeperFlashIntensity(partialTickTime);
|
||||||
float f1 = 1.0F + MathHelper.sin(f * 100.0F) * f * 0.01F;
|
float f1 = 1.0F + MathHelper.sin(f * 100.0F) * f * 0.01F;
|
||||||
f = MathHelper.clamp(f, 0.0F, 1.0F);
|
f = MathHelper.clamp(f, 0.0F, 1.0F);
|
||||||
|
@ -68,4 +50,11 @@ public class RenderBakaMitaiCreeper extends RenderCreeper
|
||||||
float f3 = (1.0F + f * 0.1F) / f1;
|
float f3 = (1.0F + f * 0.1F) / f1;
|
||||||
GlStateManager.scale(f2, f3, f2);
|
GlStateManager.scale(f2, f3, f2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static class Factory implements IRenderFactory<EntityBakaMitaiCreeper> {
|
||||||
|
@Override
|
||||||
|
public Render<? super EntityBakaMitaiCreeper> createRenderFor(RenderManager manager) {
|
||||||
|
return new RenderBakaMitaiCreeper(manager);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -13,29 +13,16 @@ 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 {
|
||||||
{
|
|
||||||
public static class Factory implements IRenderFactory<EntityDrachenlord>
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public Render<? super EntityDrachenlord> createRenderFor(RenderManager manager)
|
|
||||||
{
|
|
||||||
return new RenderDrachenlord(manager);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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();
|
||||||
|
private static final ResourceLocation DRACHENLORD_TEXTURE = new ResourceLocation(
|
||||||
|
"spackenmobs:textures/entities/drachenlord.png");
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
@ -43,8 +30,14 @@ 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> {
|
||||||
|
@Override
|
||||||
|
public Render<? super EntityDrachenlord> createRenderFor(RenderManager manager) {
|
||||||
|
return new RenderDrachenlord(manager);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -11,29 +11,24 @@ 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 {
|
||||||
{
|
|
||||||
public static class Factory implements IRenderFactory<EntityHolzstammhuhn>
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public Render<? super EntityHolzstammhuhn> createRenderFor(RenderManager manager)
|
|
||||||
{
|
|
||||||
return new RenderHolzstammhuhn(manager);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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();
|
||||||
|
private static final ResourceLocation HOLZSTAMMHUHN_TEXTURE = new ResourceLocation(
|
||||||
|
"spackenmobs:textures/entities/holzstammhuhn.png");
|
||||||
|
|
||||||
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> {
|
||||||
|
@Override
|
||||||
|
public Render<? super EntityHolzstammhuhn> createRenderFor(RenderManager manager) {
|
||||||
|
return new RenderHolzstammhuhn(manager);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -1,71 +1,36 @@
|
||||||
package mod.acgaming.spackenmobs.render;
|
package mod.acgaming.spackenmobs.render;
|
||||||
|
|
||||||
import mod.acgaming.spackenmobs.entities.EntityIslamist;
|
import mod.acgaming.spackenmobs.entities.EntityIslamist;
|
||||||
import net.minecraft.client.renderer.GlStateManager;
|
|
||||||
import net.minecraft.client.renderer.entity.Render;
|
import net.minecraft.client.renderer.entity.Render;
|
||||||
import net.minecraft.client.renderer.entity.RenderCreeper;
|
import net.minecraft.client.renderer.entity.RenderCreeper;
|
||||||
import net.minecraft.client.renderer.entity.RenderManager;
|
import net.minecraft.client.renderer.entity.RenderManager;
|
||||||
import net.minecraft.client.renderer.entity.layers.LayerCreeperCharge;
|
import net.minecraft.client.renderer.entity.layers.LayerCreeperCharge;
|
||||||
import net.minecraft.entity.monster.EntityCreeper;
|
import net.minecraft.entity.monster.EntityCreeper;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
import net.minecraft.util.math.MathHelper;
|
|
||||||
import net.minecraftforge.fml.client.registry.IRenderFactory;
|
import net.minecraftforge.fml.client.registry.IRenderFactory;
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
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 {
|
||||||
{
|
|
||||||
public static class Factory implements IRenderFactory<EntityIslamist>
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public Render<? super EntityIslamist> createRenderFor(RenderManager manager)
|
|
||||||
{
|
|
||||||
return new RenderIslamist(manager);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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();
|
||||||
|
private static final ResourceLocation ISLAMIST_TEXTURE = new ResourceLocation(
|
||||||
|
"spackenmobs:textures/entities/islamist.png");
|
||||||
|
|
||||||
public RenderIslamist(RenderManager renderManagerIn)
|
public RenderIslamist(RenderManager renderManagerIn) {
|
||||||
{
|
|
||||||
super(renderManagerIn);
|
super(renderManagerIn);
|
||||||
this.addLayer(new LayerCreeperCharge(this));
|
this.addLayer(new LayerCreeperCharge(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int getColorMultiplier(EntityIslamist entitylivingbaseIn, float lightBrightness, float partialTickTime)
|
|
||||||
{
|
|
||||||
float f = entitylivingbaseIn.getCreeperFlashIntensity(partialTickTime);
|
|
||||||
|
|
||||||
if ((int) (f * 10.0F) % 2 == 0)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int i = (int) (f * 0.2F * 255.0F);
|
|
||||||
i = MathHelper.clamp(i, 0, 255);
|
|
||||||
return i << 24 | 822083583;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected ResourceLocation getEntityTexture(EntityCreeper entity)
|
protected ResourceLocation getEntityTexture(EntityCreeper entity) {
|
||||||
{
|
|
||||||
return ISLAMIST_TEXTURE;
|
return ISLAMIST_TEXTURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void preRenderCallback(EntityIslamist entitylivingbaseIn, float partialTickTime)
|
public static class Factory implements IRenderFactory<EntityIslamist> {
|
||||||
{
|
@Override
|
||||||
float f = entitylivingbaseIn.getCreeperFlashIntensity(partialTickTime);
|
public Render<? super EntityIslamist> createRenderFor(RenderManager manager) {
|
||||||
float f1 = 1.0F + MathHelper.sin(f * 100.0F) * f * 0.01F;
|
return new RenderIslamist(manager);
|
||||||
f = MathHelper.clamp(f, 0.0F, 1.0F);
|
}
|
||||||
f = f * f;
|
|
||||||
f = f * f;
|
|
||||||
float f2 = (1.0F + f * 0.4F) * f1;
|
|
||||||
float f3 = (1.0F + f * 0.1F) / f1;
|
|
||||||
GlStateManager.scale(f2, f3, f2);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -11,29 +11,23 @@ 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> {
|
||||||
{
|
public static final Factory FACTORY = new Factory();
|
||||||
private static class Factory implements IRenderFactory<EntityJens>
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public Render<? super EntityJens> createRenderFor(RenderManager manager)
|
|
||||||
{
|
|
||||||
return new RenderJens(manager);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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 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> {
|
||||||
|
@Override
|
||||||
|
public Render<? super EntityJens> createRenderFor(RenderManager manager) {
|
||||||
|
return new RenderJens(manager);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -13,29 +13,16 @@ 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 {
|
||||||
{
|
|
||||||
public static class Factory implements IRenderFactory<EntityMarcellDAvis>
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public Render<? super EntityMarcellDAvis> createRenderFor(RenderManager manager)
|
|
||||||
{
|
|
||||||
return new RenderMarcellDAvis(manager);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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();
|
||||||
|
private static final ResourceLocation MARCELLDAVIS_TEXTURE = new ResourceLocation(
|
||||||
|
"spackenmobs:textures/entities/marcell_davis.png");
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
@ -44,8 +31,14 @@ 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> {
|
||||||
|
@Override
|
||||||
|
public Render<? super EntityMarcellDAvis> createRenderFor(RenderManager manager) {
|
||||||
|
return new RenderMarcellDAvis(manager);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -13,29 +13,16 @@ 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 {
|
||||||
{
|
|
||||||
public static class Factory implements IRenderFactory<EntityMrBean>
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public Render<? super EntityMrBean> createRenderFor(RenderManager manager)
|
|
||||||
{
|
|
||||||
return new RenderMrBean(manager);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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();
|
||||||
|
private static final ResourceLocation MRBEAN_TEXTURE = new ResourceLocation(
|
||||||
|
"spackenmobs:textures/entities/mr_bean.png");
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
@ -44,8 +31,14 @@ 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> {
|
||||||
|
@Override
|
||||||
|
public Render<? super EntityMrBean> createRenderFor(RenderManager manager) {
|
||||||
|
return new RenderMrBean(manager);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -17,31 +17,138 @@ 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[]{
|
||||||
public static class Factory implements IRenderFactory<EntitySchalker>
|
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 RenderSchalker(RenderManager p_i47194_1_) {
|
||||||
|
super(p_i47194_1_, new ModelSchalker(), 0.0F);
|
||||||
|
this.addLayer(new RenderSchalker.HeadLayer());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Render<? super EntitySchalker> createRenderFor(RenderManager manager)
|
public ModelSchalker getMainModel() {
|
||||||
{
|
return (ModelSchalker)super.getMainModel();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void doRender(EntitySchalker entity, double x, double y, double z, float entityYaw, float partialTicks) {
|
||||||
|
int i = entity.getClientTeleportInterp();
|
||||||
|
|
||||||
|
if(i > 0 && entity.isAttachedToBlock()) {
|
||||||
|
BlockPos blockpos = entity.getAttachmentPos();
|
||||||
|
BlockPos blockpos1 = entity.getOldAttachPos();
|
||||||
|
double d0 = (i - partialTicks) / 6.0D;
|
||||||
|
d0 = d0 * d0;
|
||||||
|
double d1 = (blockpos.getX() - blockpos1.getX()) * d0;
|
||||||
|
double d2 = (blockpos.getY() - blockpos1.getY()) * d0;
|
||||||
|
double d3 = (blockpos.getZ() - blockpos1.getZ()) * d0;
|
||||||
|
super.doRender(entity, x - d1, y - d2, z - d3, entityYaw, partialTicks);
|
||||||
|
}else {
|
||||||
|
super.doRender(entity, x, y, z, entityYaw, partialTicks);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldRender(EntitySchalker livingEntity, ICamera camera, double camX, double camY, double camZ) {
|
||||||
|
if(super.shouldRender(livingEntity, camera, camX, camY, camZ)) {
|
||||||
|
return true;
|
||||||
|
}else {
|
||||||
|
if(livingEntity.getClientTeleportInterp() > 0 && livingEntity.isAttachedToBlock()) {
|
||||||
|
BlockPos blockpos = livingEntity.getOldAttachPos();
|
||||||
|
BlockPos blockpos1 = livingEntity.getAttachmentPos();
|
||||||
|
Vec3d vec3d = new Vec3d(blockpos1.getX(), blockpos1.getY(), blockpos1.getZ());
|
||||||
|
Vec3d vec3d1 = new Vec3d(blockpos.getX(), blockpos.getY(), blockpos.getZ());
|
||||||
|
|
||||||
|
if(camera.isBoundingBoxInFrustum(
|
||||||
|
new AxisAlignedBB(vec3d1.x, vec3d1.y, vec3d1.z, vec3d.x, vec3d.y, vec3d.z))) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected ResourceLocation getEntityTexture(EntitySchalker entity) {
|
||||||
|
return SCHALKER_TEXTURE[entity.getColor().getMetadata()];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void applyRotations(EntitySchalker entityLiving, float p_77043_2_, float rotationYaw,
|
||||||
|
float partialTicks) {
|
||||||
|
super.applyRotations(entityLiving, p_77043_2_, rotationYaw, partialTicks);
|
||||||
|
|
||||||
|
switch(entityLiving.getAttachmentFacing()) {
|
||||||
|
case DOWN:
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
case EAST:
|
||||||
|
GlStateManager.translate(0.5F, 0.5F, 0.0F);
|
||||||
|
GlStateManager.rotate(90.0F, 1.0F, 0.0F, 0.0F);
|
||||||
|
GlStateManager.rotate(90.0F, 0.0F, 0.0F, 1.0F);
|
||||||
|
break;
|
||||||
|
case WEST:
|
||||||
|
GlStateManager.translate(-0.5F, 0.5F, 0.0F);
|
||||||
|
GlStateManager.rotate(90.0F, 1.0F, 0.0F, 0.0F);
|
||||||
|
GlStateManager.rotate(-90.0F, 0.0F, 0.0F, 1.0F);
|
||||||
|
break;
|
||||||
|
case NORTH:
|
||||||
|
GlStateManager.translate(0.0F, 0.5F, -0.5F);
|
||||||
|
GlStateManager.rotate(90.0F, 1.0F, 0.0F, 0.0F);
|
||||||
|
break;
|
||||||
|
case SOUTH:
|
||||||
|
GlStateManager.translate(0.0F, 0.5F, 0.5F);
|
||||||
|
GlStateManager.rotate(90.0F, 1.0F, 0.0F, 0.0F);
|
||||||
|
GlStateManager.rotate(180.0F, 0.0F, 0.0F, 1.0F);
|
||||||
|
break;
|
||||||
|
case UP:
|
||||||
|
GlStateManager.translate(0.0F, 1.0F, 0.0F);
|
||||||
|
GlStateManager.rotate(180.0F, 1.0F, 0.0F, 0.0F);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void preRenderCallback(EntitySchalker entitylivingbaseIn, float partialTickTime) {
|
||||||
|
float f = 0.999F;
|
||||||
|
GlStateManager.scale(0.999F, 0.999F, 0.999F);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Factory implements IRenderFactory<EntitySchalker> {
|
||||||
|
@Override
|
||||||
|
public Render<? super EntitySchalker> createRenderFor(RenderManager manager) {
|
||||||
return new RenderSchalker(manager);
|
return new RenderSchalker(manager);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@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, float partialTicks, float ageInTicks, float netHeadYaw, float headPitch, float scale)
|
public void doRenderLayer(EntitySchalker entitylivingbaseIn, float limbSwing, float limbSwingAmount,
|
||||||
{
|
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;
|
||||||
|
@ -74,136 +181,14 @@ 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.bindTexture(RenderSchalker.SCHALKER_TEXTURE[entitylivingbaseIn.getColor().getMetadata()]);
|
RenderSchalker.this
|
||||||
|
.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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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")
|
|
||||||
};
|
|
||||||
|
|
||||||
public static final Factory FACTORY = new Factory();
|
|
||||||
|
|
||||||
public RenderSchalker(RenderManager p_i47194_1_)
|
|
||||||
{
|
|
||||||
super(p_i47194_1_, new ModelSchalker(), 0.0F);
|
|
||||||
this.addLayer(new RenderSchalker.HeadLayer());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void applyRotations(EntitySchalker entityLiving, float p_77043_2_, float rotationYaw, float partialTicks)
|
|
||||||
{
|
|
||||||
super.applyRotations(entityLiving, p_77043_2_, rotationYaw, partialTicks);
|
|
||||||
|
|
||||||
switch (entityLiving.getAttachmentFacing())
|
|
||||||
{
|
|
||||||
case DOWN:
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
case EAST:
|
|
||||||
GlStateManager.translate(0.5F, 0.5F, 0.0F);
|
|
||||||
GlStateManager.rotate(90.0F, 1.0F, 0.0F, 0.0F);
|
|
||||||
GlStateManager.rotate(90.0F, 0.0F, 0.0F, 1.0F);
|
|
||||||
break;
|
|
||||||
case WEST:
|
|
||||||
GlStateManager.translate(-0.5F, 0.5F, 0.0F);
|
|
||||||
GlStateManager.rotate(90.0F, 1.0F, 0.0F, 0.0F);
|
|
||||||
GlStateManager.rotate(-90.0F, 0.0F, 0.0F, 1.0F);
|
|
||||||
break;
|
|
||||||
case NORTH:
|
|
||||||
GlStateManager.translate(0.0F, 0.5F, -0.5F);
|
|
||||||
GlStateManager.rotate(90.0F, 1.0F, 0.0F, 0.0F);
|
|
||||||
break;
|
|
||||||
case SOUTH:
|
|
||||||
GlStateManager.translate(0.0F, 0.5F, 0.5F);
|
|
||||||
GlStateManager.rotate(90.0F, 1.0F, 0.0F, 0.0F);
|
|
||||||
GlStateManager.rotate(180.0F, 0.0F, 0.0F, 1.0F);
|
|
||||||
break;
|
|
||||||
case UP:
|
|
||||||
GlStateManager.translate(0.0F, 1.0F, 0.0F);
|
|
||||||
GlStateManager.rotate(180.0F, 1.0F, 0.0F, 0.0F);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void doRender(EntitySchalker entity, double x, double y, double z, float entityYaw, float partialTicks)
|
|
||||||
{
|
|
||||||
int i = entity.getClientTeleportInterp();
|
|
||||||
|
|
||||||
if (i > 0 && entity.isAttachedToBlock())
|
|
||||||
{
|
|
||||||
BlockPos blockpos = entity.getAttachmentPos();
|
|
||||||
BlockPos blockpos1 = entity.getOldAttachPos();
|
|
||||||
double d0 = (i - partialTicks) / 6.0D;
|
|
||||||
d0 = d0 * d0;
|
|
||||||
double d1 = (blockpos.getX() - blockpos1.getX()) * d0;
|
|
||||||
double d2 = (blockpos.getY() - blockpos1.getY()) * d0;
|
|
||||||
double d3 = (blockpos.getZ() - blockpos1.getZ()) * d0;
|
|
||||||
super.doRender(entity, x - d1, y - d2, z - d3, entityYaw, partialTicks);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
super.doRender(entity, x, y, z, entityYaw, partialTicks);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected ResourceLocation getEntityTexture(EntitySchalker entity)
|
|
||||||
{
|
|
||||||
return SCHALKER_TEXTURE[entity.getColor().getMetadata()];
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ModelSchalker getMainModel()
|
|
||||||
{
|
|
||||||
return (ModelSchalker) super.getMainModel();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void preRenderCallback(EntitySchalker entitylivingbaseIn, float partialTickTime)
|
|
||||||
{
|
|
||||||
float f = 0.999F;
|
|
||||||
GlStateManager.scale(0.999F, 0.999F, 0.999F);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean shouldRender(EntitySchalker livingEntity, ICamera camera, double camX, double camY, double camZ)
|
|
||||||
{
|
|
||||||
if (super.shouldRender(livingEntity, camera, camX, camY, camZ))
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (livingEntity.getClientTeleportInterp() > 0 && livingEntity.isAttachedToBlock())
|
|
||||||
{
|
|
||||||
BlockPos blockpos = livingEntity.getOldAttachPos();
|
|
||||||
BlockPos blockpos1 = livingEntity.getAttachmentPos();
|
|
||||||
Vec3d vec3d = new Vec3d(blockpos1.getX(), blockpos1.getY(), blockpos1.getZ());
|
|
||||||
Vec3d vec3d1 = new Vec3d(blockpos.getX(), blockpos.getY(), blockpos.getZ());
|
|
||||||
|
|
||||||
if (camera.isBoundingBoxInFrustum(new AxisAlignedBB(vec3d1.x, vec3d1.y, vec3d1.z, vec3d.x, vec3d.y, vec3d.z)))
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,71 +1,36 @@
|
||||||
package mod.acgaming.spackenmobs.render;
|
package mod.acgaming.spackenmobs.render;
|
||||||
|
|
||||||
import mod.acgaming.spackenmobs.entities.EntitySmavaCreeper;
|
import mod.acgaming.spackenmobs.entities.EntitySmavaCreeper;
|
||||||
import net.minecraft.client.renderer.GlStateManager;
|
|
||||||
import net.minecraft.client.renderer.entity.Render;
|
import net.minecraft.client.renderer.entity.Render;
|
||||||
import net.minecraft.client.renderer.entity.RenderCreeper;
|
import net.minecraft.client.renderer.entity.RenderCreeper;
|
||||||
import net.minecraft.client.renderer.entity.RenderManager;
|
import net.minecraft.client.renderer.entity.RenderManager;
|
||||||
import net.minecraft.client.renderer.entity.layers.LayerCreeperCharge;
|
import net.minecraft.client.renderer.entity.layers.LayerCreeperCharge;
|
||||||
import net.minecraft.entity.monster.EntityCreeper;
|
import net.minecraft.entity.monster.EntityCreeper;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
import net.minecraft.util.math.MathHelper;
|
|
||||||
import net.minecraftforge.fml.client.registry.IRenderFactory;
|
import net.minecraftforge.fml.client.registry.IRenderFactory;
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
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 {
|
||||||
{
|
|
||||||
public static class Factory implements IRenderFactory<EntitySmavaCreeper>
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public Render<? super EntitySmavaCreeper> createRenderFor(RenderManager manager)
|
|
||||||
{
|
|
||||||
return new RenderSmavaCreeper(manager);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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();
|
||||||
|
private static final ResourceLocation SMAVA_TEXTURE = new ResourceLocation(
|
||||||
|
"spackenmobs:textures/entities/smava_creeper.png");
|
||||||
|
|
||||||
public RenderSmavaCreeper(RenderManager renderManagerIn)
|
public RenderSmavaCreeper(RenderManager renderManagerIn) {
|
||||||
{
|
|
||||||
super(renderManagerIn);
|
super(renderManagerIn);
|
||||||
this.addLayer(new LayerCreeperCharge(this));
|
this.addLayer(new LayerCreeperCharge(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int getColorMultiplier(EntitySmavaCreeper entitylivingbaseIn, float lightBrightness, float partialTickTime)
|
|
||||||
{
|
|
||||||
float f = entitylivingbaseIn.getCreeperFlashIntensity(partialTickTime);
|
|
||||||
|
|
||||||
if ((int) (f * 10.0F) % 2 == 0)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int i = (int) (f * 0.2F * 255.0F);
|
|
||||||
i = MathHelper.clamp(i, 0, 255);
|
|
||||||
return i << 24 | 822083583;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected ResourceLocation getEntityTexture(EntityCreeper entity)
|
protected ResourceLocation getEntityTexture(EntityCreeper entity) {
|
||||||
{
|
|
||||||
return SMAVA_TEXTURE;
|
return SMAVA_TEXTURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void preRenderCallback(EntitySmavaCreeper entitylivingbaseIn, float partialTickTime)
|
public static class Factory implements IRenderFactory<EntitySmavaCreeper> {
|
||||||
{
|
@Override
|
||||||
float f = entitylivingbaseIn.getCreeperFlashIntensity(partialTickTime);
|
public Render<? super EntitySmavaCreeper> createRenderFor(RenderManager manager) {
|
||||||
float f1 = 1.0F + MathHelper.sin(f * 100.0F) * f * 0.01F;
|
return new RenderSmavaCreeper(manager);
|
||||||
f = MathHelper.clamp(f, 0.0F, 1.0F);
|
}
|
||||||
f = f * f;
|
|
||||||
f = f * f;
|
|
||||||
float f2 = (1.0F + f * 0.4F) * f1;
|
|
||||||
float f3 = (1.0F + f * 0.1F) / f1;
|
|
||||||
GlStateManager.scale(f2, f3, f2);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -13,34 +13,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 RenderWolfMZTE extends RenderWolf
|
public class RenderWolfMZTE extends RenderWolf {
|
||||||
{
|
|
||||||
public static class Factory implements IRenderFactory<EntityWolfMZTE>
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public Render<? super EntityWolfMZTE> createRenderFor(RenderManager manager)
|
|
||||||
{
|
|
||||||
return new RenderWolfMZTE(manager);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static final ResourceLocation WOLFMZTE_TEXTURE = new ResourceLocation("spackenmobs:textures/entities/wolfmzte.png");
|
|
||||||
private static final ResourceLocation TAMED_WOLFMZTE_TEXTURE = new ResourceLocation("spackenmobs:textures/entities/wolfmzte_tame.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();
|
||||||
|
private static final ResourceLocation WOLFMZTE_TEXTURE = new ResourceLocation(
|
||||||
|
"spackenmobs:textures/entities/wolfmzte.png");
|
||||||
|
private static final ResourceLocation TAMED_WOLFMZTE_TEXTURE = new ResourceLocation(
|
||||||
|
"spackenmobs:textures/entities/wolfmzte_tame.png");
|
||||||
|
private static final ResourceLocation ANRGY_WOLFMZTE_TEXTURE = new ResourceLocation(
|
||||||
|
"spackenmobs:textures/entities/wolfmzte_angry.png");
|
||||||
|
|
||||||
public RenderWolfMZTE(RenderManager renderManagerIn)
|
public RenderWolfMZTE(RenderManager renderManagerIn) {
|
||||||
{
|
|
||||||
super(renderManagerIn);
|
super(renderManagerIn);
|
||||||
this.addLayer(new LayerWolfCollar(this));
|
this.addLayer(new LayerWolfCollar(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void doRender(EntityWolf entity, double x, double y, double z, float entityYaw, float partialTicks)
|
protected float handleRotationFloat(EntityWolf livingBase, float partialTicks) {
|
||||||
{
|
return livingBase.getTailRotation();
|
||||||
if (entity.isWolfWet())
|
}
|
||||||
{
|
|
||||||
|
@Override
|
||||||
|
public void doRender(EntityWolf entity, double x, double y, double z, float entityYaw, float partialTicks) {
|
||||||
|
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);
|
||||||
}
|
}
|
||||||
|
@ -49,21 +43,18 @@ 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> {
|
||||||
@Override
|
@Override
|
||||||
protected float handleRotationFloat(EntityWolf livingBase, float partialTicks)
|
public Render<? super EntityWolfMZTE> createRenderFor(RenderManager manager) {
|
||||||
{
|
return new RenderWolfMZTE(manager);
|
||||||
return livingBase.getTailRotation();
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in a new issue