diff --git a/src/main/java/mod/acgaming/spackenmobs/entities/EntityFriedrichLiechtenstein.java b/src/main/java/mod/acgaming/spackenmobs/entities/EntityFriedrichLiechtenstein.java new file mode 100644 index 0000000..2e07f34 --- /dev/null +++ b/src/main/java/mod/acgaming/spackenmobs/entities/EntityFriedrichLiechtenstein.java @@ -0,0 +1,153 @@ +package mod.acgaming.spackenmobs.entities; + +import mod.acgaming.spackenmobs.misc.ModItems; +import mod.acgaming.spackenmobs.misc.ModLootTableList; +import mod.acgaming.spackenmobs.misc.ModSoundEvents; +import net.minecraft.entity.EntityCreature; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.IMerchant; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.*; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Items; +import net.minecraft.init.SoundEvents; +import net.minecraft.inventory.EntityEquipmentSlot; +import net.minecraft.item.ItemStack; +import net.minecraft.util.DamageSource; +import net.minecraft.util.EnumHand; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.SoundEvent; +import net.minecraft.util.math.BlockPos; +import net.minecraft.village.MerchantRecipe; +import net.minecraft.village.MerchantRecipeList; +import net.minecraft.world.World; + +public class EntityFriedrichLiechtenstein extends EntityCreature implements IMerchant +{ + public EntityFriedrichLiechtenstein(World worldIn) + { + super(worldIn); + setSize(0.6F, 1.8F); + setItemStackToSlot(EntityEquipmentSlot.MAINHAND, new ItemStack(ModItems.AHOJ_BRAUSE)); + } + + @Override + protected void initEntityAI() + { + this.tasks.addTask(0, new EntityAISwimming(this)); + this.tasks.addTask(2, new EntityAIMoveIndoors(this)); + this.tasks.addTask(3, new EntityAIRestrictOpenDoor(this)); + this.tasks.addTask(4, new EntityAIOpenDoor(this, true)); + this.tasks.addTask(5, new EntityAIMoveTowardsRestriction(this, 0.6D)); + this.tasks.addTask(9, new EntityAIWatchClosest2(this, EntityPlayer.class, 3.0F, 1.0F)); + this.tasks.addTask(9, new EntityAIWanderAvoidWater(this, 0.6D)); + this.tasks.addTask(10, new EntityAIWatchClosest(this, EntityLiving.class, 8.0F)); + } + + @Override + protected void applyEntityAttributes() + { + super.applyEntityAttributes(); + this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(0.25D); + } + + @Override + public boolean processInteract(EntityPlayer player, EnumHand hand) + { + ItemStack itemstack = player.getHeldItem(hand); + + if (itemstack.getItem() == Items.GLASS_BOTTLE) + { + player.playSound(ModSoundEvents.ENTITY_FRIEDRICH_DEATH, 1.0F, 1.0F); + player.playSound(SoundEvents.ENTITY_COW_MILK, 1.0F, 1.0F); + itemstack.shrink(1); + + if (itemstack.isEmpty()) + { + player.setHeldItem(hand, new ItemStack(ModItems.AHOJ_BRAUSE_DRINK)); + } + else if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.AHOJ_BRAUSE_DRINK))) + { + player.dropItem(new ItemStack(ModItems.AHOJ_BRAUSE_DRINK), false); + } + + return true; + } + else + { + return super.processInteract(player, hand); + } + } + + @Override + protected ResourceLocation getLootTable() + { + return ModLootTableList.ENTITIES_FRIEDRICH; + } + + @Override + protected SoundEvent getAmbientSound() + { + return ModSoundEvents.ENTITY_FRIEDRICH_AMBIENT; + } + + @Override + protected SoundEvent getHurtSound(DamageSource damageSourceIn) + { + return ModSoundEvents.ENTITY_FRIEDRICH_HURT; + } + + @Override + protected SoundEvent getDeathSound() + { + return ModSoundEvents.ENTITY_FRIEDRICH_DEATH; + } + + @Override + public EntityPlayer getCustomer() + { + return null; + } + + @Override + public void setCustomer(EntityPlayer player) + { + + } + + @Override + public MerchantRecipeList getRecipes(EntityPlayer player) + { + return null; + } + + @Override + public void setRecipes(MerchantRecipeList recipeList) + { + + } + + @Override + public void useRecipe(MerchantRecipe recipe) + { + + } + + @Override + public void verifySellingItem(ItemStack stack) + { + + } + + @Override + public World getWorld() + { + return null; + } + + @Override + public BlockPos getPos() + { + return null; + } +} \ No newline at end of file diff --git a/src/main/java/mod/acgaming/spackenmobs/entities/EntityIslamist.java b/src/main/java/mod/acgaming/spackenmobs/entities/EntityIslamist.java index e2e0022..bb8115d 100644 --- a/src/main/java/mod/acgaming/spackenmobs/entities/EntityIslamist.java +++ b/src/main/java/mod/acgaming/spackenmobs/entities/EntityIslamist.java @@ -8,10 +8,10 @@ import net.minecraft.world.World; public class EntityIslamist extends EntityCreeper { - private int lastActiveTime; - private int timeSinceIgnited; private final int fuseTime = 30; private final int explosionRadius = 6; + private int lastActiveTime; + private int timeSinceIgnited; public EntityIslamist(World worldIn) { diff --git a/src/main/java/mod/acgaming/spackenmobs/entities/EntityMarcellDAvis.java b/src/main/java/mod/acgaming/spackenmobs/entities/EntityMarcellDAvis.java index 2966ab3..f00671d 100644 --- a/src/main/java/mod/acgaming/spackenmobs/entities/EntityMarcellDAvis.java +++ b/src/main/java/mod/acgaming/spackenmobs/entities/EntityMarcellDAvis.java @@ -11,7 +11,7 @@ public class EntityMarcellDAvis extends EntityZombie public EntityMarcellDAvis(World worldIn) { super(worldIn); - this.setSize(0.6F, 1.95F); + this.setSize(0.6F, 1.8F); } @Override diff --git a/src/main/java/mod/acgaming/spackenmobs/entities/EntityMrBean.java b/src/main/java/mod/acgaming/spackenmobs/entities/EntityMrBean.java index d0faa00..57d50be 100644 --- a/src/main/java/mod/acgaming/spackenmobs/entities/EntityMrBean.java +++ b/src/main/java/mod/acgaming/spackenmobs/entities/EntityMrBean.java @@ -11,7 +11,7 @@ public class EntityMrBean extends EntityZombie public EntityMrBean(World worldIn) { super(worldIn); - this.setSize(0.6F, 1.95F); + this.setSize(0.6F, 1.8F); } @Override diff --git a/src/main/java/mod/acgaming/spackenmobs/entities/EntitySmavaCreeper.java b/src/main/java/mod/acgaming/spackenmobs/entities/EntitySmavaCreeper.java index 348140d..f60bb48 100644 --- a/src/main/java/mod/acgaming/spackenmobs/entities/EntitySmavaCreeper.java +++ b/src/main/java/mod/acgaming/spackenmobs/entities/EntitySmavaCreeper.java @@ -9,10 +9,10 @@ import net.minecraft.world.World; public class EntitySmavaCreeper extends EntityCreeper { - private int lastActiveTime; - private int timeSinceIgnited; private final int fuseTime = 20; private final int explosionRadius = 6; + private int lastActiveTime; + private int timeSinceIgnited; public EntitySmavaCreeper(World worldIn) { diff --git a/src/main/java/mod/acgaming/spackenmobs/items/ItemPotion.java b/src/main/java/mod/acgaming/spackenmobs/items/ItemPotion.java deleted file mode 100644 index fac9d47..0000000 --- a/src/main/java/mod/acgaming/spackenmobs/items/ItemPotion.java +++ /dev/null @@ -1,14 +0,0 @@ -package mod.acgaming.spackenmobs.items; - -import net.minecraft.potion.Potion; - -public class ItemPotion extends Potion -{ - public ItemPotion(String name, boolean isBadPotion, int color, int iconIndexX, int iconIndexY) - { - super(isBadPotion, color); - setPotionName("effect." + name); - setIconIndex(iconIndexX, iconIndexY); - setRegistryName(name); - } -} \ No newline at end of file diff --git a/src/main/java/mod/acgaming/spackenmobs/items/ItemBase.java b/src/main/java/mod/acgaming/spackenmobs/items/ModItemBase.java similarity index 71% rename from src/main/java/mod/acgaming/spackenmobs/items/ItemBase.java rename to src/main/java/mod/acgaming/spackenmobs/items/ModItemBase.java index 87ee3fc..938f9d7 100644 --- a/src/main/java/mod/acgaming/spackenmobs/items/ItemBase.java +++ b/src/main/java/mod/acgaming/spackenmobs/items/ModItemBase.java @@ -1,20 +1,22 @@ package mod.acgaming.spackenmobs.items; import mod.acgaming.spackenmobs.Spackenmobs; +import mod.acgaming.spackenmobs.misc.ModItems; import net.minecraft.client.renderer.block.model.ModelResourceLocation; -import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -public class ItemBase extends Item +public class ModItemBase extends Item { - public ItemBase(String name, CreativeTabs tab) + public ModItemBase(String name) { + setUnlocalizedName(name); setRegistryName(name); - setUnlocalizedName(Spackenmobs.MODID + "." + name); - setCreativeTab(tab); + setCreativeTab(Spackenmobs.SPACKENMOBS_TAB); + + ModItems.ITEMS.add(this); } @SideOnly(Side.CLIENT) diff --git a/src/main/java/mod/acgaming/spackenmobs/items/ModItemFoodBase.java b/src/main/java/mod/acgaming/spackenmobs/items/ModItemFoodBase.java new file mode 100644 index 0000000..b11ba78 --- /dev/null +++ b/src/main/java/mod/acgaming/spackenmobs/items/ModItemFoodBase.java @@ -0,0 +1,32 @@ +package mod.acgaming.spackenmobs.items; + +import mod.acgaming.spackenmobs.Spackenmobs; +import mod.acgaming.spackenmobs.misc.ModItems; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemFood; +import net.minecraft.item.ItemStack; +import net.minecraft.potion.PotionEffect; +import net.minecraft.world.World; +import net.minecraftforge.client.model.ModelLoader; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +public class ModItemFoodBase extends ItemFood +{ + public ModItemFoodBase(String name, int amount, float saturation, boolean isAnimalFood) + { + super(amount, saturation, isAnimalFood); + setUnlocalizedName(name); + setRegistryName(name); + setCreativeTab(Spackenmobs.SPACKENMOBS_TAB); + + ModItems.ITEMS.add(this); + } + + @SideOnly(Side.CLIENT) + public void initModel() + { + ModelLoader.setCustomModelResourceLocation(this, 0, new ModelResourceLocation(getRegistryName(), "inventory")); + } +} \ No newline at end of file diff --git a/src/main/java/mod/acgaming/spackenmobs/items/ModItemFoodDrink.java b/src/main/java/mod/acgaming/spackenmobs/items/ModItemFoodDrink.java new file mode 100644 index 0000000..fa58ba5 --- /dev/null +++ b/src/main/java/mod/acgaming/spackenmobs/items/ModItemFoodDrink.java @@ -0,0 +1,37 @@ +package mod.acgaming.spackenmobs.items; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Items; +import net.minecraft.item.EnumAction; +import net.minecraft.item.ItemStack; +import net.minecraft.potion.PotionEffect; +import net.minecraft.world.World; + +public class ModItemFoodDrink extends ModItemFoodBase +{ + PotionEffect effect; + + public ModItemFoodDrink(String name, int amount, float saturation, boolean isAnimalFood, PotionEffect effect) + { + super(name, amount, saturation, isAnimalFood); + setAlwaysEdible(); + + this.effect = effect; + } + + @Override + protected void onFoodEaten(ItemStack stack, World worldIn, EntityPlayer player) + { + if (!worldIn.isRemote) + { + player.addPotionEffect(new PotionEffect(effect.getPotion(), effect.getDuration(), effect.getAmplifier(), effect.getIsAmbient(), effect.doesShowParticles())); + player.inventory.addItemStackToInventory(new ItemStack(Items.GLASS_BOTTLE)); + } + } + + @Override + public EnumAction getItemUseAction(ItemStack stack) + { + return EnumAction.DRINK; + } +} \ No newline at end of file diff --git a/src/main/java/mod/acgaming/spackenmobs/items/ModItemFoodEffect.java b/src/main/java/mod/acgaming/spackenmobs/items/ModItemFoodEffect.java new file mode 100644 index 0000000..6b28aa9 --- /dev/null +++ b/src/main/java/mod/acgaming/spackenmobs/items/ModItemFoodEffect.java @@ -0,0 +1,28 @@ +package mod.acgaming.spackenmobs.items; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.potion.PotionEffect; +import net.minecraft.world.World; + +public class ModItemFoodEffect extends ModItemFoodBase +{ + PotionEffect effect; + + public ModItemFoodEffect(String name, int amount, float saturation, boolean isAnimalFood, PotionEffect effect) + { + super(name, amount, saturation, isAnimalFood); + setAlwaysEdible(); + + this.effect = effect; + } + + @Override + protected void onFoodEaten(ItemStack stack, World worldIn, EntityPlayer player) + { + if (!worldIn.isRemote) + { + player.addPotionEffect(new PotionEffect(effect.getPotion(), effect.getDuration(), effect.getAmplifier(), effect.getIsAmbient(), effect.doesShowParticles())); + } + } +} \ No newline at end of file diff --git a/src/main/java/mod/acgaming/spackenmobs/misc/ModConfigs.java b/src/main/java/mod/acgaming/spackenmobs/misc/ModConfigs.java index a011b8b..e26fb90 100644 --- a/src/main/java/mod/acgaming/spackenmobs/misc/ModConfigs.java +++ b/src/main/java/mod/acgaming/spackenmobs/misc/ModConfigs.java @@ -18,6 +18,8 @@ public class ModConfigs public static boolean BakaMitaiCreeper_spawn = true; @Name("Allow Drachenlord to spawn?") public static boolean Drachenlord_spawn = true; + @Name("Allow Friedrich Liechtenstein to spawn?") + public static boolean Friedrich_spawn = true; @Name("Allow Holzstammhuhn to spawn?") public static boolean Holzstammhuhn_spawn = true; @Name("Allow Islamist to spawn?") @@ -52,6 +54,12 @@ public class ModConfigs public static int Drachenlord_min = 1; @Name("Drachenlord max group size:") public static int Drachenlord_max = 4; + @Name("Friedrich Liechtenstein spawn probability:") + public static int Friedrich_weight = 25; + @Name("Friedrich Liechtenstein min group size:") + public static int Friedrich_min = 1; + @Name("Friedrich Liechtenstein max group size:") + public static int Friedrich_max = 4; @Name("Holzstammhuhn spawn probability:") public static int Holzstammhuhn_weight = 50; @Name("Holzstammhuhn min group size:") diff --git a/src/main/java/mod/acgaming/spackenmobs/misc/ModEntities.java b/src/main/java/mod/acgaming/spackenmobs/misc/ModEntities.java index 231ea86..59c33de 100644 --- a/src/main/java/mod/acgaming/spackenmobs/misc/ModEntities.java +++ b/src/main/java/mod/acgaming/spackenmobs/misc/ModEntities.java @@ -18,5 +18,6 @@ public class ModEntities RenderingRegistry.registerEntityRenderingHandler(EntitySmavaCreeper.class, RenderSmavaCreeper.FACTORY); RenderingRegistry.registerEntityRenderingHandler(EntityWolfMZTE.class, RenderWolfMZTE.FACTORY); RenderingRegistry.registerEntityRenderingHandler(EntityHolzstammhuhn.class, RenderHolzstammhuhn.FACTORY); + RenderingRegistry.registerEntityRenderingHandler(EntityFriedrichLiechtenstein.class, RenderFriedrichLiechtenstein.FACTORY); } } \ No newline at end of file diff --git a/src/main/java/mod/acgaming/spackenmobs/misc/ModItems.java b/src/main/java/mod/acgaming/spackenmobs/misc/ModItems.java index 8c9be5c..7d11ec9 100644 --- a/src/main/java/mod/acgaming/spackenmobs/misc/ModItems.java +++ b/src/main/java/mod/acgaming/spackenmobs/misc/ModItems.java @@ -1,14 +1,22 @@ package mod.acgaming.spackenmobs.misc; -import mod.acgaming.spackenmobs.Spackenmobs; -import mod.acgaming.spackenmobs.items.ItemBase; +import mod.acgaming.spackenmobs.items.ModItemBase; +import mod.acgaming.spackenmobs.items.ModItemFoodDrink; +import mod.acgaming.spackenmobs.items.ModItemFoodEffect; +import net.minecraft.init.MobEffects; import net.minecraft.item.Item; -import net.minecraftforge.fml.common.registry.GameRegistry.ObjectHolder; +import net.minecraft.potion.PotionEffect; + +import java.util.ArrayList; +import java.util.List; -@ObjectHolder(Spackenmobs.MODID) public class ModItems { - 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 SURSTROEMMING = new ItemBase("surstroemming", Spackenmobs.SPACKENMOBS_TAB); + public static final List ITEMS = new ArrayList(); + + public static final Item RAM = new ModItemBase("ram"); + public static final Item RAM_ON_A_STICK = new ModItemBase("ram_on_a_stick"); + public static final Item SURSTROEMMING = new ModItemBase("surstroemming"); + public static final Item AHOJ_BRAUSE = new ModItemFoodEffect("ahoj_brause", 2, 0.15F, false, new PotionEffect(MobEffects.SPEED, 200, 5, false, true)); + public static final Item AHOJ_BRAUSE_DRINK = new ModItemFoodDrink("ahoj_brause_drink", 4, 0.3F, false, new PotionEffect(MobEffects.SPEED, 400, 10, false, true)); } \ No newline at end of file diff --git a/src/main/java/mod/acgaming/spackenmobs/misc/ModLootTableList.java b/src/main/java/mod/acgaming/spackenmobs/misc/ModLootTableList.java index 97ef473..2bd3bc0 100644 --- a/src/main/java/mod/acgaming/spackenmobs/misc/ModLootTableList.java +++ b/src/main/java/mod/acgaming/spackenmobs/misc/ModLootTableList.java @@ -5,7 +5,6 @@ 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.util.Collections; import java.util.Set; @@ -14,6 +13,7 @@ public class ModLootTableList private static final Set LOOT_TABLES = Sets.newHashSet(); public static final ResourceLocation EMPTY = register("empty"); public static final ResourceLocation ENTITIES_JENS = register("entities/jens"); + public static final ResourceLocation ENTITIES_FRIEDRICH = register("entities/friedrich"); private static final Set READ_ONLY_LOOT_TABLES = Collections.unmodifiableSet(LOOT_TABLES); public static Set getAll() diff --git a/src/main/java/mod/acgaming/spackenmobs/misc/ModPotions.java b/src/main/java/mod/acgaming/spackenmobs/misc/ModPotions.java deleted file mode 100644 index ab67a0a..0000000 --- a/src/main/java/mod/acgaming/spackenmobs/misc/ModPotions.java +++ /dev/null @@ -1,12 +0,0 @@ -package mod.acgaming.spackenmobs.misc; - -import mod.acgaming.spackenmobs.Spackenmobs; -import mod.acgaming.spackenmobs.items.ItemPotion; -import net.minecraft.potion.Potion; -import net.minecraftforge.fml.common.registry.GameRegistry.ObjectHolder; - -@ObjectHolder(Spackenmobs.MODID) -public class ModPotions -{ - public static final Potion SURSTROEMMING_DRINK = new ItemPotion("surstroemming_drink", true, 42, 0, 0); -} \ No newline at end of file diff --git a/src/main/java/mod/acgaming/spackenmobs/misc/ModSoundEvents.java b/src/main/java/mod/acgaming/spackenmobs/misc/ModSoundEvents.java index b25b80a..7f675b3 100644 --- a/src/main/java/mod/acgaming/spackenmobs/misc/ModSoundEvents.java +++ b/src/main/java/mod/acgaming/spackenmobs/misc/ModSoundEvents.java @@ -48,4 +48,8 @@ public class ModSoundEvents public static final SoundEvent ENTITY_BAKAMITAICREEPER_FUSE = new SoundEvent(new ResourceLocation("spackenmobs:entities.bakamitai_creeper.fuse")); public static final SoundEvent ENTITY_BAKAMITAICREEPER_BLOW = new SoundEvent(new ResourceLocation("spackenmobs:entities.bakamitai_creeper.blow")); + + public static final SoundEvent ENTITY_FRIEDRICH_AMBIENT = new SoundEvent(new ResourceLocation("spackenmobs:entities.friedrich.ambient")); + public static final SoundEvent ENTITY_FRIEDRICH_HURT = new SoundEvent(new ResourceLocation("spackenmobs:entities.friedrich.hurt")); + public static final SoundEvent ENTITY_FRIEDRICH_DEATH = new SoundEvent(new ResourceLocation("spackenmobs:entities.friedrich.death")); } \ No newline at end of file diff --git a/src/main/java/mod/acgaming/spackenmobs/misc/RegHandler.java b/src/main/java/mod/acgaming/spackenmobs/misc/RegHandler.java index 6125ecf..384b68a 100644 --- a/src/main/java/mod/acgaming/spackenmobs/misc/RegHandler.java +++ b/src/main/java/mod/acgaming/spackenmobs/misc/RegHandler.java @@ -1,24 +1,11 @@ package mod.acgaming.spackenmobs.misc; import mod.acgaming.spackenmobs.Spackenmobs; -import mod.acgaming.spackenmobs.entities.EntityApoRed; -import mod.acgaming.spackenmobs.entities.EntityBakaMitaiCreeper; -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.entities.*; import net.minecraft.entity.EnumCreatureType; -import net.minecraft.entity.monster.EntityCreeper; -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.monster.*; import net.minecraft.entity.passive.EntityChicken; +import net.minecraft.entity.passive.EntityCow; import net.minecraft.entity.passive.EntityPig; import net.minecraft.entity.passive.EntityWolf; import net.minecraft.item.Item; @@ -124,18 +111,19 @@ public class RegHandler EntityRegistry.addSpawn(EntityBakaMitaiCreeper.class, ModConfigs.BakaMitaiCreeper_weight, ModConfigs.BakaMitaiCreeper_min, ModConfigs.BakaMitaiCreeper_max, EnumCreatureType.MONSTER, BiomeHelper.getBiomesWithMonster(EntityCreeper.class)); } + + // Friedrich Liechtenstein + EntityRegistry.registerModEntity(new ResourceLocation("spackenmobs:friedrich"), EntityFriedrichLiechtenstein.class, "friedrich", id++, Spackenmobs.instance, 64, 1, true, 16447728, 15878595); + if (ModConfigs.Friedrich_spawn == true) + { + EntityRegistry.addSpawn(EntityFriedrichLiechtenstein.class, ModConfigs.Friedrich_weight, ModConfigs.Friedrich_min, ModConfigs.Friedrich_max, EnumCreatureType.CREATURE, BiomeHelper.getBiomesWithCreature(EntityCow.class)); + } } @SubscribeEvent public static void registerItems(Register 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(ModItems.ITEMS.toArray(new Item[0])); } @SubscribeEvent @@ -222,5 +210,13 @@ public class RegHandler 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); + + // Friedrich Liechtenstein + ModSoundEvents.ENTITY_FRIEDRICH_AMBIENT.setRegistryName(new ResourceLocation("spackenmobs:entities.friedrich.ambient")); + event.getRegistry().register(ModSoundEvents.ENTITY_FRIEDRICH_AMBIENT); + ModSoundEvents.ENTITY_FRIEDRICH_HURT.setRegistryName(new ResourceLocation("spackenmobs:entities.friedrich.hurt")); + event.getRegistry().register(ModSoundEvents.ENTITY_FRIEDRICH_HURT); + ModSoundEvents.ENTITY_FRIEDRICH_DEATH.setRegistryName(new ResourceLocation("spackenmobs:entities.friedrich.death")); + event.getRegistry().register(ModSoundEvents.ENTITY_FRIEDRICH_DEATH); } } \ No newline at end of file diff --git a/src/main/java/mod/acgaming/spackenmobs/misc/RegHandlerModels.java b/src/main/java/mod/acgaming/spackenmobs/misc/RegHandlerModels.java index 472724d..3e7bb6e 100644 --- a/src/main/java/mod/acgaming/spackenmobs/misc/RegHandlerModels.java +++ b/src/main/java/mod/acgaming/spackenmobs/misc/RegHandlerModels.java @@ -18,6 +18,8 @@ public class RegHandlerModels registerModel(ModItems.RAM, 0); registerModel(ModItems.RAM_ON_A_STICK, 0); registerModel(ModItems.SURSTROEMMING, 0); + registerModel(ModItems.AHOJ_BRAUSE, 0); + registerModel(ModItems.AHOJ_BRAUSE_DRINK, 0); } private static void registerModel(Item item, int meta) diff --git a/src/main/java/mod/acgaming/spackenmobs/render/RenderFriedrichLiechtenstein.java b/src/main/java/mod/acgaming/spackenmobs/render/RenderFriedrichLiechtenstein.java new file mode 100644 index 0000000..b8f98b5 --- /dev/null +++ b/src/main/java/mod/acgaming/spackenmobs/render/RenderFriedrichLiechtenstein.java @@ -0,0 +1,38 @@ +package mod.acgaming.spackenmobs.render; + +import mod.acgaming.spackenmobs.entities.EntityFriedrichLiechtenstein; +import net.minecraft.client.model.ModelBiped; +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.client.renderer.entity.RenderBiped; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.client.registry.IRenderFactory; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +@SideOnly(Side.CLIENT) +public class RenderFriedrichLiechtenstein extends RenderBiped +{ + public static final Factory FACTORY = new Factory(); + private static final ResourceLocation FRIEDRICH_TEXTURE = new ResourceLocation("spackenmobs:textures/entities/friedrich.png"); + + public RenderFriedrichLiechtenstein(RenderManager renderManagerIn) + { + super(renderManagerIn, new ModelBiped(), 0.25F); + } + + @Override + protected ResourceLocation getEntityTexture(EntityFriedrichLiechtenstein entity) + { + return FRIEDRICH_TEXTURE; + } + + private static class Factory implements IRenderFactory + { + @Override + public Render createRenderFor(RenderManager manager) + { + return new RenderFriedrichLiechtenstein(manager); + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spackenmobs/lang/de_de.lang b/src/main/resources/assets/spackenmobs/lang/de_de.lang index 2129cc8..0560b78 100644 --- a/src/main/resources/assets/spackenmobs/lang/de_de.lang +++ b/src/main/resources/assets/spackenmobs/lang/de_de.lang @@ -1,6 +1,7 @@ entity.apored.name=ApoRed entity.bakamitai_creeper.name=Baka Mitai-Creeper entity.drachenlord.name=Drachenlord +entity.friedrich.name=Friedrich Liechtenstein entity.holzstammhuhn.name=Holzstammhuhn entity.islamist.name=Islamist entity.jens.name=Jens @@ -9,8 +10,10 @@ entity.mr_bean.name=Mr. Bean entity.schalker.name=Schalker entity.smava_creeper.name=Smava-Creeper entity.wolfmzte.name=WolfMZTE -item.spackenmobs.ram.name=RAM -item.spackenmobs.ram_on_a_stick.name=RAM-Rute -item.spackenmobs.surstroemming.name=Surströmming -itemGroup.spackenmobs.tabSpackenmobs=Spackenmobs +item.ram.name=RAM +item.ram_on_a_stick.name=RAM-Rute +item.surstroemming.name=Surströmming +item.ahoj_brause.name=Ahoj-Brause +item.ahoj_brause_drink.name=Ahoj-Brause Brause +itemGroup.tabSpackenmobs=Spackenmobs spackenmobs.config.title=Spackenmobs-Einstellungen \ No newline at end of file diff --git a/src/main/resources/assets/spackenmobs/lang/en_us.lang b/src/main/resources/assets/spackenmobs/lang/en_us.lang index f57e94d..9a395d9 100644 --- a/src/main/resources/assets/spackenmobs/lang/en_us.lang +++ b/src/main/resources/assets/spackenmobs/lang/en_us.lang @@ -1,6 +1,7 @@ entity.apored.name=ApoRed entity.bakamitai_creeper.name=Baka Mitai Creeper entity.drachenlord.name=Drachenlord +entity.friedrich.name=Friedrich Liechtenstein entity.holzstammhuhn.name=Holzstammhuhn entity.islamist.name=Islamist entity.jens.name=Jens @@ -9,8 +10,10 @@ entity.mr_bean.name=Mr. Bean entity.schalker.name=Schalker entity.smava_creeper.name=Smava Creeper entity.wolfmzte.name=WolfMZTE -item.spackenmobs.ram.name=RAM -item.spackenmobs.ram_on_a_stick.name=RAM on a Stick -item.spackenmobs.surstroemming.name=Surströmming -itemGroup.spackenmobs.tabSpackenmobs=Spackenmobs +item.ram.name=RAM +item.ram_on_a_stick.name=RAM on a Stick +item.surstroemming.name=Surströmming +item.ahoj_brause.name=Ahoj-Brause +item.ahoj_brause_drink.name=Ahoj-Brause Soda +itemGroup.tabSpackenmobs=Spackenmobs spackenmobs.config.title=Spackenmobs settings \ No newline at end of file diff --git a/src/main/resources/assets/spackenmobs/loot_tables/entities/friedrich.json b/src/main/resources/assets/spackenmobs/loot_tables/entities/friedrich.json new file mode 100644 index 0000000..0fc3e30 --- /dev/null +++ b/src/main/resources/assets/spackenmobs/loot_tables/entities/friedrich.json @@ -0,0 +1,31 @@ +{ + "pools": [ + { + "name": "friedrich", + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "spackenmobs:ahoj_brause", + "weight": 1, + "functions": [ + { + "function": "set_count", + "count": { + "min": 1, + "max": 3 + } + }, + { + "function": "looting_enchant", + "count": { + "min": 0, + "max": 1 + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/spackenmobs/models/item/ahoj_brause.json b/src/main/resources/assets/spackenmobs/models/item/ahoj_brause.json new file mode 100644 index 0000000..d7c2675 --- /dev/null +++ b/src/main/resources/assets/spackenmobs/models/item/ahoj_brause.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "spackenmobs:items/ahoj_brause" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spackenmobs/models/item/ahoj_brause_drink.json b/src/main/resources/assets/spackenmobs/models/item/ahoj_brause_drink.json new file mode 100644 index 0000000..4dfa75a --- /dev/null +++ b/src/main/resources/assets/spackenmobs/models/item/ahoj_brause_drink.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "spackenmobs:items/ahoj_brause_drink" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spackenmobs/sounds.json b/src/main/resources/assets/spackenmobs/sounds.json index 36cbae7..2a6a00e 100644 --- a/src/main/resources/assets/spackenmobs/sounds.json +++ b/src/main/resources/assets/spackenmobs/sounds.json @@ -906,5 +906,44 @@ "name": "spackenmobs:bakamitai_creeper/blow" } ] + }, + "entities.friedrich.ambient": { + "sounds": [ + { + "name": "spackenmobs:friedrich/say1" + }, + { + "name": "spackenmobs:friedrich/say2" + }, + { + "name": "spackenmobs:friedrich/say3" + }, + { + "name": "spackenmobs:friedrich/say4" + }, + { + "name": "spackenmobs:friedrich/say5" + }, + { + "name": "spackenmobs:friedrich/say6" + }, + { + "name": "spackenmobs:friedrich/say7" + } + ] + }, + "entities.friedrich.death": { + "sounds": [ + { + "name": "spackenmobs:friedrich/death" + } + ] + }, + "entities.friedrich.hurt": { + "sounds": [ + { + "name": "spackenmobs:friedrich/hurt" + } + ] } } \ No newline at end of file diff --git a/src/main/resources/assets/spackenmobs/sounds/friedrich/death.ogg b/src/main/resources/assets/spackenmobs/sounds/friedrich/death.ogg new file mode 100644 index 0000000..40e8301 Binary files /dev/null and b/src/main/resources/assets/spackenmobs/sounds/friedrich/death.ogg differ diff --git a/src/main/resources/assets/spackenmobs/sounds/friedrich/hurt.ogg b/src/main/resources/assets/spackenmobs/sounds/friedrich/hurt.ogg new file mode 100644 index 0000000..8b43ddf Binary files /dev/null and b/src/main/resources/assets/spackenmobs/sounds/friedrich/hurt.ogg differ diff --git a/src/main/resources/assets/spackenmobs/sounds/friedrich/say1.ogg b/src/main/resources/assets/spackenmobs/sounds/friedrich/say1.ogg new file mode 100644 index 0000000..7991d97 Binary files /dev/null and b/src/main/resources/assets/spackenmobs/sounds/friedrich/say1.ogg differ diff --git a/src/main/resources/assets/spackenmobs/sounds/friedrich/say2.ogg b/src/main/resources/assets/spackenmobs/sounds/friedrich/say2.ogg new file mode 100644 index 0000000..789c737 Binary files /dev/null and b/src/main/resources/assets/spackenmobs/sounds/friedrich/say2.ogg differ diff --git a/src/main/resources/assets/spackenmobs/sounds/friedrich/say3.ogg b/src/main/resources/assets/spackenmobs/sounds/friedrich/say3.ogg new file mode 100644 index 0000000..a4d250a Binary files /dev/null and b/src/main/resources/assets/spackenmobs/sounds/friedrich/say3.ogg differ diff --git a/src/main/resources/assets/spackenmobs/sounds/friedrich/say4.ogg b/src/main/resources/assets/spackenmobs/sounds/friedrich/say4.ogg new file mode 100644 index 0000000..9c0bd01 Binary files /dev/null and b/src/main/resources/assets/spackenmobs/sounds/friedrich/say4.ogg differ diff --git a/src/main/resources/assets/spackenmobs/sounds/friedrich/say5.ogg b/src/main/resources/assets/spackenmobs/sounds/friedrich/say5.ogg new file mode 100644 index 0000000..b689f7d Binary files /dev/null and b/src/main/resources/assets/spackenmobs/sounds/friedrich/say5.ogg differ diff --git a/src/main/resources/assets/spackenmobs/sounds/friedrich/say6.ogg b/src/main/resources/assets/spackenmobs/sounds/friedrich/say6.ogg new file mode 100644 index 0000000..cb1f13c Binary files /dev/null and b/src/main/resources/assets/spackenmobs/sounds/friedrich/say6.ogg differ diff --git a/src/main/resources/assets/spackenmobs/sounds/friedrich/say7.ogg b/src/main/resources/assets/spackenmobs/sounds/friedrich/say7.ogg new file mode 100644 index 0000000..6eb5689 Binary files /dev/null and b/src/main/resources/assets/spackenmobs/sounds/friedrich/say7.ogg differ diff --git a/src/main/resources/assets/spackenmobs/textures/entities/friedrich.png b/src/main/resources/assets/spackenmobs/textures/entities/friedrich.png new file mode 100644 index 0000000..860a74d Binary files /dev/null and b/src/main/resources/assets/spackenmobs/textures/entities/friedrich.png differ diff --git a/src/main/resources/assets/spackenmobs/textures/items/ahoj_brause.png b/src/main/resources/assets/spackenmobs/textures/items/ahoj_brause.png new file mode 100644 index 0000000..ae24b58 Binary files /dev/null and b/src/main/resources/assets/spackenmobs/textures/items/ahoj_brause.png differ diff --git a/src/main/resources/assets/spackenmobs/textures/items/ahoj_brause_drink.png b/src/main/resources/assets/spackenmobs/textures/items/ahoj_brause_drink.png new file mode 100644 index 0000000..933f84d Binary files /dev/null and b/src/main/resources/assets/spackenmobs/textures/items/ahoj_brause_drink.png differ