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