Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
package net.tfminecraft.activitytf.listeners;

import com.dre.brewery.BIngredients;
import com.dre.brewery.Brew;
import com.dre.brewery.api.events.IngedientAddEvent;
import com.dre.brewery.api.events.brew.BrewModifyEvent;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
Expand All @@ -22,4 +26,25 @@ public void onIngredientAdd(IngedientAddEvent event) {
}
manager.recordAction(event.getPlayer().getUniqueId(), "brew_ingredient", 1);
}

@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onBrewModify(BrewModifyEvent event) {
if (event.getType() == BrewModifyEvent.Type.FILL) {
recordBottle(event.getPlayer(), cookedMinutes(event.getBrew()));
}
}

// FILL fires once per bottle scooped from a cauldron. A bottle taken before the
// ingredients have cooked for a minute is BreweryX's "thick brew" and earns nothing.
void recordBottle(Player player, int cookedMinutes) {
if (player == null || cookedMinutes < 1) {
return;
}
manager.recordAction(player.getUniqueId(), "brew_bottle", 1);
}

private static int cookedMinutes(Brew brew) {
BIngredients ingredients = brew == null ? null : brew.getIngredients();
return ingredients == null ? 0 : ingredients.getCookedTime();
}
}
12 changes: 12 additions & 0 deletions src/main/resources/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -325,6 +325,18 @@ activities:
every: 10
points: 1
daily-cap: 1
# BreweryX: bottles filled from a brewing cauldron after at least a minute of cooking
brew_bottle:
display: "#e6ca40&lBottle Brews"
description:
- "&7Fill &a%every% &7bottles from a brewing cauldron"
- "&7after at least a minute of cooking."
- "&7Earn &a%points% &7activity points per completion."
- "&7"
material: GLASS_BOTTLE
every: 3
points: 1
daily-cap: 2
# RPCharacters: profession upgrades purchased
profession_upgrade:
display: "#e6ca40&lProfession Upgrade"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,4 +87,24 @@ void eachIngredientAddedCreditsOne() {

assertEquals(2, manager.tasks(uuid).count("brew_ingredient"));
}

@Test
void aBottleWithoutAPlayerIsIgnored() {
BreweryListener listener = new BreweryListener(null);
assertDoesNotThrow(() -> listener.recordBottle(null, 5));
}

@Test
void onlyCookedBottlesAreCredited() {
ActivityManager manager = managerWith("brew_bottle");
UUID uuid = revealed(manager);
BreweryListener listener = new BreweryListener(manager);

listener.recordBottle(stubPlayer(uuid), 0);
assertEquals(0, manager.tasks(uuid).count("brew_bottle"));

listener.recordBottle(stubPlayer(uuid), 1);
listener.recordBottle(stubPlayer(uuid), 12);
assertEquals(2, manager.tasks(uuid).count("brew_bottle"));
}
}