diff --git a/src/main/java/vazkii/botania/common/achievement/ModAchievements.java b/src/main/java/vazkii/botania/common/achievement/ModAchievements.java index f8bf38635..7c3a08417 100644 --- a/src/main/java/vazkii/botania/common/achievement/ModAchievements.java +++ b/src/main/java/vazkii/botania/common/achievement/ModAchievements.java @@ -11,6 +11,7 @@ package vazkii.botania.common.achievement; import cpw.mods.fml.common.FMLCommonHandler; +import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.stats.Achievement; import net.minecraftforge.common.AchievementPage; @@ -51,9 +52,10 @@ public final class ModAchievements { public static Achievement signalFlareStun; public static Achievement l20ShardUse; public static Achievement gaiaGuardianNoArmor; - public static Achievement terrasteelWills; public static Achievement rankSSPick; + public static Achievement desuGun; + public static void init() { flowerPickup = new AchievementMod(LibAchievementNames.FLOWER_PICKUP, 0, 0, new ItemStack(ModBlocks.flower, 1, 6), null); lexiconUse = new AchievementMod(LibAchievementNames.LEXICON_USE, 1, 1, ModItems.lexicon, flowerPickup); @@ -81,6 +83,15 @@ public final class ModAchievements { spawnerMoverUse = new AchievementMod(LibAchievementNames.SPAWNER_MOVER_USE, -1, 5, ModItems.spawnerMover, gaiaGuardianKill); tiaraWings = new AchievementMod(LibAchievementNames.TIARA_WINGS, -1, 3, ModItems.flightTiara, gaiaGuardianKill); + signalFlareStun = new AchievementMod(LibAchievementNames.SIGNAL_FLARE_STUN, -3, -3, ModItems.signalFlare, null).setSpecial(); + l20ShardUse = new AchievementMod(LibAchievementNames.L20_SHARD_USE, -5, -1, ModItems.laputaShard, null).setSpecial(); + gaiaGuardianNoArmor = new AchievementMod(LibAchievementNames.GAIA_GUARDIAN_NO_ARMOR, -5, -3, new ItemStack(Items.skull, 1, 3), null).setSpecial(); + rankSSPick = new AchievementMod(LibAchievementNames.RANK_SS_PICK, -3, -1, ModItems.terraPick, null).setSpecial(); + + ItemStack desu = new ItemStack(ModItems.manaGun); + desu.setStackDisplayName("desu gun"); + desuGun = new AchievementMod(LibAchievementNames.DESU_GUN, -8, -2, desu, null).setSpecial(); + botaniaPage = new AchievementPage(LibMisc.MOD_NAME, AchievementMod.achievements.toArray(new Achievement[AchievementMod.achievements.size()])); AchievementPage.registerAchievementPage(botaniaPage); diff --git a/src/main/java/vazkii/botania/common/entity/EntityDoppleganger.java b/src/main/java/vazkii/botania/common/entity/EntityDoppleganger.java index 577ab7aa8..fb587fe8b 100644 --- a/src/main/java/vazkii/botania/common/entity/EntityDoppleganger.java +++ b/src/main/java/vazkii/botania/common/entity/EntityDoppleganger.java @@ -90,6 +90,7 @@ public class EntityDoppleganger extends EntityCreature implements IBotaniaBossWi boolean spawnLandmines = false; boolean spawnPixies = false; + boolean anyWithArmor = false; public EntityDoppleganger(World par1World) { super(par1World); @@ -258,8 +259,11 @@ public class EntityDoppleganger extends EntityCreature implements IBotaniaBossWi public void onDeath(DamageSource p_70645_1_) { super.onDeath(p_70645_1_); EntityLivingBase entitylivingbase = this.func_94060_bK(); - if(entitylivingbase instanceof EntityPlayer) + if(entitylivingbase instanceof EntityPlayer) { ((EntityPlayer) entitylivingbase).addStat(ModAchievements.gaiaGuardianKill, 1); + if(!anyWithArmor) + ((EntityPlayer) entitylivingbase).addStat(ModAchievements.gaiaGuardianNoArmor, 1); + } } @Override @@ -313,6 +317,9 @@ public class EntityDoppleganger extends EntityCreature implements IBotaniaBossWi if(players.isEmpty() && !worldObj.playerEntities.isEmpty()) setDead(); else for(EntityPlayer player : players) { + if(player.inventory.armorInventory[0] != null || player.inventory.armorInventory[1] != null || player.inventory.armorInventory[2] != null || player.inventory.armorInventory[3] != null) + anyWithArmor = true; + List remove = new ArrayList(); Collection active = player.getActivePotionEffects(); for(PotionEffect effect : active) diff --git a/src/main/java/vazkii/botania/common/item/ItemLaputaShard.java b/src/main/java/vazkii/botania/common/item/ItemLaputaShard.java index 15e6bde4c..fa7504baf 100644 --- a/src/main/java/vazkii/botania/common/item/ItemLaputaShard.java +++ b/src/main/java/vazkii/botania/common/item/ItemLaputaShard.java @@ -29,6 +29,7 @@ import vazkii.botania.api.mana.BurstProperties; import vazkii.botania.api.mana.ILaputaImmobile; import vazkii.botania.api.mana.ILensEffect; import vazkii.botania.api.mana.ITinyPlanetExcempt; +import vazkii.botania.common.achievement.ModAchievements; import vazkii.botania.common.core.helper.ItemNBTHelper; import vazkii.botania.common.core.helper.MathHelper; import vazkii.botania.common.entity.EntityManaBurst; @@ -75,6 +76,8 @@ public class ItemLaputaShard extends ItemMod implements ILensEffect, ITinyPlanet par3World.playSound(par4 + 0.5D, par5 + 0.5D, par6 + 0.5D, "botania:laputaStart", 1.0F + par3World.rand.nextFloat(), par3World.rand.nextFloat() * 0.7F + 1.3F, false); spawnBurstFirst(par3World, par4, par5, par6, par1ItemStack); par1ItemStack.stackSize--; + if(par1ItemStack.getItemDamage() == 19) + par2EntityPlayer.addStat(ModAchievements.l20ShardUse, 1); } return true; diff --git a/src/main/java/vazkii/botania/common/item/ItemManaGun.java b/src/main/java/vazkii/botania/common/item/ItemManaGun.java index 6eb4ccbd1..f377c8fcc 100644 --- a/src/main/java/vazkii/botania/common/item/ItemManaGun.java +++ b/src/main/java/vazkii/botania/common/item/ItemManaGun.java @@ -90,6 +90,8 @@ public class ItemManaGun extends ItemMod implements IManaUsingItem { if(!par2World.isRemote) { par2World.playSoundAtEntity(par3EntityPlayer, "botania:manaBlaster", 0.6F, 1F); par3EntityPlayer.addStat(ModAchievements.manaBlasterShoot, 1); + if(isSugoiKawaiiDesuNe(par1ItemStack)) + par3EntityPlayer.addStat(ModAchievements.desuGun, 1); par2World.spawnEntityInWorld(burst); } else { par3EntityPlayer.swingItem(); diff --git a/src/main/java/vazkii/botania/common/item/ItemSignalFlare.java b/src/main/java/vazkii/botania/common/item/ItemSignalFlare.java index 682ccbb4e..3fbe61b61 100644 --- a/src/main/java/vazkii/botania/common/item/ItemSignalFlare.java +++ b/src/main/java/vazkii/botania/common/item/ItemSignalFlare.java @@ -29,6 +29,7 @@ import net.minecraft.util.IIcon; import net.minecraft.util.StatCollector; import net.minecraft.world.World; import vazkii.botania.client.core.helper.IconHelper; +import vazkii.botania.common.achievement.ModAchievements; import vazkii.botania.common.core.helper.ItemNBTHelper; import vazkii.botania.common.entity.EntitySignalFlare; import vazkii.botania.common.lib.LibItemNames; @@ -65,11 +66,17 @@ public class ItemSignalFlare extends ItemMod { par2World.spawnEntityInWorld(flare); + int stunned = 0; int range = 5; List entities = par2World.getEntitiesWithinAABB(EntityLivingBase.class, AxisAlignedBB.getBoundingBox(par3EntityPlayer.posX - range, par3EntityPlayer.posY - range, par3EntityPlayer.posZ - range, par3EntityPlayer.posX + range, par3EntityPlayer.posY + range, par3EntityPlayer.posZ + range)); for(EntityLivingBase entity : entities) - if(entity != par3EntityPlayer && (!(entity instanceof EntityPlayer) || MinecraftServer.getServer() == null || MinecraftServer.getServer().isPVPEnabled())) + if(entity != par3EntityPlayer && (!(entity instanceof EntityPlayer) || MinecraftServer.getServer() == null || MinecraftServer.getServer().isPVPEnabled())) { entity.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 50, 5)); + stunned++; + } + + if(stunned >= 100) + par3EntityPlayer.addStat(ModAchievements.signalFlareStun, 1); } par1ItemStack.damageItem(200, par3EntityPlayer); } diff --git a/src/main/java/vazkii/botania/common/item/equipment/tool/ItemTerraPick.java b/src/main/java/vazkii/botania/common/item/equipment/tool/ItemTerraPick.java index 1a34c0480..dc3529100 100644 --- a/src/main/java/vazkii/botania/common/item/equipment/tool/ItemTerraPick.java +++ b/src/main/java/vazkii/botania/common/item/equipment/tool/ItemTerraPick.java @@ -33,6 +33,7 @@ import net.minecraftforge.oredict.RecipeSorter.Category; import vazkii.botania.api.BotaniaAPI; import vazkii.botania.api.mana.IManaItem; import vazkii.botania.client.core.helper.IconHelper; +import vazkii.botania.common.achievement.ModAchievements; import vazkii.botania.common.core.helper.ItemNBTHelper; import vazkii.botania.common.crafting.recipe.TerraPickTippingRecipe; import vazkii.botania.common.item.ItemSpark; @@ -145,7 +146,9 @@ public class ItemTerraPick extends ItemManasteelPick implements IManaItem { return false; ToolCommons.removeBlocksInIteration(player, stack, world, x, y, z, doX ? -range : 0, doY ? -1 : 0, doZ ? -range : 0, doX ? range + 1 : 1, doY ? rangeY * 2 : 1, doZ ? range + 1 : 1, null, MATERIALS, silk, fortune, isTipped(stack)); - + if(level == 5) + player.addStat(ModAchievements.rankSSPick, 1); + return false; } diff --git a/src/main/java/vazkii/botania/common/lib/LibAchievementNames.java b/src/main/java/vazkii/botania/common/lib/LibAchievementNames.java index 3b5df4bce..1745b05c6 100644 --- a/src/main/java/vazkii/botania/common/lib/LibAchievementNames.java +++ b/src/main/java/vazkii/botania/common/lib/LibAchievementNames.java @@ -36,7 +36,8 @@ public final class LibAchievementNames { public static final String SIGNAL_FLARE_STUN = "signalFlareStun"; public static final String L20_SHARD_USE = "l20ShardUse"; public static final String GAIA_GUARDIAN_NO_ARMOR = "gaiaGuardianNoArmor"; - public static final String TERRASTEEL_WILLS = "terrasteelWills"; public static final String RANK_SS_PICK = "rankSSPick"; + public static final String DESU_GUN = "desuGun"; + } diff --git a/src/main/resources/assets/botania/lang/en_US.lang b/src/main/resources/assets/botania/lang/en_US.lang index 8327ba0ef..3e94f7959 100644 --- a/src/main/resources/assets/botania/lang/en_US.lang +++ b/src/main/resources/assets/botania/lang/en_US.lang @@ -315,10 +315,21 @@ achievement.botania:dirtRodCraft=Rockbell achievement.botania:dirtRodCraft.desc=Craft a dirty sti- er... Rod of the Lands achievement.botania:spawnerMoverUse=I can take off my (redacted) achievement.botania:spawnerMoverUse.desc=Use a Life Aggregator to transport a Monster Spawner +achievement.botania:signalFlareStun=See the Lights +achievement.botania:signalFlareStun.desc=Stun 100 or more mobs at once with a Signal Flare +achievement.botania:l20ShardUse=Out of Step +achievement.botania:l20ShardUse.desc=Raise the ground up to the sky with a Power XX Shard of Laputa +achievement.botania:gaiaGuardianNoArmor=Mythologia's End +achievement.botania:gaiaGuardianNoArmor.desc=Slay a Gaia Guardian without wearing any armor at any point during the fight +achievement.botania:rankSSPick=Talent Shredder +achievement.botania:rankSSPick.desc=Dig through the world using a rank SS Terra Shatterer +achievement.botania:desuGun=Two-Faced Lovers +achievement.botania:desuGun.desc=ASADA-SAN ASADA-SAN ASADA-SAN ASADA-SAN ASADA-SAN ASADA-SAN ASADA-SAN ASADA-SAN ASADA-SAN ASADA-SAN ASADA-SAN ASADA-SAN +# ^ Don't localize # BLOCK NAMES tile.botania:flower0.name=Mystical White Flower -tile.botania:flower1.name=Mystical Orange Flower +tile.botania:flower1.name=Mystical Orange Flowere tile.botania:flower2.name=Mystical Magenta Flower tile.botania:flower3.name=Mystical Light Blue Flower tile.botania:flower4.name=Mystical Yellow Flower