/******************************************************************************* * AbyssalCraft * Copyright (c) 2012 - 2017 Shinoow. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Lesser Public License v3 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/lgpl-3.0.txt * * Contributors: * Shinoow - implementation ******************************************************************************/ package com.shinoow.abyssalcraft.common.handlers; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityList; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.ResourceLocation; import net.minecraft.world.biome.Biome; import net.minecraftforge.event.AttachCapabilitiesEvent; import net.minecraftforge.event.entity.living.LivingDeathEvent; import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent; import net.minecraftforge.event.entity.player.PlayerEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.gameevent.PlayerEvent.PlayerChangedDimensionEvent; import com.shinoow.abyssalcraft.common.caps.NecroDataCapabilityProvider; public class KnowledgeEventHandler { @SubscribeEvent public void attachCapability(AttachCapabilitiesEvent<Entity> event){ if(event.getObject() instanceof EntityPlayer) event.addCapability(new ResourceLocation("abyssalcraft", "necrodata"), new NecroDataCapabilityProvider()); } @SubscribeEvent public void onLivingUpdate(LivingUpdateEvent event){ if(event.getEntityLiving() instanceof EntityPlayer && !event.getEntityLiving().world.isRemote){ EntityPlayer player = (EntityPlayer)event.getEntityLiving(); Biome b = player.world.getBiome(player.getPosition()); if(player.ticksExisted % 200 == 0) player.getCapability(NecroDataCapabilityProvider.NECRO_DATA_CAP, null).triggerBiomeUnlock(Biome.REGISTRY.getNameForObject(b).toString()); } } @SubscribeEvent public void onPlayerChangedDimension(PlayerChangedDimensionEvent event){ event.player.getCapability(NecroDataCapabilityProvider.NECRO_DATA_CAP, null).triggerDimensionUnlock(event.toDim); } @SubscribeEvent public void onDeath(LivingDeathEvent event){ if(!(event.getEntityLiving() instanceof EntityPlayer) && !event.getEntityLiving().world.isRemote){ EntityLivingBase e = event.getEntityLiving(); if(event.getSource().getEntity() != null && event.getSource().getEntity() instanceof EntityPlayer) event.getSource().getEntity().getCapability(NecroDataCapabilityProvider.NECRO_DATA_CAP, null).triggerEntityUnlock(EntityList.getKey(e).toString()); } } @SubscribeEvent public void onClonePlayer(PlayerEvent.Clone event) { event.getEntityPlayer().getCapability(NecroDataCapabilityProvider.NECRO_DATA_CAP, null).copy(event.getOriginal().getCapability(NecroDataCapabilityProvider.NECRO_DATA_CAP, null)); } }