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);
|
@Shadow protected abstract boolean hasRemainingSpaceForItem(ItemStack stack1, ItemStack stack2);
|
||||||
// @formatter:on
|
// @formatter:on
|
||||||
|
|
||||||
private List<HumanEntity> transaction = new ArrayList<>();
|
public List<HumanEntity> transaction = new ArrayList<>();
|
||||||
private int maxStack = MAX_STACK;
|
private int maxStack = MAX_STACK;
|
||||||
|
|
||||||
public int canHold(ItemStack stack) {
|
public int canHold(ItemStack stack) {
|
||||||
|
|
|
@ -30,10 +30,14 @@ public class ArclightContainer {
|
||||||
*/
|
*/
|
||||||
public static InventoryView createInvView(AbstractContainerMenu container) {
|
public static InventoryView createInvView(AbstractContainerMenu container) {
|
||||||
var containerOwner = ArclightCaptures.getContainerOwner();
|
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);
|
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 static class ContainerInvWrapper implements Container, IInventoryBridge {
|
||||||
|
|
||||||
private final AbstractContainerMenu container;
|
private final AbstractContainerMenu container;
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
"CraftEventFactoryMixin",
|
"CraftEventFactoryMixin",
|
||||||
"CraftHumanEntityMixin",
|
"CraftHumanEntityMixin",
|
||||||
"CraftInventoryMixin",
|
"CraftInventoryMixin",
|
||||||
|
"CraftInventoryViewMixin",
|
||||||
"CraftItemFactoryMixin",
|
"CraftItemFactoryMixin",
|
||||||
"CraftItemStackMixin",
|
"CraftItemStackMixin",
|
||||||
"CraftLegacyLegacyMixin",
|
"CraftLegacyLegacyMixin",
|
||||||
|
|
Loading…
Reference in New Issue
Block a user