mirror of
https://github.com/Minestom/Minestom.git
synced 2025-02-20 14:21:29 +01:00
Automatically check conditions when generating
This commit is contained in:
parent
556c6fd837
commit
bf9316d06b
@ -87,16 +87,7 @@ public class LootTable {
|
||||
WeightedRandom<Entry> weightedRandom = new WeightedRandom<>(entries);
|
||||
for (int i = 0; i < rollCount+bonusRollCount; i++) {
|
||||
Entry entry = weightedRandom.get(rng);
|
||||
boolean shouldGenerate = true;
|
||||
for(Condition c : entry.getConditions()) {
|
||||
if(!c.test(arguments)) {
|
||||
shouldGenerate = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(shouldGenerate) {
|
||||
entry.generateStacks(output, arguments);
|
||||
}
|
||||
entry.generateStacks(output, arguments);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -130,6 +121,14 @@ public class LootTable {
|
||||
return type;
|
||||
}
|
||||
|
||||
public abstract void generateStacks(List<ItemStack> output, Data arguments);
|
||||
public final void generateStacks(List<ItemStack> output, Data arguments) {
|
||||
for(Condition c : conditions) {
|
||||
if(!c.test(arguments))
|
||||
return;
|
||||
}
|
||||
generate(output, arguments);
|
||||
}
|
||||
|
||||
protected abstract void generate(List<ItemStack> output, Data arguments);
|
||||
}
|
||||
}
|
||||
|
@ -16,7 +16,7 @@ public class AlternativesEntry extends LootTable.Entry {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateStacks(List<ItemStack> output, Data arguments) {
|
||||
public void generate(List<ItemStack> output, Data arguments) {
|
||||
for(LootTable.Entry c : children) {
|
||||
int previousSize = output.size();
|
||||
c.generateStacks(output, arguments);
|
||||
|
@ -16,7 +16,7 @@ public class AnotherLootTableEntry extends LootTable.Entry {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateStacks(List<ItemStack> output, Data arguments) {
|
||||
public void generate(List<ItemStack> output, Data arguments) {
|
||||
output.addAll(table.generate(arguments));
|
||||
}
|
||||
}
|
||||
|
@ -20,7 +20,7 @@ public class DynamicEntry extends LootTable.Entry {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateStacks(List<ItemStack> output, Data arguments) {
|
||||
public void generate(List<ItemStack> output, Data arguments) {
|
||||
List<ItemStack> toDrop = arguments.getOrDefault(DROP_LIST_KEY, Collections.emptyList());
|
||||
output.addAll(toDrop);
|
||||
}
|
||||
|
@ -16,7 +16,7 @@ public class GroupEntry extends LootTable.Entry {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateStacks(List<ItemStack> output, Data arguments) {
|
||||
public void generate(List<ItemStack> output, Data arguments) {
|
||||
for (LootTable.Entry child : children) {
|
||||
child.generateStacks(output, arguments);
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ public class ItemEntry extends LootTable.Entry {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateStacks(List<ItemStack> output, Data arguments) {
|
||||
public void generate(List<ItemStack> output, Data arguments) {
|
||||
ItemStack stack = new ItemStack(item, (byte)1);
|
||||
for (LootTableFunction function : functions) {
|
||||
stack = function.apply(stack, arguments);
|
||||
|
@ -16,7 +16,7 @@ public class SequenceEntry extends LootTable.Entry {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateStacks(List<ItemStack> output, Data arguments) {
|
||||
public void generate(List<ItemStack> output, Data arguments) {
|
||||
for(LootTable.Entry c : children) {
|
||||
int previousSize = output.size();
|
||||
c.generateStacks(output, arguments);
|
||||
|
@ -19,7 +19,7 @@ public class TagEntry extends LootTable.Entry {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateStacks(List<ItemStack> output, Data arguments) {
|
||||
public void generate(List<ItemStack> output, Data arguments) {
|
||||
// TODO: load tags
|
||||
if(expand) {
|
||||
// TODO: choose a single random item from the tag
|
||||
|
Loading…
Reference in New Issue
Block a user