Fix basic trials not rewarding materials

This commit is contained in:
Melledy
2025-10-29 20:49:34 -07:00
parent d024ab62a8
commit e002bec13a
13 changed files with 147 additions and 57 deletions
@@ -197,6 +197,12 @@ public class Inventory extends PlayerManager {
changes = new PlayerChangeInfo();
}
// Sanity
if (params == null || params.isEmpty()) {
return changes;
}
// Add items
for (var param : params.getEntrySet()) {
this.addItem(param.getIntKey(), param.getIntValue(), changes);
}
@@ -222,6 +228,12 @@ public class Inventory extends PlayerManager {
changes = new PlayerChangeInfo();
}
// Sanity
if (params == null || params.isEmpty()) {
return changes;
}
// Remove items
for (var param : params.getEntrySet()) {
this.removeItem(param.getIntKey(), param.getIntValue(), changes);
}
@@ -4,6 +4,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
import emu.nebula.proto.Public.Item;
import emu.nebula.proto.Public.ItemInfo;
import emu.nebula.proto.Public.ItemTpl;
import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap;
@@ -60,6 +61,8 @@ public class ItemParamMap extends Int2IntOpenHashMap {
return this.int2IntEntrySet();
}
// Converters (lists/streams)
public List<ItemParam> toList() {
List<ItemParam> list = new ArrayList<>();
@@ -76,6 +79,12 @@ public class ItemParamMap extends Int2IntOpenHashMap {
.map(e -> ItemTpl.newInstance().setTid(e.getIntKey()).setQty(e.getIntValue()));
}
public Stream<Item> toItemProtoStream() {
return getEntrySet()
.stream()
.map(e -> Item.newInstance().setTid(e.getIntKey()).setQty(e.getIntValue()));
}
// Helpers
public static ItemParamMap fromTemplates(RepeatedMessage<ItemTpl> items) {