Spaces:
Build error
Build error
File size: 2,701 Bytes
d46f4a3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
package net.minecraft.world.entity;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.annotation.Nullable;
import net.minecraft.core.component.DataComponents;
import net.minecraft.resources.ResourceKey;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.equipment.Equippable;
import net.minecraft.world.level.storage.loot.LootParams;
import net.minecraft.world.level.storage.loot.LootTable;
public interface EquipmentUser {
void setItemSlot(EquipmentSlot p_333752_, ItemStack p_331668_);
ItemStack getItemBySlot(EquipmentSlot p_329199_);
void setDropChance(EquipmentSlot p_331517_, float p_334697_);
default void equip(EquipmentTable p_331159_, LootParams p_332346_) {
this.equip(p_331159_.lootTable(), p_332346_, p_331159_.slotDropChances());
}
default void equip(ResourceKey<LootTable> p_329232_, LootParams p_330675_, Map<EquipmentSlot, Float> p_328003_) {
this.equip(p_329232_, p_330675_, 0L, p_328003_);
}
default void equip(ResourceKey<LootTable> p_331471_, LootParams p_333826_, long p_331881_, Map<EquipmentSlot, Float> p_328541_) {
LootTable loottable = p_333826_.getLevel().getServer().reloadableRegistries().getLootTable(p_331471_);
if (loottable != LootTable.EMPTY) {
List<ItemStack> list = loottable.getRandomItems(p_333826_, p_331881_);
List<EquipmentSlot> list1 = new ArrayList<>();
for (ItemStack itemstack : list) {
EquipmentSlot equipmentslot = this.resolveSlot(itemstack, list1);
if (equipmentslot != null) {
ItemStack itemstack1 = equipmentslot.limit(itemstack);
this.setItemSlot(equipmentslot, itemstack1);
Float f = p_328541_.get(equipmentslot);
if (f != null) {
this.setDropChance(equipmentslot, f);
}
list1.add(equipmentslot);
}
}
}
}
@Nullable
default EquipmentSlot resolveSlot(ItemStack p_329649_, List<EquipmentSlot> p_334449_) {
if (p_329649_.isEmpty()) {
return null;
} else {
Equippable equippable = p_329649_.get(DataComponents.EQUIPPABLE);
if (equippable != null) {
EquipmentSlot equipmentslot = equippable.slot();
if (!p_334449_.contains(equipmentslot)) {
return equipmentslot;
}
} else if (!p_334449_.contains(EquipmentSlot.MAINHAND)) {
return EquipmentSlot.MAINHAND;
}
return null;
}
}
} |