Fixed achievement saving and a crash due to positioning

This commit is contained in:
Adubbz 2016-01-18 21:01:37 +11:00
parent 7a4043a4aa
commit ea575db71c
2 changed files with 59 additions and 55 deletions

View file

@ -36,91 +36,95 @@ import com.google.common.collect.Sets;
public class AchievementEventHandler
{
private static final Set<BiomeGenBase> BOP_BIOMES_TO_EXPLORE = Sets.union(BOPBiomes.REG_INSTANCE.getPresentBiomes(), BiomeGenBase.explorationBiomesList);
@SubscribeEvent
public void onItemPickup(PlayerEvent.ItemPickupEvent event)
{
Item item = event.pickedUp.getEntityItem().getItem();
Block block = Block.getBlockFromItem(item);
EntityPlayer player = event.player;
if (block != null && block instanceof BlockBOPLog)
{
event.player.addStat(AchievementList.mineWood, 1);
}
//Flower Child Achievement
if (block != null && block instanceof BlockBOPFlower)
{
player.addStat(BOPAchievements.obtain_flowers, 1);
}
//Berry Good Achievement
@SubscribeEvent
public void onItemPickup(PlayerEvent.ItemPickupEvent event)
{
//Only add achievements on the server
if (event.player.worldObj.isRemote)
return;
Item item = event.pickedUp.getEntityItem().getItem();
Block block = Block.getBlockFromItem(item);
EntityPlayer player = event.player;
if (block != null && block instanceof BlockBOPLog)
{
player.triggerAchievement(AchievementList.mineWood);
}
//Flower Child Achievement
if (block != null && block instanceof BlockBOPFlower)
{
player.triggerAchievement(BOPAchievements.obtain_flowers);
}
//Berry Good Achievement
if (item != null && item == BOPItems.berries)
{
player.addStat(BOPAchievements.obtain_berry, 1);
player.triggerAchievement(BOPAchievements.obtain_berry);
}
//Totally Coral Achievement
if (block != null && block == BOPBlocks.coral)
{
player.addStat(BOPAchievements.obtain_coral, 1);
player.triggerAchievement(BOPAchievements.obtain_coral);
}
//Rather Thorny Achievement
if (block != null && block == BlockBOPPlant.paging.getBlock(BOPPlants.THORN))
{
player.addStat(BOPAchievements.obtain_thorn, 1);
player.triggerAchievement(BOPAchievements.obtain_thorn);
}
//Pick Your Poison Achievement
if (block != null && block == BlockBOPPlant.paging.getBlock(BOPPlants.POISONIVY))
{
player.addStat(BOPAchievements.obtain_poison_ivy, 1);
player.triggerAchievement(BOPAchievements.obtain_poison_ivy);
}
//Stalk Market Achievement
//Stalk Market Achievement
if (item != null && item == BOPItems.turnip)
{
player.addStat(BOPAchievements.obtain_turnip, 1);
player.triggerAchievement(BOPAchievements.obtain_turnip);
}
//Honeycomb Crunch Achievement
if (item != null && item == BOPItems.honeycomb)
{
player.addStat(BOPAchievements.obtain_honeycomb, 1);
player.triggerAchievement(BOPAchievements.obtain_honeycomb);
}
//Don't Breathe This Achievement
if (item != null && item == BOPItems.pixie_dust)
{
player.addStat(BOPAchievements.obtain_pixie_dust, 1);
player.triggerAchievement(BOPAchievements.obtain_pixie_dust);
}
//Far Out Achievement
if (item != null && item == BOPItems.crystal_shard)
{
player.addStat(BOPAchievements.obtain_celestial_crystal, 1);
player.triggerAchievement(BOPAchievements.obtain_celestial_crystal);
}
}
@SubscribeEvent
public void onPlayerUpdate(LivingUpdateEvent event)
{
if (!event.entity.worldObj.isRemote && event.entity instanceof EntityPlayer)
{
EntityPlayerMP player = (EntityPlayerMP)event.entity;
//Check every five seconds if the player has entered a new biome, if they haven't already gotten the achievement
}
@SubscribeEvent
public void onPlayerUpdate(LivingUpdateEvent event)
{
if (!event.entity.worldObj.isRemote && event.entity instanceof EntityPlayer)
{
EntityPlayerMP player = (EntityPlayerMP)event.entity;
//Check every five seconds if the player has entered a new biome, if they haven't already gotten the achievement
if (player.ticksExisted % 20 * 5 == 0 && !player.getStatFile().hasAchievementUnlocked(BOPAchievements.explore_all_biomes))
{
this.updateBiomesExplored(player);
}
}
}
public void updateBiomesExplored(EntityPlayerMP player)
{
}
}
public void updateBiomesExplored(EntityPlayerMP player)
{
BiomeGenBase currentBiome = player.worldObj.getBiomeGenForCoords(new BlockPos(MathHelper.floor_double(player.posX), 0, MathHelper.floor_double(player.posZ)));
String biomeName = currentBiome.biomeName;
//Get a list of the current explored biomes
@ -169,5 +173,5 @@ public class AchievementEventHandler
player.triggerAchievement(BOPAchievements.explore_all_biomes);
}
}
}
}
}

View file

@ -24,7 +24,6 @@ import net.minecraft.stats.Achievement;
import net.minecraftforge.common.AchievementPage;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.api.item.BOPItems;
import biomesoplenty.common.block.BlockBOPGrass;
import biomesoplenty.common.block.BlockBOPPlant;
import biomesoplenty.common.enums.BOPPlants;
@ -50,13 +49,14 @@ public class ModAchievements
obtain_honeycomb = addAchievement("achievement.obtain_honeycomb", "obtain_honeycomb", 3, -3, new ItemStack(BOPItems.honeycomb), obtain_coral);
obtain_pixie_dust = addAchievement("achievement.obtain_pixie_dust", "obtain_pixie_dust", 5, -4, new ItemStack(BOPItems.pixie_dust), obtain_honeycomb);
obtain_celestial_crystal = addAchievement("achievement.obtain_celestial_crystal", "obtain_celestial_crystal", 7, -1, new ItemStack(BOPItems.crystal_shard), obtain_pixie_dust);
craft_ornamental_artifact = addAchievement("achievement.craft_ornamental_artifact", "craft_ornamental_artifact", 3, -8, new ItemStack(BOPItems.gem), obtain_pixie_dust);
explore_all_biomes = addAchievement("achievement.explore_all_biomes", "explore_all_biomes", 0, -8, new ItemStack(BOPItems.earth), craft_ornamental_artifact).setSpecial();
craft_ornamental_artifact = addAchievement("achievement.craft_ornamental_artifact", "craft_ornamental_artifact", 3, -6, new ItemStack(BOPItems.gem), obtain_pixie_dust);
explore_all_biomes = addAchievement("achievement.explore_all_biomes", "explore_all_biomes", 0, -7, new ItemStack(BOPItems.earth), craft_ornamental_artifact).setSpecial();
}
private static Achievement addAchievement(String unlocalizedName, String identifier, int column, int row, ItemStack iconStack, Achievement parent)
{
Achievement achievement = new Achievement(unlocalizedName, identifier, column, row, iconStack, parent);
achievement.registerStat();
achievementPage.getAchievements().add(achievement);
return achievement;
}