Skip to content

Commit 1f9805d

Browse files
JustinasLaclaude
andcommitted
feat: credit drinking BreweryX brews
Add a brew_drink activity fed by BrewDrinkEvent. Brews that match no recipe (quality 0) earn nothing. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
1 parent 11327e9 commit 1f9805d

3 files changed

Lines changed: 45 additions & 0 deletions

File tree

‎src/main/java/net/tfminecraft/activitytf/listeners/BreweryListener.java‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.dre.brewery.Barrel;
55
import com.dre.brewery.Brew;
66
import com.dre.brewery.api.events.IngedientAddEvent;
7+
import com.dre.brewery.api.events.brew.BrewDrinkEvent;
78
import com.dre.brewery.api.events.brew.BrewModifyEvent;
89
import org.bukkit.Bukkit;
910
import org.bukkit.Material;
@@ -112,6 +113,19 @@ public void onContainerTake(InventoryClickEvent event) {
112113
}
113114
}
114115

116+
// Brews that match no recipe (failed or unfinished ones) have quality 0.
117+
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
118+
public void onDrink(BrewDrinkEvent event) {
119+
recordDrink(event.getPlayer(), event.getQuality());
120+
}
121+
122+
void recordDrink(Player player, int quality) {
123+
if (player == null || quality < 1) {
124+
return;
125+
}
126+
manager.recordAction(player.getUniqueId(), "brew_drink", 1);
127+
}
128+
115129
private void creditOnce(Player player, Inventory inventory, int slot, ItemStack item,
116130
NamespacedKey key, String activityId) {
117131
ItemMeta meta = item.getItemMeta();

‎src/main/resources/config.yml‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,17 @@ activities:
363363
every: 3
364364
points: 1
365365
daily-cap: 1
366+
# BreweryX: brews drunk that match a recipe (quality above zero)
367+
brew_drink:
368+
display: "#e6ca40&lDrink Brews"
369+
description:
370+
- "&7Drink &a%every% &7finished brews."
371+
- "&7Earn &a%points% &7activity points per completion."
372+
- "&7"
373+
material: POTION
374+
every: 3
375+
points: 1
376+
daily-cap: 1
366377
# RPCharacters: profession upgrades purchased
367378
profession_upgrade:
368379
display: "#e6ca40&lProfession Upgrade"

‎src/test/java/net/tfminecraft/activitytf/listeners/BreweryListenerTest.java‎

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,26 @@ void onlyCookedBottlesAreCredited() {
114114
assertEquals(2, manager.tasks(uuid).count("brew_bottle"));
115115
}
116116

117+
@Test
118+
void aDrinkWithoutAPlayerIsIgnored() {
119+
BreweryListener listener = new BreweryListener(null);
120+
assertDoesNotThrow(() -> listener.recordDrink(null, 10));
121+
}
122+
123+
@Test
124+
void onlyDrinksOfARealBrewAreCredited() {
125+
ActivityManager manager = managerWith("brew_drink");
126+
UUID uuid = revealed(manager);
127+
BreweryListener listener = new BreweryListener(manager);
128+
129+
listener.recordDrink(stubPlayer(uuid), 0);
130+
assertEquals(0, manager.tasks(uuid).count("brew_drink"));
131+
132+
listener.recordDrink(stubPlayer(uuid), 1);
133+
listener.recordDrink(stubPlayer(uuid), 10);
134+
assertEquals(2, manager.tasks(uuid).count("brew_drink"));
135+
}
136+
117137
private static PersistentDataContainer stubData() {
118138
Map<Object, Object> values = new HashMap<>();
119139
InvocationHandler handler = (proxy, method, args) -> switch (method.getName()) {

0 commit comments

Comments
 (0)