use of org.spongepowered.common.inventory.lens.slots.SlotLens in project SpongeCommon by SpongePowered.
the class CompoundSlotLensProvider method add.
/**
* Adds all slots from this inventory adapter.
*
* @param adapter The adapter
*
* @return this provider for chaining
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public CompoundSlotLensProvider add(InventoryAdapter adapter) {
for (Inventory slot : ((Inventory) adapter).slots()) {
SlotLens slotLens = ((SlotLens) ((SlotAdapter) slot).inventoryAdapter$getRootLens());
this.slotList.add(slotLens);
}
return this;
}
use of org.spongepowered.common.inventory.lens.slots.SlotLens in project SpongeCommon by SpongePowered.
the class PlayerInventoryLens method init.
protected void init(SlotLensProvider slots) {
// Adding slots
for (int ord = 0, slot = this.base; ord < this.size; ord++, slot++) {
this.addChild(slots.getSlotLens(slot), KeyValuePair.slotIndex(ord));
}
int base = this.base;
Map<EquipmentType, SlotLens> equipmentLenses = new LinkedHashMap<>();
if (this.isContainer) {
this.armor = new ArmorInventoryLens(base, slots, true);
equipmentLenses.put(EquipmentTypes.HEAD.get(), slots.getSlotLens(base + 0));
equipmentLenses.put(EquipmentTypes.CHEST.get(), slots.getSlotLens(base + 1));
equipmentLenses.put(EquipmentTypes.LEGS.get(), slots.getSlotLens(base + 2));
equipmentLenses.put(EquipmentTypes.FEET.get(), slots.getSlotLens(base + 3));
// 4
base += PlayerInventoryLens.ARMOR;
this.primary = new PrimaryPlayerInventoryLens(base, slots, true);
base += this.primary.slotCount();
this.offhand = slots.getSlotLens(base);
base += PlayerInventoryLens.OFFHAND;
equipmentLenses.put(EquipmentTypes.OFF_HAND.get(), this.offhand);
this.addSpanningChild(this.armor);
this.addSpanningChild(this.primary);
this.addSpanningChild(this.offhand);
} else {
this.primary = new PrimaryPlayerInventoryLens(base, slots, false);
base += this.primary.slotCount();
this.armor = new ArmorInventoryLens(base, slots, false);
equipmentLenses.put(EquipmentTypes.FEET.get(), slots.getSlotLens(base + 0));
equipmentLenses.put(EquipmentTypes.LEGS.get(), slots.getSlotLens(base + 1));
equipmentLenses.put(EquipmentTypes.CHEST.get(), slots.getSlotLens(base + 2));
equipmentLenses.put(EquipmentTypes.HEAD.get(), slots.getSlotLens(base + 3));
base += PlayerInventoryLens.ARMOR;
this.offhand = slots.getSlotLens(base);
base += PlayerInventoryLens.OFFHAND;
equipmentLenses.put(EquipmentTypes.OFF_HAND.get(), this.offhand);
this.addSpanningChild(this.primary);
this.addSpanningChild(this.armor);
this.addSpanningChild(this.offhand);
}
equipmentLenses.put(EquipmentTypes.MAIN_HAND.get(), new HeldHandSlotLens(this.primary.getHotbar()));
this.equipment = new EquipmentInventoryLens(equipmentLenses);
for (Map.Entry<EquipmentType, SlotLens> entry : equipmentLenses.entrySet()) {
this.addChild(entry.getValue(), KeyValuePair.of(Keys.EQUIPMENT_TYPE, entry.getKey()));
}
this.addChild(this.equipment);
this.addMissingSpanningSlots(base, slots);
}
use of org.spongepowered.common.inventory.lens.slots.SlotLens in project SpongeCommon by SpongePowered.
the class EquipmentInventoryLens method init.
private void init(Map<EquipmentType, SlotLens> lenses) {
for (EquipmentSlot slot : EquipmentSlot.values()) {
final EquipmentType type = (EquipmentType) (Object) slot;
final SlotLens lensAtSlot = lenses.get(slot);
if (lensAtSlot != null) {
final EquipmentSlotLens equipmentSlotLens = new EquipmentSlotLens(this, lensAtSlot, type);
this.addSpanningChild(equipmentSlotLens, KeyValuePair.of(Keys.EQUIPMENT_TYPE, type));
this.lenses.put(type, equipmentSlotLens);
}
}
}
use of org.spongepowered.common.inventory.lens.slots.SlotLens in project SpongeCommon by SpongePowered.
the class ServerPlayerMixin_Inventory method impl$getSpongeSlot.
// -- small bridge-like methods
@SuppressWarnings("ConstantConditions")
@Override
protected Slot impl$getSpongeSlot(final EquipmentSlot equipmentSlot) {
final EquipmentType equipmentType = (EquipmentType) (Object) equipmentSlot;
final PlayerInventoryBridge inventory = (PlayerInventoryBridge) ((net.minecraft.server.level.ServerPlayer) (Object) this).inventory;
final Lens lens = ((InventoryAdapter) inventory).inventoryAdapter$getRootLens();
final Fabric fabric = ((InventoryAdapter) inventory).inventoryAdapter$getFabric();
if (lens instanceof PlayerInventoryLens) {
final SlotLens slotLens = ((PlayerInventoryLens) lens).getEquipmentLens().getSlotLens(equipmentType);
return slotLens.getAdapter(fabric, (Inventory) inventory);
}
throw new IllegalStateException("Unknown Lens for Player Inventory: " + lens.getClass().getName());
}
use of org.spongepowered.common.inventory.lens.slots.SlotLens in project SpongeCommon by SpongePowered.
the class LivingEntityMixin_EquipmentFabric_Inventory method lensGeneratorBridge$generateLens.
@Override
public Lens lensGeneratorBridge$generateLens(SlotLensProvider slotLensProvider) {
Map<EquipmentType, SlotLens> equipmentLenses = new LinkedHashMap<>();
for (int i = 0, slotsLength = EquipmentSlot.values().length; i < slotsLength; i++) {
EquipmentSlot slot = EquipmentSlot.values()[i];
equipmentLenses.put((EquipmentType) (Object) slot, slotLensProvider.getSlotLens(i));
}
return new EquipmentInventoryLens(equipmentLenses);
}
Aggregations