Fixed Bartering LootTable

This commit is contained in:
Frank 2022-06-07 22:20:54 +02:00
parent f7b4c8a618
commit 261099babd
7 changed files with 108 additions and 318 deletions

View file

@ -0,0 +1,56 @@
package org.betterx.bclib.mixin.common;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.storage.loot.LootContext;
import net.minecraft.world.level.storage.loot.LootPool;
import net.minecraft.world.level.storage.loot.entries.LootPoolEntryContainer;
import net.minecraft.world.level.storage.loot.functions.LootItemFunction;
import net.minecraft.world.level.storage.loot.predicates.LootItemCondition;
import net.minecraft.world.level.storage.loot.providers.number.NumberProvider;
import com.google.common.collect.Lists;
import org.betterx.bclib.interfaces.LootPoolAccessor;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import java.util.List;
import java.util.function.BiFunction;
import java.util.function.Predicate;
@Mixin(LootPool.class)
public class LootPoolMixin implements LootPoolAccessor {
@Shadow
@Final
public LootPoolEntryContainer[] entries;
@Shadow
@Final
public LootItemCondition[] conditions;
@Shadow
@Final
private Predicate<LootContext> compositeCondition;
@Shadow
@Final
public LootItemFunction[] functions;
@Shadow
@Final
private BiFunction<ItemStack, LootContext, ItemStack> compositeFunction;
@Shadow
@Final
public NumberProvider rolls;
@Shadow
@Final
public NumberProvider bonusRolls;
@Override
public LootPool bcl_mergeEntries(List<LootPoolEntryContainer> newEntries) {
final List<LootPoolEntryContainer> merged = Lists.newArrayList(entries);
merged.addAll(newEntries);
return new LootPool(merged.toArray(new LootPoolEntryContainer[0]),
this.conditions,
this.functions,
this.rolls,
this.bonusRolls);
}
}