@Subscribe
	public void onChatMessage(ChatMessage e)
	{
		if (e.getType() != ChatMessageType.GAMEMESSAGE && e.getType() != ChatMessageType.SPAM)
		{
			return;
		}

		CompostState compostUsed = determineCompostUsed(e.getMessage());
		if (compostUsed == null)
		{
			return;
		}

		this.expirePendingActions();

		pendingCompostActions.values()
			.stream()
			.filter(this::playerIsBesidePatch)
			.findFirst()
			.ifPresent(pc ->
			{
				setCompostState(pc.getFarmingPatch(), compostUsed);
				pendingCompostActions.remove(pc.getFarmingPatch());
			});
	}
@Test
	public void onChatMessage_ignoresInvalidTypes()
	{
		ChatMessage chatEvent = mock(ChatMessage.class);
		when(chatEvent.getType()).thenReturn(ChatMessageType.PUBLICCHAT);

		compostTracker.onChatMessage(chatEvent);

		verifyNoInteractions(client);
		verifyNoInteractions(farmingWorld);
	}