parent
c09ef37020
commit
d75383dc17
|
@ -0,0 +1,30 @@
|
|||
package io.izzel.arclight.common.mixin.bukkit;
|
||||
|
||||
import io.izzel.arclight.common.mod.server.ArclightContainer;
|
||||
import net.minecraft.world.inventory.AbstractContainerMenu;
|
||||
import org.bukkit.craftbukkit.v.entity.CraftHumanEntity;
|
||||
import org.bukkit.craftbukkit.v.inventory.CraftInventory;
|
||||
import org.bukkit.craftbukkit.v.inventory.CraftInventoryView;
|
||||
import org.bukkit.entity.HumanEntity;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.InventoryView;
|
||||
import org.spongepowered.asm.mixin.Final;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Mutable;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
@Mixin(value = CraftInventoryView.class, remap = false)
|
||||
public abstract class CraftInventoryViewMixin extends InventoryView {
|
||||
|
||||
@Shadow @Final @Mutable private CraftInventory viewing;
|
||||
|
||||
@Inject(method = "<init>", at = @At("RETURN"))
|
||||
private void arclight$validate(HumanEntity player, Inventory viewing, AbstractContainerMenu container, CallbackInfo ci) {
|
||||
if (container.slots.size() > this.countSlots()) {
|
||||
this.viewing = ArclightContainer.createInv(((CraftHumanEntity) player).getHandle(), container);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -32,7 +32,7 @@ public abstract class InventoryMixin implements Container, IInventoryBridge, Pla
|
|||
@Shadow protected abstract boolean hasRemainingSpaceForItem(ItemStack stack1, ItemStack stack2);
|
||||
// @formatter:on
|
||||
|
||||
private List<HumanEntity> transaction = new ArrayList<>();
|
||||
public List<HumanEntity> transaction = new ArrayList<>();
|
||||
private int maxStack = MAX_STACK;
|
||||
|
||||
public int canHold(ItemStack stack) {
|
||||
|
|
|
@ -30,10 +30,14 @@ public class ArclightContainer {
|
|||
*/
|
||||
public static InventoryView createInvView(AbstractContainerMenu container) {
|
||||
var containerOwner = ArclightCaptures.getContainerOwner();
|
||||
Inventory viewing = new CraftInventory(new ContainerInvWrapper(container, containerOwner));
|
||||
Inventory viewing = createInv(containerOwner, container);
|
||||
return new CraftInventoryView(((PlayerEntityBridge) containerOwner).bridge$getBukkitEntity(), viewing, container);
|
||||
}
|
||||
|
||||
public static CraftInventory createInv(Player containerOwner, AbstractContainerMenu container) {
|
||||
return new CraftInventory(new ContainerInvWrapper(container, containerOwner));
|
||||
}
|
||||
|
||||
private static class ContainerInvWrapper implements Container, IInventoryBridge {
|
||||
|
||||
private final AbstractContainerMenu container;
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"CraftEventFactoryMixin",
|
||||
"CraftHumanEntityMixin",
|
||||
"CraftInventoryMixin",
|
||||
"CraftInventoryViewMixin",
|
||||
"CraftItemFactoryMixin",
|
||||
"CraftItemStackMixin",
|
||||
"CraftLegacyLegacyMixin",
|
||||
|
|
Loading…
Reference in New Issue
Block a user