package hunternif.mc.atlas.item; import hunternif.mc.atlas.AntiqueAtlasMod; import hunternif.mc.atlas.core.AtlasData; import hunternif.mc.atlas.marker.MarkersData; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.ActionResult; import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumHand; import net.minecraft.world.World; public class ItemAtlas extends Item { static final String WORLD_ATLAS_DATA_ID = "aAtlas"; public ItemAtlas() { setHasSubtypes(true); } @Override public String getItemStackDisplayName(ItemStack stack) { return super.getItemStackDisplayName(stack) + " #" + stack.getItemDamage(); } @Override public ActionResult<ItemStack> onItemRightClick(World world, EntityPlayer playerIn, EnumHand hand) { ItemStack stack = playerIn.getHeldItem(hand); if (world.isRemote) { AntiqueAtlasMod.proxy.openAtlasGUI(stack); } return new ActionResult<>(EnumActionResult.SUCCESS, stack); } @Override public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean isEquipped) { AtlasData data = AntiqueAtlasMod.atlasData.getAtlasData(stack, world); if (data == null || !(entity instanceof EntityPlayer)) return; // On the first run send the map from the server to the client: EntityPlayer player = (EntityPlayer) entity; if (!world.isRemote && !data.isSyncedOnPlayer(player) && !data.isEmpty()) { data.syncOnPlayer(stack.getItemDamage(), player); } // Same thing with the local markers: MarkersData markers = AntiqueAtlasMod.markersData.getMarkersData(stack, world); if (!world.isRemote && !markers.isSyncedOnPlayer(player) && !markers.isEmpty()) { markers.syncOnPlayer(stack.getItemDamage(), player); } // Updating map around player data.updateMapAroundPlayer(player); } }