package choonster.testmod3.event;
import choonster.testmod3.util.Constants;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.TextComponentTranslation;
import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.event.entity.living.LivingDeathEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.PlayerEvent;
import net.minecraftforge.items.ItemHandlerHelper;
/**
* Handler for player-related events.
*
* @author Choonster
*/
@Mod.EventBusSubscriber
public class PlayerEventHandler {
/**
* Give the player an Apple when they first log in.
* <p>
* Test for this thread:
* http://www.minecraftforge.net/forum/index.php/topic,36355.0.html
*
* @param event The event
*/
@SubscribeEvent
public static void playerLoggedIn(PlayerEvent.PlayerLoggedInEvent event) {
final EntityPlayer player = event.player;
final NBTTagCompound entityData = player.getEntityData();
final NBTTagCompound persistedData = entityData.getCompoundTag(EntityPlayer.PERSISTED_NBT_TAG);
entityData.setTag(EntityPlayer.PERSISTED_NBT_TAG, persistedData);
final String key = Constants.RESOURCE_PREFIX + "ReceivedItems";
final String message;
if (persistedData.getBoolean(key)) {
message = "message.testmod3:login.already_received";
} else {
persistedData.setBoolean(key, true);
ItemHandlerHelper.giveItemToPlayer(player, new ItemStack(Items.APPLE));
message = "message.testmod3:login.free_apple";
}
final ITextComponent chatComponent = new TextComponentTranslation(message);
chatComponent.getStyle().setColor(TextFormatting.LIGHT_PURPLE);
player.sendMessage(chatComponent);
}
/**
* When a player dies, tell them their coordinates.
*
* @param event The event
*/
@SubscribeEvent
public static void livingDeath(LivingDeathEvent event) {
if (event.getEntity() instanceof EntityPlayer && !event.getEntity().getEntityWorld().isRemote) {
final EntityPlayer player = (EntityPlayer) event.getEntity();
final BlockPos pos = player.getPosition();
player.sendMessage(new TextComponentTranslation("message.testmod3:death.coordinates", pos.getX(), pos.getY(), pos.getZ(), player.dimension, player.getEntityWorld().provider.getDimensionType().getName()));
}
}
}