diff --git a/api/src/main/java/appeng/api/implementations/guiobjects/INetworkTool.java b/api/src/main/java/appeng/api/implementations/guiobjects/INetworkTool.java index b0624a16f..331489f27 100644 --- a/api/src/main/java/appeng/api/implementations/guiobjects/INetworkTool.java +++ b/api/src/main/java/appeng/api/implementations/guiobjects/INetworkTool.java @@ -23,7 +23,7 @@ package appeng.api.implementations.guiobjects; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import appeng.api.networking.IGridHost; @@ -33,5 +33,5 @@ import appeng.api.networking.IGridHost; public interface INetworkTool extends IGuiItemObject { IGridHost getGridHost(); // null for most purposes. - ItemTransferable getInventory(); + FixedItemInv getInventory(); } diff --git a/api/src/main/java/appeng/api/implementations/tiles/ISegmentedInventory.java b/api/src/main/java/appeng/api/implementations/tiles/ISegmentedInventory.java index baee72cf3..2acafd03f 100644 --- a/api/src/main/java/appeng/api/implementations/tiles/ISegmentedInventory.java +++ b/api/src/main/java/appeng/api/implementations/tiles/ISegmentedInventory.java @@ -23,7 +23,7 @@ package appeng.api.implementations.tiles; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; public interface ISegmentedInventory { @@ -36,5 +36,5 @@ public interface ISegmentedInventory { * * @return inventory with inventory name */ - ItemTransferable getInventoryByName(String name); + FixedItemInv getInventoryByName(String name); } diff --git a/api/src/main/java/appeng/api/implementations/tiles/IViewCellStorage.java b/api/src/main/java/appeng/api/implementations/tiles/IViewCellStorage.java index 925a8f4ed..a6dda2a43 100644 --- a/api/src/main/java/appeng/api/implementations/tiles/IViewCellStorage.java +++ b/api/src/main/java/appeng/api/implementations/tiles/IViewCellStorage.java @@ -23,7 +23,7 @@ package appeng.api.implementations.tiles; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; public interface IViewCellStorage { @@ -32,5 +32,5 @@ public interface IViewCellStorage { * * @return inventory with at least 5 slot */ - ItemTransferable getViewCellStorage(); + FixedItemInv getViewCellStorage(); } diff --git a/api/src/main/java/appeng/api/storage/cells/ICellInventory.java b/api/src/main/java/appeng/api/storage/cells/ICellInventory.java index af39efb53..baf1d4b9b 100644 --- a/api/src/main/java/appeng/api/storage/cells/ICellInventory.java +++ b/api/src/main/java/appeng/api/storage/cells/ICellInventory.java @@ -23,7 +23,7 @@ package appeng.api.storage.cells; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.item.ItemStack; import appeng.api.config.FuzzyMode; @@ -50,12 +50,12 @@ public interface ICellInventory> extends IMEInventory { /** * @return access configured list */ - ItemTransferable getConfigInventory(); + FixedItemInv getConfigInventory(); /** * @return access installed upgrades. */ - ItemTransferable getUpgradesInventory(); + FixedItemInv getUpgradesInventory(); /** * @return How many bytes are used for each type? diff --git a/api/src/main/java/appeng/api/storage/cells/ICellWorkbenchItem.java b/api/src/main/java/appeng/api/storage/cells/ICellWorkbenchItem.java index 6260485da..3fa9fa52d 100644 --- a/api/src/main/java/appeng/api/storage/cells/ICellWorkbenchItem.java +++ b/api/src/main/java/appeng/api/storage/cells/ICellWorkbenchItem.java @@ -23,7 +23,7 @@ package appeng.api.storage.cells; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.item.ItemStack; import appeng.api.config.FuzzyMode; @@ -47,7 +47,7 @@ public interface ICellWorkbenchItem { * * onInventoryChange will be called when saving is needed. */ - ItemTransferable getUpgradesInventory(ItemStack is); + FixedItemInv getUpgradesInventory(ItemStack is); /** * Used to extract, or mirror the contents of the work bench onto the cell. @@ -56,7 +56,7 @@ public interface ICellWorkbenchItem { * * onInventoryChange will be called when saving is needed. */ - ItemTransferable getConfigInventory(ItemStack is); + FixedItemInv getConfigInventory(ItemStack is); /** * @return the current fuzzy status. diff --git a/core/src/main/java/appeng/tile/AEBaseBlockEntity.java b/core/src/main/java/appeng/tile/AEBaseBlockEntity.java index a75f16d83..69f4e1486 100644 --- a/core/src/main/java/appeng/tile/AEBaseBlockEntity.java +++ b/core/src/main/java/appeng/tile/AEBaseBlockEntity.java @@ -18,7 +18,7 @@ package appeng.tile; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import appeng.api.implementations.tiles.ISegmentedInventory; import appeng.api.util.ICommonTile; import appeng.api.util.IConfigManager; @@ -296,7 +296,7 @@ public class AEBaseBlockEntity extends BlockEntity implements IOrientable, IComm } if (this instanceof ISegmentedInventory) { - final ItemTransferable inv = ((ISegmentedInventory) this).getInventoryByName("config"); + final FixedItemInv inv = ((ISegmentedInventory) this).getInventoryByName("config"); if (inv instanceof AppEngInternalAEInventory) { final AppEngInternalAEInventory target = (AppEngInternalAEInventory) inv; final AppEngInternalAEInventory tmp = new AppEngInternalAEInventory(null, target.getSlots()); @@ -354,7 +354,7 @@ public class AEBaseBlockEntity extends BlockEntity implements IOrientable, IComm } if (this instanceof ISegmentedInventory) { - final ItemTransferable inv = ((ISegmentedInventory) this).getInventoryByName("config"); + final FixedItemInv inv = ((ISegmentedInventory) this).getInventoryByName("config"); if (inv instanceof AppEngInternalAEInventory) { ((AppEngInternalAEInventory) inv).writeToNBT(output, "config"); } diff --git a/core/src/main/java/appeng/tile/AEBaseInvBlockEntity.java b/core/src/main/java/appeng/tile/AEBaseInvBlockEntity.java index e6d701b7f..6343a407a 100644 --- a/core/src/main/java/appeng/tile/AEBaseInvBlockEntity.java +++ b/core/src/main/java/appeng/tile/AEBaseInvBlockEntity.java @@ -23,7 +23,7 @@ import java.util.List; import javax.annotation.Nonnull; import alexiil.mc.lib.attributes.item.FixedItemInv; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import alexiil.mc.lib.attributes.item.impl.EmptyFixedItemInv; import net.minecraft.block.BlockState; import net.minecraft.block.entity.BlockEntityType; @@ -49,12 +49,12 @@ public abstract class AEBaseInvBlockEntity extends AEBaseBlockEntity implements @Override public void fromTag(BlockState state, final CompoundTag data) { super.fromTag(state, data); - final ItemTransferable inv = this.getInternalInventory(); + final FixedItemInv inv = this.getInternalInventory(); if (inv != EmptyFixedItemInv.INSTANCE) { final CompoundTag opt = data.getCompound("inv"); - for (int x = 0; x < inv.getSlots(); x++) { + for (int x = 0; x < inv.getSlotCount(); x++) { final CompoundTag item = opt.getCompound("item" + x); - ItemHandlerUtil.setStackInSlot(inv, x, ItemStack.read(item)); + ItemHandlerUtil.setStackInSlot(inv, x, ItemStack.fromTag(item)); } } } @@ -83,10 +83,10 @@ public abstract class AEBaseInvBlockEntity extends AEBaseBlockEntity implements @Override public void getDrops(final World w, final BlockPos pos, final List drops) { - final ItemTransferable inv = this.getInternalInventory(); + final FixedItemInv inv = this.getInternalInventory(); - for (int l = 0; l < inv.getSlots(); l++) { - final ItemStack is = inv.getStackInSlot(l); + for (int l = 0; l < inv.getSlotCount(); l++) { + final ItemStack is = inv.getInvStack(l); if (!is.isEmpty()) { drops.add(is); } @@ -94,11 +94,11 @@ public abstract class AEBaseInvBlockEntity extends AEBaseBlockEntity implements } @Override - public abstract void onChangeInventory(ItemTransferable inv, int slot, InvOperation mc, ItemStack removed, + public abstract void onChangeInventory(FixedItemInv inv, int slot, InvOperation mc, ItemStack removed, ItemStack added); protected @Nonnull - ItemTransferable getItemHandlerForSide(@Nonnull Direction side) { + FixedItemInv getItemHandlerForSide(@Nonnull Direction side) { return this.getInternalInventory(); } diff --git a/src/main/java/appeng/block/crafting/CraftingStorageItem.java b/src/main/java/appeng/block/crafting/CraftingStorageItem.java index ce986b79d..d826dbf6b 100644 --- a/src/main/java/appeng/block/crafting/CraftingStorageItem.java +++ b/src/main/java/appeng/block/crafting/CraftingStorageItem.java @@ -33,12 +33,12 @@ public class CraftingStorageItem extends AEBaseBlockItem { } @Override - public ItemStack getContainerItem(final ItemStack itemStack) { + public ItemStack getRecipeRemainder(final ItemStack itemStack) { return AEApi.instance().definitions().blocks().craftingUnit().maybeStack(1).orElse(ItemStack.EMPTY); } @Override - public boolean hasContainerItem(final ItemStack stack) { + public boolean hasRecipeRemainder(final ItemStack stack) { return AEConfig.instance().isFeatureEnabled(AEFeature.ENABLE_DISASSEMBLY_CRAFTING); } } diff --git a/src/main/java/appeng/block/misc/ChargerBlock.java b/src/main/java/appeng/block/misc/ChargerBlock.java index 52228b1d6..c2fe85103 100644 --- a/src/main/java/appeng/block/misc/ChargerBlock.java +++ b/src/main/java/appeng/block/misc/ChargerBlock.java @@ -104,7 +104,7 @@ public class ChargerBlock extends AEBaseTileBlock { final ChargerBlockEntity tile = this.getBlockEntity(w, pos); if (tile != null) { if (AEApi.instance().definitions().materials().certusQuartzCrystalCharged() - .isSameAs(tile.getInternalInventory().getStackInSlot(0))) { + .isSameAs(tile.getInternalInventory().getInvStack(0))) { final double xOff = 0.0; final double yOff = 0.0; final double zOff = 0.0; @@ -185,7 +185,7 @@ public class ChargerBlock extends AEBaseTileBlock { @Environment(EnvType.CLIENT) private static Pair getRenderedItem(ChargerBlockEntity tile) { TransformationMatrix transform = new TransformationMatrix(new Vector3f(0.5f, 0.375f, 0.5f), null, null, null); - return new ImmutablePair<>(tile.getInternalInventory().getStackInSlot(0), transform); + return new ImmutablePair<>(tile.getInternalInventory().getInvStack(0), transform); } } diff --git a/src/main/java/appeng/block/misc/TinyTNTBlock.java b/src/main/java/appeng/block/misc/TinyTNTBlock.java index db031406f..9a757f962 100644 --- a/src/main/java/appeng/block/misc/TinyTNTBlock.java +++ b/src/main/java/appeng/block/misc/TinyTNTBlock.java @@ -85,9 +85,9 @@ public class TinyTNTBlock extends AEBaseBlock { if (!w.isClient) { final TinyTNTPrimedEntity primedTinyTNTEntity = new TinyTNTPrimedEntity(w, pos.getX() + 0.5F, pos.getY() + 0.5F, pos.getZ() + 0.5F, igniter); - w.addEntity(primedTinyTNTEntity); - w.playSound(null, primedTinyTNTEntity.getPosX(), primedTinyTNTEntity.getPosY(), - primedTinyTNTEntity.getPosZ(), SoundEvents.ENTITY_TNT_PRIMED, SoundCategory.BLOCKS, 1, 1); + w.spawnEntity(primedTinyTNTEntity); + w.playSound(null, primedTinyTNTEntity.getX(), primedTinyTNTEntity.getY(), + primedTinyTNTEntity.getZ(), SoundEvents.ENTITY_TNT_PRIMED, SoundCategory.BLOCKS, 1, 1); } } @@ -145,7 +145,7 @@ public class TinyTNTBlock extends AEBaseBlock { pos.getY() + 0.5F, pos.getZ() + 0.5F, exp.getExplosivePlacedBy()); primedTinyTNTEntity .setFuse(w.rand.nextInt(primedTinyTNTEntity.getFuse() / 4) + primedTinyTNTEntity.getFuse() / 8); - w.addEntity(primedTinyTNTEntity); + w.spawnEntity(primedTinyTNTEntity); } } diff --git a/src/main/java/appeng/block/networking/CableBusBlock.java b/src/main/java/appeng/block/networking/CableBusBlock.java index 92a939fb9..5f481a432 100644 --- a/src/main/java/appeng/block/networking/CableBusBlock.java +++ b/src/main/java/appeng/block/networking/CableBusBlock.java @@ -168,7 +168,7 @@ public class CableBusBlock extends AEBaseTileBlock implemen @Override public ItemStack getPickBlock(BlockState state, HitResult target, BlockView world, BlockPos pos, PlayerEntity player) { - final Vec3d v3 = target.getHitVec().subtract(pos.getX(), pos.getY(), pos.getZ()); + final Vec3d v3 = target.getPos().subtract(pos.getX(), pos.getY(), pos.getZ()); final SelectedPart sp = this.cb(world, pos).selectPart(v3); if (sp.part != null) { @@ -194,7 +194,7 @@ public class CableBusBlock extends AEBaseTileBlock implemen if (target.getType() != Type.BLOCK) { return false; } - BlockPos blockPos = new BlockPos(target.getHitVec().x, target.getHitVec().y, target.getHitVec().z); + BlockPos blockPos = new BlockPos(target.getPos().x, target.getPos().y, target.getPos().z); ICableBusContainer cb = this.cb(world, blockPos); @@ -214,9 +214,9 @@ public class CableBusBlock extends AEBaseTileBlock implemen // Spawn a particle for one of the particle textures Sprite texture = Platform.pickRandom(cableBusModel.getParticleTextures(renderState)); if (texture != null) { - double x = target.getHitVec().x; - double y = target.getHitVec().y; - double z = target.getHitVec().z; + double x = target.getPos().x; + double y = target.getPos().y; + double z = target.getPos().z; // FIXME: Check how this looks, probably like shit, maybe provide parts the // ability to supply particle textures??? effectRenderer @@ -310,7 +310,7 @@ public class CableBusBlock extends AEBaseTileBlock implemen if (rtr instanceof BlockHitResult) { BlockHitResult brtr = (BlockHitResult) rtr; if (brtr.getPos().equals(pos)) { - final Vec3d hitVec = rtr.getHitVec().subtract(new Vec3d(pos)); + final Vec3d hitVec = rtr.getPos().subtract(new Vec3d(pos)); if (this.cb(worldIn, pos).clicked(player, Hand.MAIN_HAND, hitVec)) { NetworkHandler.instance().sendToServer(new ClickPacket(pos, brtr.getSide(), (float) hitVec.x, @@ -329,7 +329,7 @@ public class CableBusBlock extends AEBaseTileBlock implemen public ActionResult onActivated(final World w, final BlockPos pos, final PlayerEntity player, final Hand hand, final @Nullable ItemStack heldItem, final BlockHitResult hit) { // Transform from world into block space - Vec3d hitVec = hit.getHitVec(); + Vec3d hitVec = hit.getPos(); Vec3d hitInBlock = new Vec3d(hitVec.x - pos.getX(), hitVec.y - pos.getY(), hitVec.z - pos.getZ()); return this.cb(w, pos).activate(player, hand, hitInBlock) ? ActionResult.SUCCESS : ActionResult.PASS; } diff --git a/src/main/java/appeng/block/storage/ChestBlock.java b/src/main/java/appeng/block/storage/ChestBlock.java index 390da08b1..11bbe3b0b 100644 --- a/src/main/java/appeng/block/storage/ChestBlock.java +++ b/src/main/java/appeng/block/storage/ChestBlock.java @@ -29,6 +29,7 @@ import net.minecraft.state.EnumProperty; import net.minecraft.state.StateContainer; import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; +import net.minecraft.util.Util; import net.minecraft.util.math.BlockPos; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.world.World; @@ -82,7 +83,7 @@ public class ChestBlock extends AEBaseTileBlock { if (hit.getSide() == tg.getUp()) { if (!tg.openGui(p)) { - p.sendMessage(PlayerMessages.ChestCannotReadStorageCell.get()); + p.sendSystemMessage(PlayerMessages.ChestCannotReadStorageCell.get(), Util.NIL_UUID); } } else { ContainerOpener.openContainer(ChestContainer.TYPE, p, diff --git a/src/main/java/appeng/client/ClientHelper.java b/src/main/java/appeng/client/ClientHelper.java index 049ed3058..4ca9c417c 100644 --- a/src/main/java/appeng/client/ClientHelper.java +++ b/src/main/java/appeng/client/ClientHelper.java @@ -64,15 +64,6 @@ public class ClientHelper extends ServerHelper { } } - @Override - public World getWorld() { - if (Platform.isClient()) { - return MinecraftClient.getInstance().world; - } else { - return super.getWorld(); - } - } - @Override public void bindTileEntitySpecialRenderer(final Class tile, final AEBaseBlock blk) { @@ -113,7 +104,7 @@ public class ClientHelper extends ServerHelper { @Override public boolean shouldAddParticles(final Random r) { - switch (MinecraftClient.getInstance().gameSettings.particles) { + switch (MinecraftClient.getInstance().options.particles) { default: case ALL: return true; @@ -154,9 +145,9 @@ public class ClientHelper extends ServerHelper { final PlayerEntity player = mc.player; - final int x = (int) player.getPosX(); - final int y = (int) player.getPosY(); - final int z = (int) player.getPosZ(); + final int x = (int) player.getX(); + final int y = (int) player.getY(); + final int z = (int) player.getZ(); final int range = 16 * 16; diff --git a/src/main/java/appeng/client/gui/AEBaseMEScreen.java b/src/main/java/appeng/client/gui/AEBaseMEScreen.java index e76fbcd7a..e727608ad 100644 --- a/src/main/java/appeng/client/gui/AEBaseMEScreen.java +++ b/src/main/java/appeng/client/gui/AEBaseMEScreen.java @@ -26,7 +26,7 @@ import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.container.Slot; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; -import net.minecraft.util.text.TextFormatting; +import net.minecraft.util.Formatting; import appeng.api.storage.data.IAEItemStack; import appeng.client.me.SlotME; @@ -63,7 +63,7 @@ public abstract class AEBaseMEScreen extends AEBaseSc .format(myStack.getStackSize()); final String format = String.format(local, formattedAmount); - currentToolTip.add(TextFormatting.GRAY + format); + currentToolTip.add(Formatting.GRAY + format); } if (myStack.getCountRequestable() > 0) { @@ -82,7 +82,7 @@ public abstract class AEBaseMEScreen extends AEBaseSc final String formattedAmount = NumberFormat.getNumberInstance(Locale.US).format(stack.getCount()); final String format = String.format(local, formattedAmount); - currentToolTip.add(TextFormatting.GRAY + format); + currentToolTip.add(Formatting.GRAY + format); this.renderTooltip(currentToolTip, x, y, this.font); diff --git a/src/main/java/appeng/client/gui/AEBaseScreen.java b/src/main/java/appeng/client/gui/AEBaseScreen.java index f1712a2a2..1a5f0d4f5 100644 --- a/src/main/java/appeng/client/gui/AEBaseScreen.java +++ b/src/main/java/appeng/client/gui/AEBaseScreen.java @@ -32,6 +32,7 @@ import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.client.MinecraftClient; import net.minecraft.client.texture.Sprite; +import net.minecraft.util.Formatting; import org.lwjgl.glfw.GLFW; import org.lwjgl.opengl.GL11; @@ -53,7 +54,6 @@ import net.minecraft.inventory.container.Slot; import net.minecraft.item.ItemStack; import net.minecraft.util.Identifier; import net.minecraft.text.Text; -import net.minecraft.util.text.TextFormatting; import net.minecraftforge.fluids.FluidAttributes; import net.minecraftforge.fml.client.gui.GuiUtils; @@ -198,11 +198,11 @@ public abstract class AEBaseScreen extends ContainerS lines = Lists.newArrayList(lines); // Make a copy // Make the first line white - lines.set(0, TextFormatting.WHITE + lines.get(0)); + lines.set(0, Formatting.WHITE + lines.get(0)); // All lines after the first are colored gray for (int i = 1; i < lines.size(); i++) { - lines.set(i, TextFormatting.GRAY + lines.get(i)); + lines.set(i, Formatting.GRAY + lines.get(i)); } this.renderTooltip(lines, x, y, this.font); @@ -504,7 +504,7 @@ public abstract class AEBaseScreen extends ContainerS if (getPlayer().inventory.getItemStack().isEmpty() && theSlot != null) { for (int j = 0; j < 9; ++j) { - if (getMinecraft().gameSettings.keyBindsHotbar[j].isActiveAndMatches(input)) { + if (getMinecraft().options.keyBindsHotbar[j].isActiveAndMatches(input)) { final List slots = this.getInventorySlots(); for (final Slot s : slots) { if (s.getSlotIndex() == j && s.inventory == ((AEBaseContainer) this.container).getPlayerInv()) { diff --git a/src/main/java/appeng/client/gui/implementations/CellWorkbenchScreen.java b/src/main/java/appeng/client/gui/implementations/CellWorkbenchScreen.java index 6c3a75815..4d4d892cf 100644 --- a/src/main/java/appeng/client/gui/implementations/CellWorkbenchScreen.java +++ b/src/main/java/appeng/client/gui/implementations/CellWorkbenchScreen.java @@ -22,7 +22,7 @@ import net.minecraft.entity.player.PlayerInventory; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; import net.minecraftforge.fml.client.gui.GuiUtils; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import appeng.api.config.ActionItems; import appeng.api.config.CopyMode; @@ -118,9 +118,9 @@ public class CellWorkbenchScreen extends UpgradeableScreen= this.maxAge) { this.setExpired(); @@ -109,9 +109,9 @@ public class LightningFX extends SpriteTexturedParticle { @Override public void renderParticle(IVertexBuilder buffer, ActiveRenderInfo renderInfo, float partialTicks) { Vec3d vec3d = renderInfo.getProjectedView(); - float centerX = (float) (MathHelper.lerp(partialTicks, this.prevPosX, this.posX) - vec3d.getX()); - float centerY = (float) (MathHelper.lerp(partialTicks, this.prevPosY, this.posY) - vec3d.getY()); - float centerZ = (float) (MathHelper.lerp(partialTicks, this.prevPosZ, this.posZ) - vec3d.getZ()); + float centerX = (float) (MathHelper.lerp(partialTicks, this.prevX, this.posX) - vec3d.getX()); + float centerY = (float) (MathHelper.lerp(partialTicks, this.prevY, this.posY) - vec3d.getY()); + float centerZ = (float) (MathHelper.lerp(partialTicks, this.prevZ, this.posZ) - vec3d.getZ()); final float j = 1.0f; float red = this.particleRed * j * 0.9f; diff --git a/src/main/java/appeng/client/render/effects/MatterCannonFX.java b/src/main/java/appeng/client/render/effects/MatterCannonFX.java index 7d65274c4..732971bb6 100644 --- a/src/main/java/appeng/client/render/effects/MatterCannonFX.java +++ b/src/main/java/appeng/client/render/effects/MatterCannonFX.java @@ -54,9 +54,9 @@ public class MatterCannonFX extends SpriteTexturedParticle { @Override public void tick() { - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; + this.prevX = this.posX; + this.prevY = this.posY; + this.prevZ = this.posZ; if (this.age++ >= this.maxAge) { this.setExpired(); diff --git a/src/main/java/appeng/client/render/effects/VibrantFX.java b/src/main/java/appeng/client/render/effects/VibrantFX.java index 81509eb31..20383f3f6 100644 --- a/src/main/java/appeng/client/render/effects/VibrantFX.java +++ b/src/main/java/appeng/client/render/effects/VibrantFX.java @@ -44,9 +44,9 @@ public class VibrantFX extends SpriteTexturedParticle { this.motionX = 0.0D; this.motionY = 0.0D; this.motionZ = 0.0D; - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; + this.prevX = this.posX; + this.prevY = this.posY; + this.prevZ = this.posZ; this.maxAge = (int) (20.0D / (Math.random() * 0.8D + 0.1D)); } @@ -67,9 +67,9 @@ public class VibrantFX extends SpriteTexturedParticle { */ @Override public void tick() { - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; + this.prevX = this.posX; + this.prevY = this.posY; + this.prevZ = this.posZ; // this.moveEntity(this.motionX, this.motionY, this.motionZ); this.particleScale *= 0.95; diff --git a/src/main/java/appeng/client/render/model/SkyCompassBakedModel.java b/src/main/java/appeng/client/render/model/SkyCompassBakedModel.java index 6fadddbe2..d90bae14c 100644 --- a/src/main/java/appeng/client/render/model/SkyCompassBakedModel.java +++ b/src/main/java/appeng/client/render/model/SkyCompassBakedModel.java @@ -156,7 +156,7 @@ public class SkyCompassBakedModel implements IDynamicBakedModel { if (world != null && entity instanceof ClientPlayerEntity) { PlayerEntity player = (PlayerEntity) entity; - float offRads = (float) (player.rotationYaw / 180.0f * (float) Math.PI + Math.PI); + float offRads = (float) (player.yaw / 180.0f * (float) Math.PI + Math.PI); SkyCompassBakedModel.this.fallbackRotation = offRads + getAnimatedRotation(player.getPosition(), true); diff --git a/src/main/java/appeng/client/render/tesr/InscriberTESR.java b/src/main/java/appeng/client/render/tesr/InscriberTESR.java index 22582c3d8..738390a04 100644 --- a/src/main/java/appeng/client/render/tesr/InscriberTESR.java +++ b/src/main/java/appeng/client/render/tesr/InscriberTESR.java @@ -1,7 +1,7 @@ package appeng.client.render.tesr; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.client.MinecraftClient; import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.render.model.json.ModelTransformation; @@ -126,16 +126,16 @@ public final class InscriberTESR extends BlockEntityRenderer { private I getHostFromPlayerInventory(PlayerEntity player, ContainerLocator locator) { - ItemStack it = player.inventory.getStackInSlot(locator.getItemIndex()); + ItemStack it = player.inventory.getStack(locator.getItemIndex()); if (it.isEmpty()) { AELog.debug("Cannot open container for player %s since they no longer hold the item in slot %d", player, diff --git a/src/main/java/appeng/container/implementations/CraftConfirmContainer.java b/src/main/java/appeng/container/implementations/CraftConfirmContainer.java index a3c6fbd8f..1466a4a3b 100644 --- a/src/main/java/appeng/container/implementations/CraftConfirmContainer.java +++ b/src/main/java/appeng/container/implementations/CraftConfirmContainer.java @@ -256,7 +256,7 @@ public class CraftConfirmContainer extends AEBaseContainer { // :P } } catch (final Throwable e) { - this.getPlayerInv().player.sendMessage(new LiteralText("Error: " + e.toString())); + this.getPlayerInv().player.sendSystemMessage(new LiteralText("Error: " + e.toString()), Util.NIL_UUID); AELog.debug(e); this.setValidContainer(false); this.result = null; diff --git a/src/main/java/appeng/container/implementations/CraftingTermContainer.java b/src/main/java/appeng/container/implementations/CraftingTermContainer.java index 4ecbc418d..ab78537e1 100644 --- a/src/main/java/appeng/container/implementations/CraftingTermContainer.java +++ b/src/main/java/appeng/container/implementations/CraftingTermContainer.java @@ -18,15 +18,15 @@ package appeng.container.implementations; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.CraftingInventory; -import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Inventory; import net.minecraft.inventory.container.ContainerType; import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.item.crafting.IRecipeType; +import net.minecraft.recipe.Recipe; +import net.minecraft.recipe.RecipeType; import net.minecraft.network.PacketByteBuf; import net.minecraft.world.World; import net.minecraftforge.items.wrapper.PlayerInvWrapper; @@ -64,13 +64,13 @@ public class CraftingTermContainer extends MEMonitorableContainer private final AppEngInternalInventory output = new AppEngInternalInventory(this, 1); private final CraftingMatrixSlot[] craftingSlots = new CraftingMatrixSlot[9]; private final CraftingTermSlot outputSlot; - private IRecipe currentRecipe; + private Recipe currentRecipe; public CraftingTermContainer(int id, final PlayerInventory ip, final ITerminalHost monitorable) { super(TYPE, id, ip, monitorable, false); this.ct = (CraftingTerminalPart) monitorable; - final ItemTransferable crafting = this.ct.getInventoryByName("crafting"); + final FixedItemInv crafting = this.ct.getInventoryByName("crafting"); for (int y = 0; y < 3; y++) { for (int x = 0; x < 3; x++) { @@ -92,23 +92,23 @@ public class CraftingTermContainer extends MEMonitorableContainer */ @Override - public void onCraftMatrixChanged(IInventory inventory) { + public void onCraftMatrixChanged(Inventory inventory) { final ContainerNull cn = new ContainerNull(); final CraftingInventory ic = new CraftingInventory(cn, 3, 3); for (int x = 0; x < 9; x++) { - ic.setInventorySlotContents(x, this.craftingSlots[x].getStack()); + ic.setStack(x, this.craftingSlots[x].getStack()); } if (this.currentRecipe == null || !this.currentRecipe.matches(ic, this.getPlayerInv().player.world)) { World world = this.getPlayerInv().player.world; - this.currentRecipe = world.getRecipeManager().getRecipe(IRecipeType.CRAFTING, ic, world).orElse(null); + this.currentRecipe = world.getRecipeManager().getRecipe(RecipeType.CRAFTING, ic, world).orElse(null); } if (this.currentRecipe == null) { this.outputSlot.putStack(ItemStack.EMPTY); } else { - final ItemStack craftingResult = this.currentRecipe.getCraftingResult(ic); + final ItemStack craftingResult = this.currentRecipe.craft(ic); this.outputSlot.putStack(craftingResult); } @@ -120,13 +120,13 @@ public class CraftingTermContainer extends MEMonitorableContainer } @Override - public void onChangeInventory(final ItemTransferable inv, final int slot, final InvOperation mc, + public void onChangeInventory(final FixedItemInv inv, final int slot, final InvOperation mc, final ItemStack removedStack, final ItemStack newStack) { } @Override - public ItemTransferable getInventoryByName(final String name) { + public FixedItemInv getInventoryByName(final String name) { if (name.equals("player")) { return new PlayerInvWrapper(this.getPlayerInventory()); } @@ -138,7 +138,7 @@ public class CraftingTermContainer extends MEMonitorableContainer return true; } - public IRecipe getCurrentRecipe() { + public Recipe getCurrentRecipe() { return this.currentRecipe; } } diff --git a/src/main/java/appeng/container/implementations/FormationPlaneContainer.java b/src/main/java/appeng/container/implementations/FormationPlaneContainer.java index 5b917edf0..2e8d70250 100644 --- a/src/main/java/appeng/container/implementations/FormationPlaneContainer.java +++ b/src/main/java/appeng/container/implementations/FormationPlaneContainer.java @@ -18,7 +18,7 @@ package appeng.container.implementations; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.container.ContainerType; @@ -69,7 +69,7 @@ public class FormationPlaneContainer extends UpgradeableContainer { final int xo = 8; final int yo = 23 + 6; - final ItemTransferable config = this.getUpgradeable().getInventoryByName("config"); + final FixedItemInv config = this.getUpgradeable().getInventoryByName("config"); for (int y = 0; y < 7; y++) { for (int x = 0; x < 9; x++) { if (y < 2) { @@ -80,7 +80,7 @@ public class FormationPlaneContainer extends UpgradeableContainer { } } - final ItemTransferable upgrades = this.getUpgradeable().getInventoryByName("upgrades"); + final FixedItemInv upgrades = this.getUpgradeable().getInventoryByName("upgrades"); this.addSlot((new RestrictedInputSlot(RestrictedInputSlot.PlacableItemType.UPGRADES, upgrades, 0, 187, 8, this.getPlayerInventory())).setNotDraggable()); this.addSlot((new RestrictedInputSlot(RestrictedInputSlot.PlacableItemType.UPGRADES, upgrades, 1, 187, 8 + 18, diff --git a/src/main/java/appeng/container/implementations/GrinderContainer.java b/src/main/java/appeng/container/implementations/GrinderContainer.java index 76631cacb..9c9c617ec 100644 --- a/src/main/java/appeng/container/implementations/GrinderContainer.java +++ b/src/main/java/appeng/container/implementations/GrinderContainer.java @@ -22,7 +22,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.container.ContainerType; import net.minecraft.network.PacketByteBuf; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import appeng.container.AEBaseContainer; import appeng.container.ContainerLocator; @@ -49,7 +49,7 @@ public class GrinderContainer extends AEBaseContainer { public GrinderContainer(int id, final PlayerInventory ip, final GrinderBlockEntity grinder) { super(TYPE, id, ip, grinder, null); - ItemTransferable inv = grinder.getInternalInventory(); + FixedItemInv inv = grinder.getInternalInventory(); this.addSlot(new RestrictedInputSlot(RestrictedInputSlot.PlacableItemType.ORE, inv, 0, 12, 17, this.getPlayerInventory())); diff --git a/src/main/java/appeng/container/implementations/IOPortContainer.java b/src/main/java/appeng/container/implementations/IOPortContainer.java index 610f5cadb..aaf57f74e 100644 --- a/src/main/java/appeng/container/implementations/IOPortContainer.java +++ b/src/main/java/appeng/container/implementations/IOPortContainer.java @@ -18,7 +18,7 @@ package appeng.container.implementations; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.container.ContainerType; @@ -70,7 +70,7 @@ public class IOPortContainer extends UpgradeableContainer { int offX = 19; int offY = 17; - final ItemTransferable cells = this.getUpgradeable().getInventoryByName("cells"); + final FixedItemInv cells = this.getUpgradeable().getInventoryByName("cells"); for (int y = 0; y < 3; y++) { for (int x = 0; x < 2; x++) { @@ -88,7 +88,7 @@ public class IOPortContainer extends UpgradeableContainer { } } - final ItemTransferable upgrades = this.getUpgradeable().getInventoryByName("upgrades"); + final FixedItemInv upgrades = this.getUpgradeable().getInventoryByName("upgrades"); this.addSlot((new RestrictedInputSlot(RestrictedInputSlot.PlacableItemType.UPGRADES, upgrades, 0, 187, 8, this.getPlayerInventory())).setNotDraggable()); this.addSlot((new RestrictedInputSlot(RestrictedInputSlot.PlacableItemType.UPGRADES, upgrades, 1, 187, 8 + 18, diff --git a/src/main/java/appeng/container/implementations/InscriberContainer.java b/src/main/java/appeng/container/implementations/InscriberContainer.java index 580a65a0e..a0a030a12 100644 --- a/src/main/java/appeng/container/implementations/InscriberContainer.java +++ b/src/main/java/appeng/container/implementations/InscriberContainer.java @@ -24,7 +24,7 @@ import net.minecraft.inventory.container.ContainerType; import net.minecraft.inventory.container.Slot; import net.minecraft.item.ItemStack; import net.minecraft.network.PacketByteBuf; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import appeng.api.AEApi; import appeng.api.definitions.IItemDefinition; @@ -74,7 +74,7 @@ public class InscriberContainer extends UpgradeableContainer implements IProgres super(TYPE, id, ip, te); this.ti = te; - ItemTransferable inv = te.getInternalInventory(); + FixedItemInv inv = te.getInternalInventory(); RestrictedInputSlot top = new RestrictedInputSlot(RestrictedInputSlot.PlacableItemType.INSCRIBER_PLATE, inv, 0, 45, 16, this.getPlayerInventory()); @@ -127,8 +127,8 @@ public class InscriberContainer extends UpgradeableContainer implements IProgres @Override public boolean isValidForSlot(final Slot s, final ItemStack is) { - final ItemStack top = this.ti.getInternalInventory().getStackInSlot(0); - final ItemStack bot = this.ti.getInternalInventory().getStackInSlot(1); + final ItemStack top = this.ti.getInternalInventory().getInvStack(0); + final ItemStack bot = this.ti.getInternalInventory().getInvStack(1); if (s == this.middle) { IItemDefinition press = AEApi.instance().definitions().materials().namePress(); diff --git a/src/main/java/appeng/container/implementations/InterfaceTerminalContainer.java b/src/main/java/appeng/container/implementations/InterfaceTerminalContainer.java index fc3bff90d..292287213 100644 --- a/src/main/java/appeng/container/implementations/InterfaceTerminalContainer.java +++ b/src/main/java/appeng/container/implementations/InterfaceTerminalContainer.java @@ -31,7 +31,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.PacketByteBuf; import net.minecraft.text.Text; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import appeng.api.config.SecurityPermissions; import appeng.api.config.Settings; @@ -54,10 +54,9 @@ import appeng.tile.misc.InterfaceBlockEntity; import appeng.util.InventoryAdaptor; import appeng.util.Platform; import appeng.util.helpers.ItemHandlerUtil; -import appeng.util.inv.AdaptorItemHandler; +import appeng.util.inv.AdaptorFixedInv; import appeng.util.inv.WrapperCursorItemHandler; import appeng.util.inv.WrapperFilteredItemHandler; -import appeng.util.inv.WrapperRangeItemHandler; import appeng.util.inv.filter.IAEItemFilter; public final class InterfaceTerminalContainer extends AEBaseContainer { @@ -167,8 +166,8 @@ public final class InterfaceTerminalContainer extends AEBaseContainer { } else { for (final Entry en : this.diList.entrySet()) { final InvTracker inv = en.getValue(); - for (int x = 0; x < inv.server.getSlots(); x++) { - if (this.isDifferent(inv.server.getStackInSlot(x), inv.client.getStackInSlot(x))) { + for (int x = 0; x < inv.server.getSlotCount(); x++) { + if (this.isDifferent(inv.server.getInvStack(x), inv.client.getInvStack(x))) { this.addItems(this.data, inv, x, 1); } } @@ -191,20 +190,20 @@ public final class InterfaceTerminalContainer extends AEBaseContainer { public void doAction(final ServerPlayerEntity player, final InventoryAction action, final int slot, final long id) { final InvTracker inv = this.byId.get(id); if (inv != null) { - final ItemStack is = inv.server.getStackInSlot(slot); + final ItemStack is = inv.server.getInvStack(slot); final boolean hasItemInHand = !player.inventory.getItemStack().isEmpty(); - final InventoryAdaptor playerHand = new AdaptorItemHandler(new WrapperCursorItemHandler(player.inventory)); + final InventoryAdaptor playerHand = new AdaptorFixedInv(new WrapperCursorItemHandler(player.inventory)); - final ItemTransferable theSlot = new WrapperFilteredItemHandler( - new WrapperRangeItemHandler(inv.server, slot, slot + 1), new PatternSlotFilter()); - final InventoryAdaptor interfaceSlot = new AdaptorItemHandler(theSlot); + final FixedItemInv theSlot = new WrapperFilteredItemHandler( + inv.server.getSubInv(slot, slot + 1), new PatternSlotFilter()); + final InventoryAdaptor interfaceSlot = new AdaptorFixedInv(theSlot); switch (action) { case PICKUP_OR_SET_DOWN: if (hasItemInHand) { - ItemStack inSlot = theSlot.getStackInSlot(0); + ItemStack inSlot = theSlot.getInvStack(0); if (inSlot.isEmpty()) { player.inventory.setItemStack(interfaceSlot.addItems(player.inventory.getItemStack())); } else { @@ -224,7 +223,7 @@ public final class InterfaceTerminalContainer extends AEBaseContainer { } } } else { - ItemHandlerUtil.setStackInSlot(theSlot, 0, playerHand.addItems(theSlot.getStackInSlot(0))); + ItemHandlerUtil.setStackInSlot(theSlot, 0, playerHand.addItems(theSlot.getInvStack(0))); } break; @@ -253,15 +252,15 @@ public final class InterfaceTerminalContainer extends AEBaseContainer { final InventoryAdaptor playerInv = InventoryAdaptor.getAdaptor(player); - ItemHandlerUtil.setStackInSlot(theSlot, 0, playerInv.addItems(theSlot.getStackInSlot(0))); + ItemHandlerUtil.setStackInSlot(theSlot, 0, playerInv.addItems(theSlot.getInvStack(0))); break; case MOVE_REGION: final InventoryAdaptor playerInvAd = InventoryAdaptor.getAdaptor(player); - for (int x = 0; x < inv.server.getSlots(); x++) { + for (int x = 0; x < inv.server.getSlotCount(); x++) { ItemHandlerUtil.setStackInSlot(inv.server, x, - playerInvAd.addItems(inv.server.getStackInSlot(x))); + playerInvAd.addItems(inv.server.getInvStack(x))); } break; @@ -311,7 +310,7 @@ public final class InterfaceTerminalContainer extends AEBaseContainer { for (final Entry en : this.diList.entrySet()) { final InvTracker inv = en.getValue(); this.byId.put(inv.which, inv); - this.addItems(data, inv, 0, inv.server.getSlots()); + this.addItems(data, inv, 0, inv.server.getSlotCount()); } } @@ -324,7 +323,7 @@ public final class InterfaceTerminalContainer extends AEBaseContainer { return true; } - return !ItemStack.areItemStacksEqual(a, b); + return !ItemStack.areEqual(a, b); } private void addItems(final CompoundTag data, final InvTracker inv, final int offset, final int length) { @@ -339,13 +338,13 @@ public final class InterfaceTerminalContainer extends AEBaseContainer { for (int x = 0; x < length; x++) { final CompoundTag itemNBT = new CompoundTag(); - final ItemStack is = inv.server.getStackInSlot(x + offset); + final ItemStack is = inv.server.getInvStack(x + offset); // "update" client side. ItemHandlerUtil.setStackInSlot(inv.client, x + offset, is.isEmpty() ? ItemStack.EMPTY : is.copy()); if (!is.isEmpty()) { - is.write(itemNBT); + is.toTag(itemNBT); } tag.put(Integer.toString(x + offset), itemNBT); @@ -359,12 +358,12 @@ public final class InterfaceTerminalContainer extends AEBaseContainer { private final long sortBy; private final long which = autoBase++; private final Text name; - private final ItemTransferable client; - private final ItemTransferable server; + private final FixedItemInv client; + private final FixedItemInv server; - public InvTracker(final DualityInterface dual, final ItemTransferable patterns, final Text name) { + public InvTracker(final DualityInterface dual, final FixedItemInv patterns, final Text name) { this.server = patterns; - this.client = new AppEngInternalInventory(null, this.server.getSlots()); + this.client = new AppEngInternalInventory(null, this.server.getSlotCount()); this.name = name; this.sortBy = dual.getSortValue(); } @@ -372,12 +371,12 @@ public final class InterfaceTerminalContainer extends AEBaseContainer { private static class PatternSlotFilter implements IAEItemFilter { @Override - public boolean allowExtract(ItemTransferable inv, int slot, int amount) { + public boolean allowExtract(FixedItemInv inv, int slot, int amount) { return true; } @Override - public boolean allowInsert(ItemTransferable inv, int slot, ItemStack stack) { + public boolean allowInsert(FixedItemInv inv, int slot, ItemStack stack) { return !stack.isEmpty() && stack.getItem() instanceof EncodedPatternItem; } } diff --git a/src/main/java/appeng/container/implementations/LevelEmitterContainer.java b/src/main/java/appeng/container/implementations/LevelEmitterContainer.java index 73ea9a556..0fead36c8 100644 --- a/src/main/java/appeng/container/implementations/LevelEmitterContainer.java +++ b/src/main/java/appeng/container/implementations/LevelEmitterContainer.java @@ -18,7 +18,7 @@ package appeng.container.implementations; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.widget.TextFieldWidget; @@ -84,7 +84,7 @@ public class LevelEmitterContainer extends UpgradeableContainer { @Override protected void setupConfig() { - final ItemTransferable upgrades = this.getUpgradeable().getInventoryByName("upgrades"); + final FixedItemInv upgrades = this.getUpgradeable().getInventoryByName("upgrades"); if (this.availableUpgrades() > 0) { this.addSlot((new RestrictedInputSlot(RestrictedInputSlot.PlacableItemType.UPGRADES, upgrades, 0, 187, 8, this.getPlayerInventory())).setNotDraggable()); @@ -102,7 +102,7 @@ public class LevelEmitterContainer extends UpgradeableContainer { 8 + 18 * 3, this.getPlayerInventory())).setNotDraggable()); } - final ItemTransferable inv = this.getUpgradeable().getInventoryByName("config"); + final FixedItemInv inv = this.getUpgradeable().getInventoryByName("config"); final int y = 40; final int x = 80 + 44; this.addSlot(new FakeTypeOnlySlot(inv, 0, x, y)); diff --git a/src/main/java/appeng/container/implementations/MEPortableCellContainer.java b/src/main/java/appeng/container/implementations/MEPortableCellContainer.java index 6eeff0efb..fd6223210 100644 --- a/src/main/java/appeng/container/implementations/MEPortableCellContainer.java +++ b/src/main/java/appeng/container/implementations/MEPortableCellContainer.java @@ -73,13 +73,13 @@ public class MEPortableCellContainer extends MEMonitorableContainer { @Override public void detectAndSendChanges() { final ItemStack currentItem = this.slot < 0 ? this.getPlayerInv().getCurrentItem() - : this.getPlayerInv().getStackInSlot(this.slot); + : this.getPlayerInv().getStack(this.slot); if (this.civ == null || currentItem.isEmpty()) { this.setValidContainer(false); } else if (this.civ != null && !this.civ.getItemStack().isEmpty() && currentItem != this.civ.getItemStack()) { if (ItemStack.areItemsEqual(this.civ.getItemStack(), currentItem)) { - this.getPlayerInv().setInventorySlotContents(this.getPlayerInv().currentItem, this.civ.getItemStack()); + this.getPlayerInv().setStack(this.getPlayerInv().currentItem, this.civ.getItemStack()); } else { this.setValidContainer(false); } diff --git a/src/main/java/appeng/container/implementations/MolecularAssemblerContainer.java b/src/main/java/appeng/container/implementations/MolecularAssemblerContainer.java index 071e37e5a..d81e70bbc 100644 --- a/src/main/java/appeng/container/implementations/MolecularAssemblerContainer.java +++ b/src/main/java/appeng/container/implementations/MolecularAssemblerContainer.java @@ -18,7 +18,7 @@ package appeng.container.implementations; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.container.ContainerType; @@ -70,9 +70,9 @@ public class MolecularAssemblerContainer extends UpgradeableContainer implements } public boolean isValidItemForSlot(final int slotIndex, final ItemStack i) { - final ItemTransferable mac = this.getUpgradeable().getInventoryByName(MolecularAssemblerBlockEntity.INVENTORY_MAIN); + final FixedItemInv mac = this.getUpgradeable().getInventoryByName(MolecularAssemblerBlockEntity.INVENTORY_MAIN); - final ItemStack is = mac.getStackInSlot(10); + final ItemStack is = mac.getInvStack(10); if (is.isEmpty()) { return false; } @@ -99,7 +99,7 @@ public class MolecularAssemblerContainer extends UpgradeableContainer implements int offX = 29; int offY = 30; - final ItemTransferable mac = this.getUpgradeable().getInventoryByName(MolecularAssemblerBlockEntity.INVENTORY_MAIN); + final FixedItemInv mac = this.getUpgradeable().getInventoryByName(MolecularAssemblerBlockEntity.INVENTORY_MAIN); for (int y = 0; y < 3; y++) { for (int x = 0; x < 3; x++) { @@ -120,7 +120,7 @@ public class MolecularAssemblerContainer extends UpgradeableContainer implements offX = 122; offY = 17; - final ItemTransferable upgrades = this.getUpgradeable().getInventoryByName("upgrades"); + final FixedItemInv upgrades = this.getUpgradeable().getInventoryByName("upgrades"); this.addSlot((new RestrictedInputSlot(RestrictedInputSlot.PlacableItemType.UPGRADES, upgrades, 0, 187, 8, this.getPlayerInventory())).setNotDraggable()); this.addSlot((new RestrictedInputSlot(RestrictedInputSlot.PlacableItemType.UPGRADES, upgrades, 1, 187, 8 + 18, diff --git a/src/main/java/appeng/container/implementations/NetworkToolContainer.java b/src/main/java/appeng/container/implementations/NetworkToolContainer.java index edfe54ec5..2e0d286cf 100644 --- a/src/main/java/appeng/container/implementations/NetworkToolContainer.java +++ b/src/main/java/appeng/container/implementations/NetworkToolContainer.java @@ -80,7 +80,7 @@ public class NetworkToolContainer extends AEBaseContainer { if (currentItem != this.toolInv.getItemStack()) { if (!currentItem.isEmpty()) { if (ItemStack.areItemsEqual(this.toolInv.getItemStack(), currentItem)) { - this.getPlayerInv().setInventorySlotContents(this.getPlayerInv().currentItem, + this.getPlayerInv().setStack(this.getPlayerInv().currentItem, this.toolInv.getItemStack()); } else { this.setValidContainer(false); diff --git a/src/main/java/appeng/container/implementations/PatternTermContainer.java b/src/main/java/appeng/container/implementations/PatternTermContainer.java index e68a66c08..e301ffd84 100644 --- a/src/main/java/appeng/container/implementations/PatternTermContainer.java +++ b/src/main/java/appeng/container/implementations/PatternTermContainer.java @@ -22,9 +22,11 @@ import java.util.ArrayList; import java.util.List; import java.util.Optional; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.recipe.Recipe; +import net.minecraft.recipe.RecipeType; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.inventory.CraftResultInventory; import net.minecraft.inventory.CraftingInventory; @@ -33,8 +35,6 @@ import net.minecraft.inventory.container.CraftingResultSlot; import net.minecraft.inventory.container.IContainerListener; import net.minecraft.inventory.container.Slot; import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.item.crafting.IRecipeType; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.INBT; import net.minecraft.nbt.ListNBT; @@ -68,7 +68,7 @@ import appeng.parts.reporting.PatternTerminalPart; import appeng.tile.inventory.AppEngInternalInventory; import appeng.util.InventoryAdaptor; import appeng.util.Platform; -import appeng.util.inv.AdaptorItemHandler; +import appeng.util.inv.AdaptorFixedInv; import appeng.util.inv.IAEAppEngInventory; import appeng.util.inv.InvOperation; import appeng.util.inv.WrapperCursorItemHandler; @@ -92,14 +92,14 @@ public class PatternTermContainer extends MEMonitorableContainer private final PatternTerminalPart patternTerminal; private final AppEngInternalInventory cOut = new AppEngInternalInventory(null, 1); - private final ItemTransferable crafting; + private final FixedItemInv crafting; private final FakeCraftingMatrixSlot[] craftingSlots = new FakeCraftingMatrixSlot[9]; private final OptionalFakeSlot[] outputSlots = new OptionalFakeSlot[3]; private final PatternTermSlot craftSlot; private final RestrictedInputSlot patternSlotIN; private final RestrictedInputSlot patternSlotOUT; - private IRecipe currentRecipe; + private Recipe currentRecipe; @GuiSync(97) public boolean craftingMode = true; @GuiSync(96) @@ -109,8 +109,8 @@ public class PatternTermContainer extends MEMonitorableContainer super(TYPE, id, ip, monitorable, false); this.patternTerminal = (PatternTerminalPart) monitorable; - final ItemTransferable patternInv = this.getPatternTerminal().getInventoryByName("pattern"); - final ItemTransferable output = this.getPatternTerminal().getInventoryByName("output"); + final FixedItemInv patternInv = this.getPatternTerminal().getInventoryByName("pattern"); + final FixedItemInv output = this.getPatternTerminal().getInventoryByName("output"); this.crafting = this.getPatternTerminal().getInventoryByName("crafting"); @@ -168,12 +168,12 @@ public class PatternTermContainer extends MEMonitorableContainer final World world = this.getPlayerInv().player.world; final CraftingInventory ic = new CraftingInventory(this, 3, 3); - for (int x = 0; x < ic.getSizeInventory(); x++) { - ic.setInventorySlotContents(x, this.crafting.getStackInSlot(x)); + for (int x = 0; x < ic.size(); x++) { + ic.setStack(x, this.crafting.getInvStack(x)); } if (this.currentRecipe == null || !this.currentRecipe.matches(ic, world)) { - this.currentRecipe = world.getRecipeManager().getRecipe(IRecipeType.CRAFTING, ic, world).orElse(null); + this.currentRecipe = world.getRecipeManager().getRecipe(RecipeType.CRAFTING, ic, world).orElse(null); } final ItemStack is; @@ -181,7 +181,7 @@ public class PatternTermContainer extends MEMonitorableContainer if (this.currentRecipe == null) { is = ItemStack.EMPTY; } else { - is = this.currentRecipe.getCraftingResult(ic); + is = this.currentRecipe.craft(ic); } this.cOut.setStackInSlot(0, is); @@ -194,7 +194,7 @@ public class PatternTermContainer extends MEMonitorableContainer } @Override - public void onChangeInventory(final ItemTransferable inv, final int slot, final InvOperation mc, + public void onChangeInventory(final FixedItemInv inv, final int slot, final InvOperation mc, final ItemStack removedStack, final ItemStack newStack) { } @@ -319,7 +319,7 @@ public class PatternTermContainer extends MEMonitorableContainer final CompoundTag c = new CompoundTag(); if (!i.isEmpty()) { - i.write(c); + i.toTag(c); } return c; @@ -339,7 +339,7 @@ public class PatternTermContainer extends MEMonitorableContainer public void craftOrGetItem(final PatternSlotPacket packetPatternSlot) { if (packetPatternSlot.slotItem != null && this.getCellInventory() != null) { final IAEItemStack out = packetPatternSlot.slotItem.copy(); - InventoryAdaptor inv = new AdaptorItemHandler( + InventoryAdaptor inv = new AdaptorFixedInv( new WrapperCursorItemHandler(this.getPlayerInv().player.inventory)); final InventoryAdaptor playerInv = InventoryAdaptor.getAdaptor(this.getPlayerInv().player); @@ -368,11 +368,11 @@ public class PatternTermContainer extends MEMonitorableContainer final CraftingInventory real = new CraftingInventory(new ContainerNull(), 3, 3); for (int x = 0; x < 9; x++) { - ic.setInventorySlotContents(x, packetPatternSlot.pattern[x] == null ? ItemStack.EMPTY + ic.setStack(x, packetPatternSlot.pattern[x] == null ? ItemStack.EMPTY : packetPatternSlot.pattern[x].createItemStack()); } - final IRecipe r = p.world.getRecipeManager().getRecipe(IRecipeType.CRAFTING, ic, p.world) + final Recipe r = p.world.getRecipeManager().getRecipe(RecipeType.CRAFTING, ic, p.world) .orElse(null); if (r == null) { @@ -383,29 +383,29 @@ public class PatternTermContainer extends MEMonitorableContainer .getInventory(AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class)); final IItemList all = storage.getStorageList(); - final ItemStack is = r.getCraftingResult(ic); + final ItemStack is = r.craft(ic); - for (int x = 0; x < ic.getSizeInventory(); x++) { - if (!ic.getStackInSlot(x).isEmpty()) { + for (int x = 0; x < ic.size(); x++) { + if (!ic.getStack(x).isEmpty()) { final ItemStack pulled = Platform.extractItemsByRecipe(this.getPowerSource(), - this.getActionSource(), storage, p.world, r, is, ic, ic.getStackInSlot(x), x, all, + this.getActionSource(), storage, p.world, r, is, ic, ic.getStack(x), x, all, Actionable.MODULATE, ViewCellItem.createFilter(this.getViewCells())); - real.setInventorySlotContents(x, pulled); + real.setStack(x, pulled); } } - final IRecipe rr = p.world.getRecipeManager() - .getRecipe(IRecipeType.CRAFTING, real, p.world).orElse(null); + final Recipe rr = p.world.getRecipeManager() + .getRecipe(RecipeType.CRAFTING, real, p.world).orElse(null); - if (rr == r && Platform.itemComparisons().isSameItem(rr.getCraftingResult(real), is)) { + if (rr == r && Platform.itemComparisons().isSameItem(rr.craft(real), is)) { final CraftResultInventory craftingResult = new CraftResultInventory(); craftingResult.setRecipeUsed(rr); final CraftingResultSlot sc = new CraftingResultSlot(p, real, craftingResult, 0, 0, 0); sc.onTake(p, is); - for (int x = 0; x < real.getSizeInventory(); x++) { - final ItemStack failed = playerInv.addItems(real.getStackInSlot(x)); + for (int x = 0; x < real.size(); x++) { + final ItemStack failed = playerInv.addItems(real.getStack(x)); if (!failed.isEmpty()) { p.dropItem(failed, false); @@ -418,8 +418,8 @@ public class PatternTermContainer extends MEMonitorableContainer } this.detectAndSendChanges(); } else { - for (int x = 0; x < real.getSizeInventory(); x++) { - final ItemStack failed = real.getStackInSlot(x); + for (int x = 0; x < real.size(); x++) { + final ItemStack failed = real.getStack(x); if (!failed.isEmpty()) { this.getCellInventory().injectItems(AEItemStack.fromItemStack(failed), Actionable.MODULATE, new MachineSource(this.getPatternTerminal())); @@ -487,7 +487,7 @@ public class PatternTermContainer extends MEMonitorableContainer } @Override - public ItemTransferable getInventoryByName(final String name) { + public FixedItemInv getInventoryByName(final String name) { if (name.equals("player")) { return new PlayerInvWrapper(this.getPlayerInventory()); } diff --git a/src/main/java/appeng/container/implementations/QuartzKnifeContainer.java b/src/main/java/appeng/container/implementations/QuartzKnifeContainer.java index 4f772edbf..b5bdbae3c 100644 --- a/src/main/java/appeng/container/implementations/QuartzKnifeContainer.java +++ b/src/main/java/appeng/container/implementations/QuartzKnifeContainer.java @@ -20,7 +20,7 @@ package appeng.container.implementations; import javax.annotation.Nonnull; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.container.ContainerType; @@ -57,7 +57,7 @@ public class QuartzKnifeContainer extends AEBaseContainer { private final QuartzKnifeObj toolInv; - private final ItemTransferable inSlot = new AppEngInternalInventory(null, 1, 1); + private final FixedItemInv inSlot = new AppEngInternalInventory(null, 1, 1); private String myName = ""; public QuartzKnifeContainer(int id, final PlayerInventory ip, final QuartzKnifeObj te) { @@ -84,7 +84,7 @@ public class QuartzKnifeContainer extends AEBaseContainer { if (currentItem != this.toolInv.getItemStack()) { if (!currentItem.isEmpty()) { if (ItemStack.areItemsEqual(this.toolInv.getItemStack(), currentItem)) { - this.getPlayerInv().setInventorySlotContents(this.getPlayerInv().currentItem, + this.getPlayerInv().setStack(this.getPlayerInv().currentItem, this.toolInv.getItemStack()); } else { this.setValidContainer(false); @@ -99,20 +99,20 @@ public class QuartzKnifeContainer extends AEBaseContainer { @Override public void onContainerClosed(final PlayerEntity par1PlayerEntity) { - if (this.inSlot.getStackInSlot(0) != null) { - par1PlayerEntity.dropItem(this.inSlot.getStackInSlot(0), false); + if (this.inSlot.getInvStack(0) != null) { + par1PlayerEntity.dropItem(this.inSlot.getInvStack(0), false); } } private class QuartzKniveSlot extends OutputSlot { - QuartzKniveSlot(ItemTransferable a, int b, int c, int d, int i) { + QuartzKniveSlot(FixedItemInv a, int b, int c, int d, int i) { super(a, b, c, d, i); } @Override public ItemStack getStack() { - final ItemTransferable baseInv = this.getItemHandler(); - final ItemStack input = baseInv.getStackInSlot(0); + final FixedItemInv baseInv = this.getItemHandler(); + final ItemStack input = baseInv.getInvStack(0); if (input == ItemStack.EMPTY) { return ItemStack.EMPTY; } @@ -153,7 +153,7 @@ public class QuartzKnifeContainer extends AEBaseContainer { final ItemStack item = QuartzKnifeContainer.this.toolInv.getItemStack(); final ItemStack before = item.copy(); item.damageItem(1, QuartzKnifeContainer.this.getPlayerInv().player, p -> { - QuartzKnifeContainer.this.getPlayerInv().setInventorySlotContents( + QuartzKnifeContainer.this.getPlayerInv().setStack( QuartzKnifeContainer.this.getPlayerInv().currentItem, ItemStack.EMPTY); MinecraftForge.EVENT_BUS.post(new PlayerDestroyItemEvent( QuartzKnifeContainer.this.getPlayerInv().player, before, null)); diff --git a/src/main/java/appeng/container/implementations/SecurityStationContainer.java b/src/main/java/appeng/container/implementations/SecurityStationContainer.java index 15e1e3203..e1035f8c2 100644 --- a/src/main/java/appeng/container/implementations/SecurityStationContainer.java +++ b/src/main/java/appeng/container/implementations/SecurityStationContainer.java @@ -24,7 +24,7 @@ import net.minecraft.inventory.container.ContainerType; import net.minecraft.inventory.container.IContainerListener; import net.minecraft.item.ItemStack; import net.minecraft.network.PacketByteBuf; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import appeng.api.AEApi; import appeng.api.config.SecurityPermissions; @@ -139,7 +139,7 @@ public class SecurityStationContainer extends MEMonitorableContainer implements } @Override - public void onChangeInventory(final ItemTransferable inv, final int slot, final InvOperation mc, + public void onChangeInventory(final FixedItemInv inv, final int slot, final InvOperation mc, final ItemStack removedStack, final ItemStack newStack) { if (!this.wirelessOut.getHasStack()) { if (this.wirelessIn.getHasStack()) { diff --git a/src/main/java/appeng/container/implementations/StorageBusContainer.java b/src/main/java/appeng/container/implementations/StorageBusContainer.java index b3f2a7fda..491cb6740 100644 --- a/src/main/java/appeng/container/implementations/StorageBusContainer.java +++ b/src/main/java/appeng/container/implementations/StorageBusContainer.java @@ -20,7 +20,7 @@ package appeng.container.implementations; import java.util.Iterator; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.container.ContainerType; @@ -86,7 +86,7 @@ public class StorageBusContainer extends UpgradeableContainer { final int xo = 8; final int yo = 23 + 6; - final ItemTransferable config = this.getUpgradeable().getInventoryByName("config"); + final FixedItemInv config = this.getUpgradeable().getInventoryByName("config"); for (int y = 0; y < 7; y++) { for (int x = 0; x < 9; x++) { if (y < 2) { @@ -97,7 +97,7 @@ public class StorageBusContainer extends UpgradeableContainer { } } - final ItemTransferable upgrades = this.getUpgradeable().getInventoryByName("upgrades"); + final FixedItemInv upgrades = this.getUpgradeable().getInventoryByName("upgrades"); this.addSlot((new RestrictedInputSlot(RestrictedInputSlot.PlacableItemType.UPGRADES, upgrades, 0, 187, 8, this.getPlayerInventory())).setNotDraggable()); this.addSlot((new RestrictedInputSlot(RestrictedInputSlot.PlacableItemType.UPGRADES, upgrades, 1, 187, 8 + 18, @@ -148,7 +148,7 @@ public class StorageBusContainer extends UpgradeableContainer { } public void partition() { - final ItemTransferable inv = this.getUpgradeable().getInventoryByName("config"); + final FixedItemInv inv = this.getUpgradeable().getInventoryByName("config"); final IMEInventory cellInv = this.storageBus.getInternalHandler(); @@ -159,7 +159,7 @@ public class StorageBusContainer extends UpgradeableContainer { i = list.iterator(); } - for (int x = 0; x < inv.getSlots(); x++) { + for (int x = 0; x < inv.getSlotCount(); x++) { if (i.hasNext() && this.isSlotEnabled((x / 9) - 2)) { // TODO: check if ok final ItemStack g = i.next().asItemStackRepresentation(); diff --git a/src/main/java/appeng/container/implementations/UpgradeableContainer.java b/src/main/java/appeng/container/implementations/UpgradeableContainer.java index d38b10c41..92f6b407a 100644 --- a/src/main/java/appeng/container/implementations/UpgradeableContainer.java +++ b/src/main/java/appeng/container/implementations/UpgradeableContainer.java @@ -21,13 +21,13 @@ package appeng.container.implementations; import net.minecraft.block.entity.BlockEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; -import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Inventory; import net.minecraft.inventory.container.ContainerType; import net.minecraft.item.ItemStack; import net.minecraft.network.PacketByteBuf; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import appeng.api.config.FuzzyMode; import appeng.api.config.RedstoneMode; @@ -111,8 +111,8 @@ public class UpgradeableContainer extends AEBaseContainer implements IOptionalSl zCoord = mk.getPos().getZ(); } - final IInventory pi = this.getPlayerInv(); - for (int x = 0; x < pi.getSizeInventory(); x++) { + final Inventory pi = this.getPlayerInv(); + for (int x = 0; x < pi.size(); x++) { final ItemStack pii = pi.getStackInSlot(x); if (!pii.isEmpty() && pii.getItem() instanceof NetworkToolItem) { this.lockPlayerInventorySlot(x); @@ -149,7 +149,7 @@ public class UpgradeableContainer extends AEBaseContainer implements IOptionalSl protected void setupConfig() { this.setupUpgrades(); - final ItemTransferable inv = this.getUpgradeable().getInventoryByName("config"); + final FixedItemInv inv = this.getUpgradeable().getInventoryByName("config"); final int y = 40; final int x = 80; this.addSlot(new FakeTypeOnlySlot(inv, 0, x, y)); @@ -168,7 +168,7 @@ public class UpgradeableContainer extends AEBaseContainer implements IOptionalSl } protected void setupUpgrades() { - final ItemTransferable upgrades = this.getUpgradeable().getInventoryByName("upgrades"); + final FixedItemInv upgrades = this.getUpgradeable().getInventoryByName("upgrades"); if (this.availableUpgrades() > 0) { this.addSlot((new RestrictedInputSlot(RestrictedInputSlot.PlacableItemType.UPGRADES, upgrades, 0, 187, 8, this.getPlayerInventory())).setNotDraggable()); @@ -229,12 +229,12 @@ public class UpgradeableContainer extends AEBaseContainer implements IOptionalSl protected void checkToolbox() { if (this.hasToolbox()) { - final ItemStack currentItem = this.getPlayerInv().getStackInSlot(this.tbSlot); + final ItemStack currentItem = this.getPlayerInv().getStack(this.tbSlot); if (currentItem != this.tbInventory.getItemStack()) { if (!currentItem.isEmpty()) { if (ItemStack.areItemsEqual(this.tbInventory.getItemStack(), currentItem)) { - this.getPlayerInv().setInventorySlotContents(this.tbSlot, this.tbInventory.getItemStack()); + this.getPlayerInv().setStack(this.tbSlot, this.tbInventory.getItemStack()); } else { this.setValidContainer(false); } diff --git a/src/main/java/appeng/container/implementations/WirelessTermContainer.java b/src/main/java/appeng/container/implementations/WirelessTermContainer.java index 167966fe7..5b3ae17f5 100644 --- a/src/main/java/appeng/container/implementations/WirelessTermContainer.java +++ b/src/main/java/appeng/container/implementations/WirelessTermContainer.java @@ -57,7 +57,7 @@ public class WirelessTermContainer extends MEPortableCellContainer { if (!this.wirelessTerminalGUIObject.rangeCheck()) { if (Platform.isServer() && this.isValidContainer()) { - this.getPlayerInv().player.sendMessage(PlayerMessages.OutOfRange.get()); + this.getPlayerInv().player.sendSystemMessage(PlayerMessages.OutOfRange.get(), Util.NIL_UUID); } this.setValidContainer(false); diff --git a/src/main/java/appeng/container/slot/AppEngCraftingSlot.java b/src/main/java/appeng/container/slot/AppEngCraftingSlot.java index cc9d3ce94..e1eb53683 100644 --- a/src/main/java/appeng/container/slot/AppEngCraftingSlot.java +++ b/src/main/java/appeng/container/slot/AppEngCraftingSlot.java @@ -18,11 +18,11 @@ package appeng.container.slot; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.CraftingInventory; import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipeType; +import net.minecraft.recipe.RecipeType; import net.minecraft.util.NonNullList; import net.minecraft.world.World; import net.minecraftforge.fml.hooks.BasicEventHooks; @@ -35,7 +35,7 @@ public class AppEngCraftingSlot extends AppEngSlot { /** * The craft matrix inventory linked to this result slot. */ - private final ItemTransferable craftMatrix; + private final FixedItemInv craftMatrix; /** * The player that is using the GUI where this slot resides. @@ -48,8 +48,8 @@ public class AppEngCraftingSlot extends AppEngSlot { */ private int amountCrafted; - public AppEngCraftingSlot(final PlayerEntity par1PlayerEntity, final ItemTransferable par2IInventory, - final ItemTransferable par3IInventory, final int par4, final int par5, final int par6) { + public AppEngCraftingSlot(final PlayerEntity par1PlayerEntity, final FixedItemInv par2IInventory, + final FixedItemInv par3IInventory, final int par4, final int par5, final int par6) { super(par3IInventory, par4, par5, par6); this.thePlayer = par1PlayerEntity; this.craftMatrix = par2IInventory; @@ -92,8 +92,8 @@ public class AppEngCraftingSlot extends AppEngSlot { net.minecraftforge.common.ForgeHooks.setCraftingPlayer(playerIn); final CraftingInventory ic = new CraftingInventory(this.getContainer(), 3, 3); - for (int x = 0; x < this.craftMatrix.getSlots(); x++) { - ic.setInventorySlotContents(x, this.craftMatrix.getStackInSlot(x)); + for (int x = 0; x < this.craftMatrix.getSlotCount(); x++) { + ic.setStack(x, this.craftMatrix.getInvStack(x)); } final NonNullList aitemstack = this.getRemainingItems(ic, playerIn.world); @@ -103,7 +103,7 @@ public class AppEngCraftingSlot extends AppEngSlot { net.minecraftforge.common.ForgeHooks.setCraftingPlayer(null); for (int i = 0; i < aitemstack.size(); ++i) { - final ItemStack itemstack1 = this.craftMatrix.getStackInSlot(i); + final ItemStack itemstack1 = this.craftMatrix.getInvStack(i); final ItemStack itemstack2 = aitemstack.get(i); if (!itemstack1.isEmpty()) { @@ -111,7 +111,7 @@ public class AppEngCraftingSlot extends AppEngSlot { } if (!itemstack2.isEmpty()) { - if (this.craftMatrix.getStackInSlot(i).isEmpty()) { + if (this.craftMatrix.getInvStack(i).isEmpty()) { ItemHandlerUtil.setStackInSlot(this.craftMatrix, i, itemstack2); } else if (!this.thePlayer.inventory.addItemStackToInventory(itemstack2)) { this.thePlayer.dropItem(itemstack2, false); @@ -138,7 +138,7 @@ public class AppEngCraftingSlot extends AppEngSlot { // TODO: This is really hacky and NEEDS to be solved with a full container/gui // refactoring. protected NonNullList getRemainingItems(CraftingInventory ic, World world) { - return world.getRecipeManager().getRecipe(IRecipeType.CRAFTING, ic, world) + return world.getRecipeManager().getRecipe(RecipeType.CRAFTING, ic, world) .map(iCraftingRecipe -> iCraftingRecipe.getRemainingItems(ic)) .orElse(NonNullList.withSize(9, ItemStack.EMPTY)); } diff --git a/src/main/java/appeng/container/slot/AppEngSlot.java b/src/main/java/appeng/container/slot/AppEngSlot.java index 3d4cbbe61..5b176d169 100644 --- a/src/main/java/appeng/container/slot/AppEngSlot.java +++ b/src/main/java/appeng/container/slot/AppEngSlot.java @@ -20,11 +20,10 @@ package appeng.container.slot; import javax.annotation.Nonnull; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.inventory.IInventory; import net.minecraft.inventory.Inventory; import net.minecraft.inventory.container.Slot; import net.minecraft.item.ItemStack; @@ -33,8 +32,8 @@ import appeng.container.AEBaseContainer; import appeng.util.helpers.ItemHandlerUtil; public class AppEngSlot extends Slot { - private static IInventory emptyInventory = new Inventory(0); - private final ItemTransferable itemHandler; + private static Inventory emptyInventory = new Inventory(0); + private final FixedItemInv itemHandler; private final int index; private final int defX; @@ -46,7 +45,7 @@ public class AppEngSlot extends Slot { private CalculatedValidity isValid; private boolean isDisplay = false; - public AppEngSlot(final ItemTransferable inv, final int idx, final int x, final int y) { + public AppEngSlot(final FixedItemInv inv, final int idx, final int x, final int y) { super(emptyInventory, idx, x, y); this.itemHandler = inv; this.index = idx; @@ -89,7 +88,7 @@ public class AppEngSlot extends Slot { return ItemStack.EMPTY; } - if (this.itemHandler.getSlots() <= this.getSlotIndex()) { + if (this.itemHandler.getSlotCount() <= this.getSlotIndex()) { return ItemStack.EMPTY; } @@ -98,7 +97,7 @@ public class AppEngSlot extends Slot { return this.getDisplayStack(); } - return this.itemHandler.getStackInSlot(this.index); + return this.itemHandler.getInvStack(this.index); } @Override @@ -115,7 +114,7 @@ public class AppEngSlot extends Slot { } } - public ItemTransferable getItemHandler() { + public FixedItemInv getItemHandler() { return this.itemHandler; } @@ -166,7 +165,7 @@ public class AppEngSlot extends Slot { } public ItemStack getDisplayStack() { - return this.itemHandler.getStackInSlot(this.index); + return this.itemHandler.getInvStack(this.index); } public float getOpacityOfIcon() { diff --git a/src/main/java/appeng/container/slot/CraftingMatrixSlot.java b/src/main/java/appeng/container/slot/CraftingMatrixSlot.java index c3e3963d0..d75306df2 100644 --- a/src/main/java/appeng/container/slot/CraftingMatrixSlot.java +++ b/src/main/java/appeng/container/slot/CraftingMatrixSlot.java @@ -18,8 +18,8 @@ package appeng.container.slot; -import alexiil.mc.lib.attributes.item.ItemTransferable; -import net.minecraft.inventory.IInventory; +import alexiil.mc.lib.attributes.item.FixedItemInv; +import net.minecraft.inventory.Inventory; import net.minecraft.item.ItemStack; import appeng.container.AEBaseContainer; @@ -27,9 +27,9 @@ import appeng.util.inv.WrapperInvItemHandler; public class CraftingMatrixSlot extends AppEngSlot { private final AEBaseContainer c; - private final IInventory wrappedInventory; + private final Inventory wrappedInventory; - public CraftingMatrixSlot(final AEBaseContainer c, final ItemTransferable par1iInventory, final int par2, + public CraftingMatrixSlot(final AEBaseContainer c, final FixedItemInv par1iInventory, final int par2, final int par3, final int par4) { super(par1iInventory, par2, par3, par4); this.c = c; diff --git a/src/main/java/appeng/container/slot/CraftingTermSlot.java b/src/main/java/appeng/container/slot/CraftingTermSlot.java index f7d536d84..8b4c33794 100644 --- a/src/main/java/appeng/container/slot/CraftingTermSlot.java +++ b/src/main/java/appeng/container/slot/CraftingTermSlot.java @@ -22,13 +22,13 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.CraftingInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.item.crafting.IRecipeType; +import net.minecraft.recipe.Recipe; +import net.minecraft.recipe.RecipeType; import net.minecraft.util.NonNullList; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -50,15 +50,15 @@ import appeng.items.storage.ViewCellItem; import appeng.util.InventoryAdaptor; import appeng.util.Platform; import appeng.util.helpers.ItemHandlerUtil; -import appeng.util.inv.AdaptorItemHandler; +import appeng.util.inv.AdaptorFixedInv; import appeng.util.inv.WrapperCursorItemHandler; import appeng.util.inv.WrapperInvItemHandler; import appeng.util.item.AEItemStack; public class CraftingTermSlot extends AppEngCraftingSlot { - private final ItemTransferable craftInv; - private final ItemTransferable pattern; + private final FixedItemInv craftInv; + private final FixedItemInv pattern; private final IActionSource mySrc; private final IEnergySource energySrc; @@ -66,8 +66,8 @@ public class CraftingTermSlot extends AppEngCraftingSlot { private final IContainerCraftingPacket container; public CraftingTermSlot(final PlayerEntity player, final IActionSource mySrc, final IEnergySource energySrc, - final IStorageMonitorable storage, final ItemTransferable cMatrix, final ItemTransferable secondMatrix, - final ItemTransferable output, final int x, final int y, final IContainerCraftingPacket ccp) { + final IStorageMonitorable storage, final FixedItemInv cMatrix, final FixedItemInv secondMatrix, + final FixedItemInv output, final int x, final int y, final IContainerCraftingPacket ccp) { super(player, cMatrix, output, 0, x, y); this.energySrc = energySrc; this.storage = storage; @@ -77,7 +77,7 @@ public class CraftingTermSlot extends AppEngCraftingSlot { this.container = ccp; } - public ItemTransferable getCraftingMatrix() { + public FixedItemInv getCraftingMatrix() { return this.craftInv; } @@ -111,12 +111,12 @@ public class CraftingTermSlot extends AppEngCraftingSlot { maxTimesToCraft = (int) Math.floor((double) this.getStack().getMaxStackSize() / (double) howManyPerCraft); } else if (action == InventoryAction.CRAFT_STACK) // craft into hand, full stack { - ia = new AdaptorItemHandler(new WrapperCursorItemHandler(who.inventory)); + ia = new AdaptorFixedInv(new WrapperCursorItemHandler(who.inventory)); maxTimesToCraft = (int) Math.floor((double) this.getStack().getMaxStackSize() / (double) howManyPerCraft); } else // pick up what was crafted... { - ia = new AdaptorItemHandler(new WrapperCursorItemHandler(who.inventory)); + ia = new AdaptorFixedInv(new WrapperCursorItemHandler(who.inventory)); maxTimesToCraft = 1; } @@ -139,7 +139,7 @@ public class CraftingTermSlot extends AppEngCraftingSlot { final List drops = new ArrayList<>(); drops.add(extra); Platform.spawnDrops(who.world, - new BlockPos((int) who.getPosX(), (int) who.getPosY(), (int) who.getPosZ()), drops); + new BlockPos((int) who.getX(), (int) who.getY(), (int) who.getPosZ()), drops); return; } } @@ -148,17 +148,17 @@ public class CraftingTermSlot extends AppEngCraftingSlot { // TODO: This is really hacky and NEEDS to be solved with a full container/gui // refactoring. - protected IRecipe findRecipe(CraftingInventory ic, World world) { + protected Recipe findRecipe(CraftingInventory ic, World world) { if (this.container instanceof CraftingTermContainer) { final CraftingTermContainer containerTerminal = (CraftingTermContainer) this.container; - final IRecipe recipe = containerTerminal.getCurrentRecipe(); + final Recipe recipe = containerTerminal.getCurrentRecipe(); if (recipe != null && recipe.matches(ic, world)) { return containerTerminal.getCurrentRecipe(); } } - return world.getRecipeManager().getRecipe(IRecipeType.CRAFTING, ic, world).orElse(null); + return world.getRecipeManager().getRecipe(RecipeType.CRAFTING, ic, world).orElse(null); } // TODO: This is really hacky and NEEDS to be solved with a full container/gui @@ -167,7 +167,7 @@ public class CraftingTermSlot extends AppEngCraftingSlot { protected NonNullList getRemainingItems(CraftingInventory ic, World world) { if (this.container instanceof CraftingTermContainer) { final CraftingTermContainer containerTerminal = (CraftingTermContainer) this.container; - final IRecipe recipe = containerTerminal.getCurrentRecipe(); + final Recipe recipe = containerTerminal.getCurrentRecipe(); if (recipe != null && recipe.matches(ic, world)) { return containerTerminal.getCurrentRecipe().getRemainingItems(ic); @@ -187,7 +187,7 @@ public class CraftingTermSlot extends AppEngCraftingSlot { ItemStack is = this.getStack(); if (!is.isEmpty() && ItemStack.areItemsEqual(request, is)) { - final ItemStack[] set = new ItemStack[this.getPattern().getSlots()]; + final ItemStack[] set = new ItemStack[this.getPattern().getSlotCount()]; // Safeguard for empty slots in the inventory for now Arrays.fill(set, ItemStack.EMPTY); @@ -195,17 +195,17 @@ public class CraftingTermSlot extends AppEngCraftingSlot { if (Platform.isServer()) { final CraftingInventory ic = new CraftingInventory(new ContainerNull(), 3, 3); for (int x = 0; x < 9; x++) { - ic.setInventorySlotContents(x, this.getPattern().getStackInSlot(x)); + ic.setStack(x, this.getPattern().getInvStack(x)); } - final IRecipe r = this.findRecipe(ic, p.world); + final Recipe r = this.findRecipe(ic, p.world); if (r == null) { final Item target = request.getItem(); if (target.isDamageable() && target.isRepairable(request)) { boolean isBad = false; - for (int x = 0; x < ic.getSizeInventory(); x++) { - final ItemStack pis = ic.getStackInSlot(x); + for (int x = 0; x < ic.size(); x++) { + final ItemStack pis = ic.getStack(x); if (pis.isEmpty()) { continue; } @@ -223,15 +223,15 @@ public class CraftingTermSlot extends AppEngCraftingSlot { return ItemStack.EMPTY; } - is = r.getCraftingResult(ic); + is = r.craft(ic); if (inv != null) { - for (int x = 0; x < this.getPattern().getSlots(); x++) { - if (!this.getPattern().getStackInSlot(x).isEmpty()) { + for (int x = 0; x < this.getPattern().getSlotCount(); x++) { + if (!this.getPattern().getInvStack(x).isEmpty()) { set[x] = Platform.extractItemsByRecipe(this.energySrc, this.mySrc, inv, p.world, r, is, ic, - this.getPattern().getStackInSlot(x), x, all, Actionable.MODULATE, + this.getPattern().getInvStack(x), x, all, Actionable.MODULATE, ViewCellItem.createFilter(this.container.getViewCells())); - ic.setInventorySlotContents(x, set[x]); + ic.setStack(x, set[x]); } } } @@ -267,8 +267,8 @@ public class CraftingTermSlot extends AppEngCraftingSlot { // add one of each item to the items on the board... if (Platform.isServer()) { // set new items onto the crafting table... - for (int x = 0; x < this.craftInv.getSlots(); x++) { - if (this.craftInv.getStackInSlot(x).isEmpty()) { + for (int x = 0; x < this.craftInv.getSlotCount(); x++) { + if (this.craftInv.getInvStack(x).isEmpty()) { ItemHandlerUtil.setStackInSlot(this.craftInv, x, set[x]); } else if (!set[x].isEmpty()) { // eek! put it back! @@ -282,11 +282,11 @@ public class CraftingTermSlot extends AppEngCraftingSlot { } if (drops.size() > 0) { - Platform.spawnDrops(p.world, new BlockPos((int) p.getPosX(), (int) p.getPosY(), (int) p.getPosZ()), drops); + Platform.spawnDrops(p.world, new BlockPos((int) p.getX(), (int) p.getY(), (int) p.getPosZ()), drops); } } - ItemTransferable getPattern() { + FixedItemInv getPattern() { return this.pattern; } } diff --git a/src/main/java/appeng/container/slot/DisabledSlot.java b/src/main/java/appeng/container/slot/DisabledSlot.java index 75ced5168..4cc437567 100644 --- a/src/main/java/appeng/container/slot/DisabledSlot.java +++ b/src/main/java/appeng/container/slot/DisabledSlot.java @@ -20,11 +20,11 @@ package appeng.container.slot; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; public class DisabledSlot extends AppEngSlot { - public DisabledSlot(final ItemTransferable par1iInventory, final int slotIndex, final int x, final int y) { + public DisabledSlot(final FixedItemInv par1iInventory, final int slotIndex, final int x, final int y) { super(par1iInventory, slotIndex, x, y); } diff --git a/src/main/java/appeng/container/slot/FakeBlacklistSlot.java b/src/main/java/appeng/container/slot/FakeBlacklistSlot.java index 6a95caca7..1418add13 100644 --- a/src/main/java/appeng/container/slot/FakeBlacklistSlot.java +++ b/src/main/java/appeng/container/slot/FakeBlacklistSlot.java @@ -18,11 +18,11 @@ package appeng.container.slot; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; public class FakeBlacklistSlot extends FakeTypeOnlySlot { - public FakeBlacklistSlot(final ItemTransferable inv, final int idx, final int x, final int y) { + public FakeBlacklistSlot(final FixedItemInv inv, final int idx, final int x, final int y) { super(inv, idx, x, y); } diff --git a/src/main/java/appeng/container/slot/FakeCraftingMatrixSlot.java b/src/main/java/appeng/container/slot/FakeCraftingMatrixSlot.java index c2e0fa8d0..2d1744cf9 100644 --- a/src/main/java/appeng/container/slot/FakeCraftingMatrixSlot.java +++ b/src/main/java/appeng/container/slot/FakeCraftingMatrixSlot.java @@ -18,11 +18,11 @@ package appeng.container.slot; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; public class FakeCraftingMatrixSlot extends FakeSlot { - public FakeCraftingMatrixSlot(final ItemTransferable inv, final int idx, final int x, final int y) { + public FakeCraftingMatrixSlot(final FixedItemInv inv, final int idx, final int x, final int y) { super(inv, idx, x, y); } } diff --git a/src/main/java/appeng/container/slot/FakeSlot.java b/src/main/java/appeng/container/slot/FakeSlot.java index 0becf58a9..92c89e00d 100644 --- a/src/main/java/appeng/container/slot/FakeSlot.java +++ b/src/main/java/appeng/container/slot/FakeSlot.java @@ -18,13 +18,13 @@ package appeng.container.slot; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; public class FakeSlot extends AppEngSlot { - public FakeSlot(final ItemTransferable inv, final int idx, final int x, final int y) { + public FakeSlot(final FixedItemInv inv, final int idx, final int x, final int y) { super(inv, idx, x, y); } diff --git a/src/main/java/appeng/container/slot/FakeTypeOnlySlot.java b/src/main/java/appeng/container/slot/FakeTypeOnlySlot.java index b6503b862..18a6d8dbe 100644 --- a/src/main/java/appeng/container/slot/FakeTypeOnlySlot.java +++ b/src/main/java/appeng/container/slot/FakeTypeOnlySlot.java @@ -18,12 +18,12 @@ package appeng.container.slot; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.item.ItemStack; public class FakeTypeOnlySlot extends FakeSlot { - public FakeTypeOnlySlot(final ItemTransferable inv, final int idx, final int x, final int y) { + public FakeTypeOnlySlot(final FixedItemInv inv, final int idx, final int x, final int y) { super(inv, idx, x, y); } diff --git a/src/main/java/appeng/container/slot/InaccessibleSlot.java b/src/main/java/appeng/container/slot/InaccessibleSlot.java index 8eccad6eb..221769f87 100644 --- a/src/main/java/appeng/container/slot/InaccessibleSlot.java +++ b/src/main/java/appeng/container/slot/InaccessibleSlot.java @@ -20,13 +20,13 @@ package appeng.container.slot; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; public class InaccessibleSlot extends AppEngSlot { private ItemStack dspStack = ItemStack.EMPTY; - public InaccessibleSlot(final ItemTransferable i, final int slotIdx, final int x, final int y) { + public InaccessibleSlot(final FixedItemInv i, final int slotIdx, final int x, final int y) { super(i, slotIdx, x, y); } diff --git a/src/main/java/appeng/container/slot/MolecularAssemblerPatternSlot.java b/src/main/java/appeng/container/slot/MolecularAssemblerPatternSlot.java index c90ff2906..aacd48adc 100644 --- a/src/main/java/appeng/container/slot/MolecularAssemblerPatternSlot.java +++ b/src/main/java/appeng/container/slot/MolecularAssemblerPatternSlot.java @@ -19,7 +19,7 @@ package appeng.container.slot; import net.minecraft.item.ItemStack; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import appeng.container.implementations.MolecularAssemblerContainer; @@ -27,7 +27,7 @@ public class MolecularAssemblerPatternSlot extends AppEngSlot { private final MolecularAssemblerContainer mac; - public MolecularAssemblerPatternSlot(final MolecularAssemblerContainer mac, final ItemTransferable i, final int slotIdx, + public MolecularAssemblerPatternSlot(final MolecularAssemblerContainer mac, final FixedItemInv i, final int slotIdx, final int x, final int y) { super(i, slotIdx, x, y); this.mac = mac; diff --git a/src/main/java/appeng/container/slot/NormalSlot.java b/src/main/java/appeng/container/slot/NormalSlot.java index 6bad7f785..e5a841768 100644 --- a/src/main/java/appeng/container/slot/NormalSlot.java +++ b/src/main/java/appeng/container/slot/NormalSlot.java @@ -18,11 +18,11 @@ package appeng.container.slot; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; public class NormalSlot extends AppEngSlot { - public NormalSlot(final ItemTransferable inv, final int slot, final int xPos, final int yPos) { + public NormalSlot(final FixedItemInv inv, final int slot, final int xPos, final int yPos) { super(inv, slot, xPos, yPos); } } diff --git a/src/main/java/appeng/container/slot/OptionalFakeSlot.java b/src/main/java/appeng/container/slot/OptionalFakeSlot.java index b1982b457..0fff55612 100644 --- a/src/main/java/appeng/container/slot/OptionalFakeSlot.java +++ b/src/main/java/appeng/container/slot/OptionalFakeSlot.java @@ -21,7 +21,7 @@ package appeng.container.slot; import javax.annotation.Nonnull; import net.minecraft.item.ItemStack; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; public class OptionalFakeSlot extends FakeSlot implements IOptionalSlot { @@ -31,7 +31,7 @@ public class OptionalFakeSlot extends FakeSlot implements IOptionalSlot { private final IOptionalSlotHost host; private boolean renderDisabled = true; - public OptionalFakeSlot(final ItemTransferable inv, final IOptionalSlotHost containerBus, final int idx, final int x, + public OptionalFakeSlot(final FixedItemInv inv, final IOptionalSlotHost containerBus, final int idx, final int x, final int y, final int offX, final int offY, final int groupNum) { super(inv, idx, x + offX * 18, y + offY * 18); this.srcX = x; diff --git a/src/main/java/appeng/container/slot/OptionalNormalSlot.java b/src/main/java/appeng/container/slot/OptionalNormalSlot.java index 635ef62a2..b9ca13567 100644 --- a/src/main/java/appeng/container/slot/OptionalNormalSlot.java +++ b/src/main/java/appeng/container/slot/OptionalNormalSlot.java @@ -18,14 +18,14 @@ package appeng.container.slot; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; public class OptionalNormalSlot extends AppEngSlot implements IOptionalSlot { private final int groupNum; private final IOptionalSlotHost host; - public OptionalNormalSlot(final ItemTransferable inv, final IOptionalSlotHost containerBus, final int slot, + public OptionalNormalSlot(final FixedItemInv inv, final IOptionalSlotHost containerBus, final int slot, final int xPos, final int yPos, final int groupNum) { super(inv, slot, xPos, yPos); this.groupNum = groupNum; diff --git a/src/main/java/appeng/container/slot/OptionalRestrictedInputSlot.java b/src/main/java/appeng/container/slot/OptionalRestrictedInputSlot.java index fe17b46ac..b5706071f 100644 --- a/src/main/java/appeng/container/slot/OptionalRestrictedInputSlot.java +++ b/src/main/java/appeng/container/slot/OptionalRestrictedInputSlot.java @@ -18,7 +18,7 @@ package appeng.container.slot; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.entity.player.PlayerInventory; public class OptionalRestrictedInputSlot extends RestrictedInputSlot { @@ -26,7 +26,7 @@ public class OptionalRestrictedInputSlot extends RestrictedInputSlot { private final int groupNum; private final IOptionalSlotHost host; - public OptionalRestrictedInputSlot(final PlacableItemType valid, final ItemTransferable i, final IOptionalSlotHost host, + public OptionalRestrictedInputSlot(final PlacableItemType valid, final FixedItemInv i, final IOptionalSlotHost host, final int slotIndex, final int x, final int y, final int grpNum, final PlayerInventory invPlayer) { super(valid, i, slotIndex, x, y, invPlayer); this.groupNum = grpNum; diff --git a/src/main/java/appeng/container/slot/OptionalTypeOnlyFakeSlot.java b/src/main/java/appeng/container/slot/OptionalTypeOnlyFakeSlot.java index ddc0e10a4..d342c3a92 100644 --- a/src/main/java/appeng/container/slot/OptionalTypeOnlyFakeSlot.java +++ b/src/main/java/appeng/container/slot/OptionalTypeOnlyFakeSlot.java @@ -19,11 +19,11 @@ package appeng.container.slot; import net.minecraft.item.ItemStack; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; public class OptionalTypeOnlyFakeSlot extends OptionalFakeSlot { - public OptionalTypeOnlyFakeSlot(final ItemTransferable inv, final IOptionalSlotHost containerBus, final int idx, + public OptionalTypeOnlyFakeSlot(final FixedItemInv inv, final IOptionalSlotHost containerBus, final int idx, final int x, final int y, final int offX, final int offY, final int groupNum) { super(inv, containerBus, idx, x, y, offX, offY, groupNum); } diff --git a/src/main/java/appeng/container/slot/OutputSlot.java b/src/main/java/appeng/container/slot/OutputSlot.java index 63d49805e..c8fc007c3 100644 --- a/src/main/java/appeng/container/slot/OutputSlot.java +++ b/src/main/java/appeng/container/slot/OutputSlot.java @@ -19,11 +19,11 @@ package appeng.container.slot; import net.minecraft.item.ItemStack; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; public class OutputSlot extends AppEngSlot { - public OutputSlot(final ItemTransferable a, final int b, final int c, final int d, final int i) { + public OutputSlot(final FixedItemInv a, final int b, final int c, final int d, final int i) { super(a, b, c, d); this.setIIcon(i); } diff --git a/src/main/java/appeng/container/slot/PatternOutputsSlot.java b/src/main/java/appeng/container/slot/PatternOutputsSlot.java index 3915150a8..e75df58f8 100644 --- a/src/main/java/appeng/container/slot/PatternOutputsSlot.java +++ b/src/main/java/appeng/container/slot/PatternOutputsSlot.java @@ -18,11 +18,11 @@ package appeng.container.slot; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; public class PatternOutputsSlot extends OptionalFakeSlot { - public PatternOutputsSlot(final ItemTransferable inv, final IOptionalSlotHost containerBus, final int idx, final int x, + public PatternOutputsSlot(final FixedItemInv inv, final IOptionalSlotHost containerBus, final int idx, final int x, final int y, final int offX, final int offY, final int groupNum) { super(inv, containerBus, idx, x, y, offX, offY, groupNum); } diff --git a/src/main/java/appeng/container/slot/PatternTermSlot.java b/src/main/java/appeng/container/slot/PatternTermSlot.java index 66a2809f7..3311ee62c 100644 --- a/src/main/java/appeng/container/slot/PatternTermSlot.java +++ b/src/main/java/appeng/container/slot/PatternTermSlot.java @@ -18,7 +18,7 @@ package appeng.container.slot; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; @@ -37,8 +37,8 @@ public class PatternTermSlot extends CraftingTermSlot { private final IOptionalSlotHost host; public PatternTermSlot(final PlayerEntity player, final IActionSource mySrc, final IEnergySource energySrc, - final IStorageMonitorable storage, final ItemTransferable cMatrix, final ItemTransferable secondMatrix, - final ItemTransferable output, final int x, final int y, final IOptionalSlotHost h, final int groupNumber, + final IStorageMonitorable storage, final FixedItemInv cMatrix, final FixedItemInv secondMatrix, + final FixedItemInv output, final int x, final int y, final IOptionalSlotHost h, final int groupNumber, final IContainerCraftingPacket c) { super(player, mySrc, energySrc, storage, cMatrix, secondMatrix, output, x, y, c); diff --git a/src/main/java/appeng/container/slot/PlayerHotBarSlot.java b/src/main/java/appeng/container/slot/PlayerHotBarSlot.java index ecaeb3c52..c7bdc3505 100644 --- a/src/main/java/appeng/container/slot/PlayerHotBarSlot.java +++ b/src/main/java/appeng/container/slot/PlayerHotBarSlot.java @@ -18,11 +18,11 @@ package appeng.container.slot; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; public class PlayerHotBarSlot extends AppEngSlot { - public PlayerHotBarSlot(final ItemTransferable par1iInventory, final int par2, final int par3, final int par4) { + public PlayerHotBarSlot(final FixedItemInv par1iInventory, final int par2, final int par3, final int par4) { super(par1iInventory, par2, par3, par4); this.setPlayerSide(true); } diff --git a/src/main/java/appeng/container/slot/PlayerInvSlot.java b/src/main/java/appeng/container/slot/PlayerInvSlot.java index 786a525c5..65198bcf5 100644 --- a/src/main/java/appeng/container/slot/PlayerInvSlot.java +++ b/src/main/java/appeng/container/slot/PlayerInvSlot.java @@ -18,13 +18,13 @@ package appeng.container.slot; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; // there is nothing special about this slot, its simply used to represent the players inventory, vs a container slot. public class PlayerInvSlot extends AppEngSlot { - public PlayerInvSlot(final ItemTransferable par1iInventory, final int idx, final int x, final int y) { + public PlayerInvSlot(final FixedItemInv par1iInventory, final int idx, final int x, final int y) { super(par1iInventory, idx, x, y); this.setPlayerSide(true); diff --git a/src/main/java/appeng/container/slot/RestrictedInputSlot.java b/src/main/java/appeng/container/slot/RestrictedInputSlot.java index fb58e2f31..9fa5fe94f 100644 --- a/src/main/java/appeng/container/slot/RestrictedInputSlot.java +++ b/src/main/java/appeng/container/slot/RestrictedInputSlot.java @@ -21,7 +21,7 @@ package appeng.container.slot; import java.util.List; import java.util.Set; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import com.google.common.collect.ImmutableList; import net.minecraft.entity.player.PlayerEntity; @@ -70,7 +70,7 @@ public class RestrictedInputSlot extends AppEngSlot { private boolean allowEdit = true; private int stackLimit = -1; - public RestrictedInputSlot(final PlacableItemType valid, final ItemTransferable i, final int slotIndex, final int x, + public RestrictedInputSlot(final PlacableItemType valid, final FixedItemInv i, final int slotIndex, final int x, final int y, final PlayerInventory p) { super(i, slotIndex, x, y); this.which = valid; @@ -233,7 +233,7 @@ public class RestrictedInputSlot extends AppEngSlot { final ItemStack is = super.getStack(); if (!is.isEmpty() && is.getItem() instanceof EncodedPatternItem) { final EncodedPatternItem iep = (EncodedPatternItem) is.getItem(); - final ItemStack out = iep.getOutput(is); + final ItemStack out = iep.getOutput(p.player.world, is); if (!out.isEmpty()) { return out; } diff --git a/src/main/java/appeng/core/AERecipeType.java b/src/main/java/appeng/core/AERecipeType.java index 2d20297ff..6c71d44cd 100644 --- a/src/main/java/appeng/core/AERecipeType.java +++ b/src/main/java/appeng/core/AERecipeType.java @@ -1,10 +1,10 @@ package appeng.core; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.item.crafting.IRecipeType; +import net.minecraft.recipe.Recipe; +import net.minecraft.recipe.RecipeType; import net.minecraft.util.Identifier; -public class AERecipeType> implements IRecipeType { +public class AERecipeType> implements RecipeType { private final String id; public AERecipeType(Identifier registryName) { diff --git a/src/main/java/appeng/core/AppEng.java b/src/main/java/appeng/core/AppEng.java index 4ae8ad634..09c2ac94b 100644 --- a/src/main/java/appeng/core/AppEng.java +++ b/src/main/java/appeng/core/AppEng.java @@ -32,7 +32,7 @@ import net.minecraft.client.renderer.entity.ItemRenderer; import net.minecraft.entity.EntityType; import net.minecraft.inventory.container.ContainerType; import net.minecraft.item.Item; -import net.minecraft.item.crafting.IRecipeSerializer; +import net.minecraft.recipe.RecipeSerializer; import net.minecraft.particles.ParticleType; import net.minecraft.block.entity.BlockEntityType; import net.minecraft.util.Identifier; @@ -120,7 +120,7 @@ public final class AppEng { modEventBus.addGenericListener(ParticleType.class, registration::registerParticleTypes); modEventBus.addGenericListener(BlockEntityType.class, registration::registerTileEntities); modEventBus.addGenericListener(ContainerType.class, registration::registerContainerTypes); - modEventBus.addGenericListener(IRecipeSerializer.class, registration::registerRecipeSerializers); + modEventBus.addGenericListener(RecipeSerializer.class, registration::registerRecipeSerializers); modEventBus.addGenericListener(Feature.class, registration::registerWorldGen); modEventBus.addGenericListener(Biome.class, registration::registerBiomes); modEventBus.addGenericListener(ModDimension.class, registration::registerModDimension); diff --git a/src/main/java/appeng/core/CommonHelper.java b/src/main/java/appeng/core/CommonHelper.java index cfe8851c8..f5a426cb9 100644 --- a/src/main/java/appeng/core/CommonHelper.java +++ b/src/main/java/appeng/core/CommonHelper.java @@ -37,8 +37,6 @@ import appeng.core.sync.BasePacket; public abstract class CommonHelper { - public abstract World getWorld(); - public abstract void bindTileEntitySpecialRenderer(Class tile, AEBaseBlock blk); public abstract List getPlayers(); diff --git a/src/main/java/appeng/core/Registration.java b/src/main/java/appeng/core/Registration.java index 6ff8dbe14..5d00679d1 100644 --- a/src/main/java/appeng/core/Registration.java +++ b/src/main/java/appeng/core/Registration.java @@ -30,7 +30,7 @@ import net.minecraft.client.gui.ScreenManager; import net.minecraft.client.particle.ParticleManager; import net.minecraft.client.render.model.BakedModel; import net.minecraft.inventory.container.ContainerType; -import net.minecraft.item.crafting.IRecipeSerializer; +import net.minecraft.recipe.RecipeSerializer; import net.minecraft.particles.ParticleType; import net.minecraft.util.Identifier; import net.minecraft.world.biome.Biome; @@ -309,8 +309,8 @@ final class Registration { return type; } - public void registerRecipeSerializers(RegistryEvent.Register> event) { - IForgeRegistry> r = event.getRegistry(); + public void registerRecipeSerializers(RegistryEvent.Register> event) { + IForgeRegistry> r = event.getRegistry(); GrinderRecipe.TYPE = new AERecipeType<>(GrinderRecipeSerializer.INSTANCE.getRegistryName()); InscriberRecipe.TYPE = new AERecipeType<>(InscriberRecipeSerializer.INSTANCE.getRegistryName()); diff --git a/src/main/java/appeng/core/features/registries/WirelessRegistry.java b/src/main/java/appeng/core/features/registries/WirelessRegistry.java index 1786a3e33..9d7a14aaa 100644 --- a/src/main/java/appeng/core/features/registries/WirelessRegistry.java +++ b/src/main/java/appeng/core/features/registries/WirelessRegistry.java @@ -24,6 +24,7 @@ import java.util.List; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.util.Hand; +import net.minecraft.util.Util; import net.minecraft.world.BlockView; import appeng.api.AEApi; @@ -77,28 +78,28 @@ public final class WirelessRegistry implements IWirelessTermRegistry { } if (!this.isWirelessTerminal(item)) { - player.sendMessage(PlayerMessages.DeviceNotWirelessTerminal.get()); + player.sendSystemMessage(PlayerMessages.DeviceNotWirelessTerminal.get(), Util.NIL_UUID); return; } final IWirelessTermHandler handler = this.getWirelessTerminalHandler(item); final String unparsedKey = handler.getEncryptionKey(item); if (unparsedKey.isEmpty()) { - player.sendMessage(PlayerMessages.DeviceNotLinked.get()); + player.sendSystemMessage(PlayerMessages.DeviceNotLinked.get(), Util.NIL_UUID); return; } final long parsedKey = Long.parseLong(unparsedKey); final ILocatable securityStation = AEApi.instance().registries().locatable().getLocatableBy(parsedKey); if (securityStation == null) { - player.sendMessage(PlayerMessages.StationCanNotBeLocated.get()); + player.sendSystemMessage(PlayerMessages.StationCanNotBeLocated.get(), Util.NIL_UUID); return; } if (handler.hasPower(player, 0.5, item)) { ContainerOpener.openContainer(WirelessTermContainer.TYPE, player, ContainerLocator.forHand(player, hand)); } else { - player.sendMessage(PlayerMessages.DeviceNotPowered.get()); + player.sendSystemMessage(PlayerMessages.DeviceNotPowered.get(), Util.NIL_UUID); } } } diff --git a/src/main/java/appeng/core/sync/packets/ItemTransitionEffectPacket.java b/src/main/java/appeng/core/sync/packets/ItemTransitionEffectPacket.java index 492486e71..c4e111d05 100644 --- a/src/main/java/appeng/core/sync/packets/ItemTransitionEffectPacket.java +++ b/src/main/java/appeng/core/sync/packets/ItemTransitionEffectPacket.java @@ -72,8 +72,6 @@ public class ItemTransitionEffectPacket extends BasePacket { @Override @Environment(EnvType.CLIENT) public void clientPacketData(final INetworkInfo network, final PlayerEntity player) { - final World world = AppEng.proxy.getWorld(); - EnergyParticleData data = new EnergyParticleData(true, this.d); for (int zz = 0; zz < 8; zz++) { if (AppEng.proxy.shouldAddParticles(Platform.getRandom())) { diff --git a/src/main/java/appeng/core/sync/packets/JEIRecipePacket.java b/src/main/java/appeng/core/sync/packets/JEIRecipePacket.java index 6cf4a2ae6..69338f359 100644 --- a/src/main/java/appeng/core/sync/packets/JEIRecipePacket.java +++ b/src/main/java/appeng/core/sync/packets/JEIRecipePacket.java @@ -18,7 +18,7 @@ package appeng.core.sync.packets; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import io.netty.buffer.Unpooled; import net.minecraft.entity.player.PlayerEntity; @@ -47,7 +47,7 @@ import appeng.helpers.IContainerCraftingPacket; import appeng.items.storage.ViewCellItem; import appeng.util.Platform; import appeng.util.helpers.ItemHandlerUtil; -import appeng.util.inv.AdaptorItemHandler; +import appeng.util.inv.AdaptorFixedInv; import appeng.util.inv.WrapperInvItemHandler; import appeng.util.item.AEItemStack; import appeng.util.prioritylist.IPartitionList; @@ -65,7 +65,7 @@ public class JEIRecipePacket extends BasePacket { if (list.size() > 0) { this.recipe[x] = new ItemStack[list.size()]; for (int y = 0; y < list.size(); y++) { - this.recipe[x][y] = ItemStack.read(list.getCompound(y)); + this.recipe[x][y] = ItemStack.fromTag(list.getCompound(y)); } } } @@ -108,16 +108,16 @@ public class JEIRecipePacket extends BasePacket { final IEnergyGrid energy = grid.getCache(IEnergyGrid.class); final ISecurityGrid security = grid.getCache(ISecurityGrid.class); final ICraftingGrid crafting = grid.getCache(ICraftingGrid.class); - final ItemTransferable craftMatrix = cct.getInventoryByName("crafting"); - final ItemTransferable playerInventory = cct.getInventoryByName("player"); + final FixedItemInv craftMatrix = cct.getInventoryByName("crafting"); + final FixedItemInv playerInventory = cct.getInventoryByName("player"); if (inv != null && this.recipe != null && security != null) { final IMEMonitor storage = inv .getInventory(AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class)); final IPartitionList filter = ViewCellItem.createFilter(cct.getViewCells()); - for (int x = 0; x < craftMatrix.getSlots(); x++) { - ItemStack currentItem = craftMatrix.getStackInSlot(x); + for (int x = 0; x < craftMatrix.getSlotCount(); x++) { + ItemStack currentItem = craftMatrix.getInvStack(x); // prepare slots if (!currentItem.isEmpty()) { @@ -168,7 +168,7 @@ public class JEIRecipePacket extends BasePacket { // try inventory if (currentItem.isEmpty()) { - AdaptorItemHandler ad = new AdaptorItemHandler(playerInventory); + AdaptorFixedInv ad = new AdaptorFixedInv(playerInventory); if (cct.useRealItems()) { currentItem = ad.removeItems(1, this.recipe[x][y], null); diff --git a/src/main/java/appeng/core/sync/packets/MockExplosionPacket.java b/src/main/java/appeng/core/sync/packets/MockExplosionPacket.java index 7467c9a11..0bb62cfec 100644 --- a/src/main/java/appeng/core/sync/packets/MockExplosionPacket.java +++ b/src/main/java/appeng/core/sync/packets/MockExplosionPacket.java @@ -62,7 +62,6 @@ public class MockExplosionPacket extends BasePacket { @Override @Environment(EnvType.CLIENT) public void clientPacketData(final INetworkInfo network, final PlayerEntity player) { - final World world = AppEng.proxy.getWorld(); - world.addParticle(ParticleTypes.EXPLOSION, this.x, this.y, this.z, 1.0D, 0.0D, 0.0D); + player.world.addParticle(ParticleTypes.EXPLOSION, this.x, this.y, this.z, 1.0D, 0.0D, 0.0D); } } diff --git a/src/main/java/appeng/core/sync/packets/PatternSlotPacket.java b/src/main/java/appeng/core/sync/packets/PatternSlotPacket.java index 6f75358b3..ba68e56d2 100644 --- a/src/main/java/appeng/core/sync/packets/PatternSlotPacket.java +++ b/src/main/java/appeng/core/sync/packets/PatternSlotPacket.java @@ -18,7 +18,7 @@ package appeng.core.sync.packets; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import io.netty.buffer.Unpooled; import net.minecraft.entity.player.PlayerEntity; @@ -63,7 +63,7 @@ public class PatternSlotPacket extends BasePacket { } // api - public PatternSlotPacket(final ItemTransferable pat, final IAEItemStack slotItem, final boolean shift) { + public PatternSlotPacket(final FixedItemInv pat, final IAEItemStack slotItem, final boolean shift) { this.slotItem = slotItem; this.shift = shift; @@ -77,7 +77,7 @@ public class PatternSlotPacket extends BasePacket { this.writeItem(slotItem, data); for (int x = 0; x < 9; x++) { this.pattern[x] = AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class) - .createStack(pat.getStackInSlot(x)); + .createStack(pat.getInvStack(x)); this.writeItem(this.pattern[x], data); } diff --git a/src/main/java/appeng/crafting/CraftingTreeProcess.java b/src/main/java/appeng/crafting/CraftingTreeProcess.java index 874ee3260..782a1cf43 100644 --- a/src/main/java/appeng/crafting/CraftingTreeProcess.java +++ b/src/main/java/appeng/crafting/CraftingTreeProcess.java @@ -22,6 +22,8 @@ import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import appeng.util.FakePlayer; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.CraftingInventory; import net.minecraft.item.ItemStack; import net.minecraft.world.World; @@ -68,15 +70,15 @@ public class CraftingTreeProcess { final CraftingInventory ic = new CraftingInventory(new ContainerNull(), 3, 3); final IAEItemStack[] is = details.getInputs(); - for (int x = 0; x < ic.getSizeInventory(); x++) { - ic.setInventorySlotContents(x, is[x] == null ? ItemStack.EMPTY : is[x].createItemStack()); + for (int x = 0; x < ic.size(); x++) { + ic.setStack(x, is[x] == null ? ItemStack.EMPTY : is[x].createItemStack()); } - BasicEventHooks.firePlayerCraftingEvent(Platform.getPlayer((ServerWorld) world), + BasicEventHooks.firePlayerCraftingEvent((PlayerEntity) FakePlayer.getOrCreate((ServerWorld) world), details.getOutput(ic, world), ic); - for (int x = 0; x < ic.getSizeInventory(); x++) { - final ItemStack g = ic.getStackInSlot(x); + for (int x = 0; x < ic.size(); x++) { + final ItemStack g = ic.getStack(x); if (!g.isEmpty() && g.getCount() > 1) { this.fullSimulation = true; } @@ -96,7 +98,7 @@ public class CraftingTreeProcess { this.limitQty = true; } - if (g.getItem().hasContainerItem(g)) { + if (g.getItem().hasRecipeRemainder(g)) { this.limitQty = this.containerItems = true; } } @@ -170,15 +172,15 @@ public class CraftingTreeProcess { final IAEItemStack item = entry.getKey().getStack(entry.getValue()); final IAEItemStack stack = entry.getKey().request(inv, item.getStackSize(), src); - ic.setInventorySlotContents(entry.getKey().getSlot(), stack.createItemStack()); + ic.setStack(entry.getKey().getSlot(), stack.createItemStack()); } - BasicEventHooks.firePlayerCraftingEvent(Platform.getPlayer((ServerWorld) this.world), + BasicEventHooks.firePlayerCraftingEvent((PlayerEntity) FakePlayer.getOrCreate((ServerWorld) this.world), this.details.getOutput(ic, this.world), ic); - for (int x = 0; x < ic.getSizeInventory(); x++) { - ItemStack is = ic.getStackInSlot(x); - is = Platform.getContainerItem(is); + for (int x = 0; x < ic.size(); x++) { + ItemStack is = ic.getStack(x); + is = Platform.getRecipeRemainder(is); final IAEItemStack o = AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class) .createStack(is); @@ -194,7 +196,7 @@ public class CraftingTreeProcess { final IAEItemStack stack = entry.getKey().request(inv, item.getStackSize() * i, src); if (this.containerItems) { - final ItemStack is = Platform.getContainerItem(stack.createItemStack()); + final ItemStack is = Platform.getRecipeRemainder(stack.createItemStack()); final IAEItemStack o = AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class) .createStack(is); if (o != null) { diff --git a/src/main/java/appeng/debug/CubeGeneratorBlockEntity.java b/src/main/java/appeng/debug/CubeGeneratorBlockEntity.java index f5678c404..33d26646e 100644 --- a/src/main/java/appeng/debug/CubeGeneratorBlockEntity.java +++ b/src/main/java/appeng/debug/CubeGeneratorBlockEntity.java @@ -51,7 +51,7 @@ public class CubeGeneratorBlockEntity extends AEBaseBlockEntity implements ITick if (this.countdown % 20 == 0) { for (final PlayerEntity e : AppEng.proxy.getPlayers()) { - e.sendMessage(new LiteralText("Spawning in... " + (this.countdown / 20))); + e.sendSystemMessage(new LiteralText("Spawning in... " + (this.countdown / 20)), Util.NIL_UUID); } } @@ -102,7 +102,7 @@ public class CubeGeneratorBlockEntity extends AEBaseBlockEntity implements ITick this.size = 64; } - player.sendMessage(new LiteralText("Size: " + this.size)); + player.sendSystemMessage(new LiteralText("Size: " + this.size), Util.NIL_UUID); } else { this.countdown = 20 * 10; this.is = hand; diff --git a/src/main/java/appeng/debug/DebugPartPlacerItem.java b/src/main/java/appeng/debug/DebugPartPlacerItem.java index e77d35064..f569681ba 100644 --- a/src/main/java/appeng/debug/DebugPartPlacerItem.java +++ b/src/main/java/appeng/debug/DebugPartPlacerItem.java @@ -49,19 +49,19 @@ public class DebugPartPlacerItem extends AEBaseItem { } if (!player.abilities.isCreativeMode) { - player.sendMessage(new LiteralText("Only usable in creative mode")); + player.sendSystemMessage(new LiteralText("Only usable in creative mode"), Util.NIL_UUID); return ActionResult.FAIL; } BlockEntity te = world.getBlockEntity(pos); if (!(te instanceof IPartHost)) { - player.sendMessage(new LiteralText("Right-click something that will accept parts")); + player.sendSystemMessage(new LiteralText("Right-click something that will accept parts"), Util.NIL_UUID); return ActionResult.FAIL; } IPartHost center = (IPartHost) te; IPart cable = center.getPart(AEPartLocation.INTERNAL); if (cable == null) { - player.sendMessage(new LiteralText("Clicked part host must have an INSIDE part")); + player.sendSystemMessage(new LiteralText("Clicked part host must have an INSIDE part"), Util.NIL_UUID); return ActionResult.FAIL; } diff --git a/src/main/java/appeng/debug/ItemGenBlockEntity.java b/src/main/java/appeng/debug/ItemGenBlockEntity.java index ff52c4529..aca45f447 100644 --- a/src/main/java/appeng/debug/ItemGenBlockEntity.java +++ b/src/main/java/appeng/debug/ItemGenBlockEntity.java @@ -24,7 +24,7 @@ import java.util.Queue; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.block.entity.BlockEntityType; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -42,7 +42,7 @@ public class ItemGenBlockEntity extends AEBaseBlockEntity { private static final Queue POSSIBLE_ITEMS = new ArrayDeque<>(); - private final ItemTransferable handler = new QueuedItemHandler(); + private final FixedItemInv handler = new QueuedItemHandler(); public ItemGenBlockEntity(BlockEntityType tileEntityTypeIn) { super(tileEntityTypeIn); @@ -81,7 +81,7 @@ public class ItemGenBlockEntity extends AEBaseBlockEntity { return super.getCapability(capability, facing); } - class QueuedItemHandler implements ItemTransferable { + class QueuedItemHandler implements FixedItemInv { @Override @Nonnull diff --git a/src/main/java/appeng/debug/MeteoritePlacerItem.java b/src/main/java/appeng/debug/MeteoritePlacerItem.java index e3c1a5aa2..67c3c5f4f 100644 --- a/src/main/java/appeng/debug/MeteoritePlacerItem.java +++ b/src/main/java/appeng/debug/MeteoritePlacerItem.java @@ -69,7 +69,7 @@ public class MeteoritePlacerItem extends AEBaseItem { CraterType craterType = CraterType.values()[tag.getByte(MODE_TAG)]; - player.sendMessage(new LiteralText(craterType.name())); + player.sendSystemMessage(new LiteralText(craterType.name()), Util.NIL_UUID); return TypedActionResult.resultSuccess(itemStack); } diff --git a/src/main/java/appeng/entity/AEBaseItemEntity.java b/src/main/java/appeng/entity/AEBaseItemEntity.java index ede4429bd..cdd47c629 100644 --- a/src/main/java/appeng/entity/AEBaseItemEntity.java +++ b/src/main/java/appeng/entity/AEBaseItemEntity.java @@ -22,7 +22,7 @@ import java.util.List; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; -import net.minecraft.entity.item.ItemEntity; +import net.minecraft.entity.ItemEntity; import net.minecraft.item.ItemStack; import net.minecraft.network.IPacket; import net.minecraft.util.math.Box; @@ -39,14 +39,14 @@ public abstract class AEBaseItemEntity extends ItemEntity { final double y, final double z, final ItemStack stack) { this(entityType, world); this.setPosition(x, y, z); - this.rotationYaw = this.rand.nextFloat() * 360.0F; + this.yaw = this.rand.nextFloat() * 360.0F; this.setMotion(this.rand.nextDouble() * 0.2D - 0.1D, 0.2D, this.rand.nextDouble() * 0.2D - 0.1D); this.setItem(stack); this.lifespan = stack.getEntityLifespan(world); } protected List getCheckedEntitiesWithinAABBExcludingEntity(final Box region) { - return this.world.getEntitiesWithinAABBExcludingEntity(this, region); + return this.world.getEntities(this, region); } @Override diff --git a/src/main/java/appeng/entity/ChargedQuartzEntity.java b/src/main/java/appeng/entity/ChargedQuartzEntity.java index 95ebe6554..c084c4e83 100644 --- a/src/main/java/appeng/entity/ChargedQuartzEntity.java +++ b/src/main/java/appeng/entity/ChargedQuartzEntity.java @@ -24,7 +24,7 @@ import net.minecraft.block.BlockState; import net.minecraft.block.Material; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; -import net.minecraft.entity.item.ItemEntity; +import net.minecraft.entity.ItemEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.util.math.Box; @@ -64,7 +64,7 @@ public final class ChargedQuartzEntity extends AEBaseItemEntity { } if (world.isClient && this.delay > 30 && AEConfig.instance().isEnableEffects()) { - AppEng.proxy.spawnEffect(EffectType.Lightning, this.world, this.getPosX(), this.getPosY(), this.getPosZ(), + AppEng.proxy.spawnEffect(EffectType.Lightning, this.world, this.getX(), this.getY(), this.getZ(), null); this.delay = 0; } @@ -95,8 +95,8 @@ public final class ChargedQuartzEntity extends AEBaseItemEntity { final IMaterials materials = AEApi.instance().definitions().materials(); if (materials.certusQuartzCrystalCharged().isSameAs(item)) { - final Box region = new Box(this.getPosX() - 1, this.getPosY() - 1, this.getPosZ() - 1, - this.getPosX() + 1, this.getPosY() + 1, this.getPosZ() + 1); + final Box region = new Box(this.getX() - 1, this.getY() - 1, this.getZ() - 1, + this.getX() + 1, this.getY() + 1, this.getZ() + 1); final List l = this.getCheckedEntitiesWithinAABBExcludingEntity(region); ItemEntity redstone = null; @@ -135,10 +135,10 @@ public final class ChargedQuartzEntity extends AEBaseItemEntity { } materials.fluixCrystal().maybeStack(2).ifPresent(is -> { - final ItemEntity entity = new ItemEntity(this.world, this.getPosX(), this.getPosY(), this.getPosZ(), + final ItemEntity entity = new ItemEntity(this.world, this.getX(), this.getY(), this.getZ(), is); - this.world.addEntity(entity); + this.world.spawnEntity(entity); }); return true; diff --git a/src/main/java/appeng/entity/GrowingCrystalEntity.java b/src/main/java/appeng/entity/GrowingCrystalEntity.java index cdbb7b255..9bcfd28cf 100644 --- a/src/main/java/appeng/entity/GrowingCrystalEntity.java +++ b/src/main/java/appeng/entity/GrowingCrystalEntity.java @@ -117,8 +117,8 @@ public final class GrowingCrystalEntity extends AEBaseItemEntity { if (this.progress_1000 >= len) { this.progress_1000 = 0; - AppEng.proxy.spawnEffect(EffectType.Vibrant, this.world, this.getPosX(), this.getPosY() + 0.2, - this.getPosZ(), null); + AppEng.proxy.spawnEffect(EffectType.Vibrant, this.world, this.getX(), this.getY() + 0.2, + this.getZ(), null); } } else { if (this.progress_1000 > 1000) { diff --git a/src/main/java/appeng/entity/SingularityEntity.java b/src/main/java/appeng/entity/SingularityEntity.java index 78f088fa5..5e38400bb 100644 --- a/src/main/java/appeng/entity/SingularityEntity.java +++ b/src/main/java/appeng/entity/SingularityEntity.java @@ -23,7 +23,7 @@ import java.util.List; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; -import net.minecraft.entity.item.ItemEntity; +import net.minecraft.entity.ItemEntity; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundTag; import net.minecraft.util.DamageSource; @@ -74,8 +74,8 @@ public final class SingularityEntity extends AEBaseItemEntity { final IMaterials materials = AEApi.instance().definitions().materials(); if (materials.singularity().isSameAs(item)) { - final Box region = new Box(this.getPosX() - 4, this.getPosY() - 4, this.getPosZ() - 4, - this.getPosX() + 4, this.getPosY() + 4, this.getPosZ() + 4); + final Box region = new Box(this.getX() - 4, this.getY() - 4, this.getZ() - 4, + this.getX() + 4, this.getY() + 4, this.getZ() + 4); final List l = this.getCheckedEntitiesWithinAABBExcludingEntity(region); for (final Entity e : l) { @@ -86,7 +86,7 @@ public final class SingularityEntity extends AEBaseItemEntity { if (matches) { while (item.getCount() > 0 && other.getCount() > 0) { - other.grow(-1); + other.increment(-1); ; if (other.getCount() == 0) { e.remove(); @@ -96,11 +96,11 @@ public final class SingularityEntity extends AEBaseItemEntity { final CompoundTag cmp = singularityStack.getOrCreateTag(); cmp.putLong("freq", (new Date()).getTime() * 100 + (randTickSeed) % 100); randTickSeed++; - item.grow(-1); + item.increment(-1); - final SingularityEntity entity = new SingularityEntity(this.world, this.getPosX(), - this.getPosY(), this.getPosZ(), singularityStack); - this.world.addEntity(entity); + final SingularityEntity entity = new SingularityEntity(this.world, this.getX(), + this.getY(), this.getZ(), singularityStack); + this.world.spawnEntity(entity); }); } diff --git a/src/main/java/appeng/entity/TinyTNTPrimedEntity.java b/src/main/java/appeng/entity/TinyTNTPrimedEntity.java index 68d913b97..6bb91ecc2 100644 --- a/src/main/java/appeng/entity/TinyTNTPrimedEntity.java +++ b/src/main/java/appeng/entity/TinyTNTPrimedEntity.java @@ -27,7 +27,7 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.MoverType; -import net.minecraft.entity.item.ItemEntity; +import net.minecraft.entity.ItemEntity; import net.minecraft.entity.item.TNTEntity; import net.minecraft.network.PacketByteBuf; import net.minecraft.particles.ParticleTypes; @@ -69,9 +69,9 @@ public final class TinyTNTPrimedEntity extends TNTEntity implements IEntityAddit public void tick() { this.handleWaterMovement(); - this.prevPosX = this.getPosX(); - this.prevPosY = this.getPosY(); - this.prevPosZ = this.getPosZ(); + this.prevX = this.getX(); + this.prevY = this.getY(); + this.prevZ = this.getZ(); this.setMotion(this.getMotion().subtract(0, 0.03999999910593033D, 0)); this.move(MoverType.SELF, this.getMotion()); this.setMotion(this.getMotion().mul(0.9800000190734863D, 0.9800000190734863D, 0.9800000190734863D)); @@ -83,15 +83,15 @@ public final class TinyTNTPrimedEntity extends TNTEntity implements IEntityAddit if (this.isInWater() && Platform.isServer()) // put out the fuse. { AEApi.instance().definitions().blocks().tinyTNT().maybeStack(1).ifPresent(tntStack -> { - final ItemEntity item = new ItemEntity(this.world, this.getPosX(), this.getPosY(), this.getPosZ(), + final ItemEntity item = new ItemEntity(this.world, this.getX(), this.getY(), this.getZ(), tntStack); item.setMotion(this.getMotion()); - item.prevPosX = this.prevPosX; - item.prevPosY = this.prevPosY; - item.prevPosZ = this.prevPosZ; + item.prevX = this.prevX; + item.prevY = this.prevY; + item.prevZ = this.prevZ; - this.world.addEntity(item); + this.world.spawnEntity(item); this.remove(); }); } @@ -103,7 +103,7 @@ public final class TinyTNTPrimedEntity extends TNTEntity implements IEntityAddit this.explode(); } } else { - this.world.addParticle(ParticleTypes.SMOKE, this.getPosX(), this.getPosY(), this.getPosZ(), 0.0D, 0.0D, + this.world.addParticle(ParticleTypes.SMOKE, this.getX(), this.getY(), this.getZ(), 0.0D, 0.0D, 0.0D); } this.setFuse(this.getFuse() - 1); @@ -112,7 +112,7 @@ public final class TinyTNTPrimedEntity extends TNTEntity implements IEntityAddit // override :P @Override protected void explode() { - this.world.playSound(null, this.getPosX(), this.getPosY(), this.getPosZ(), SoundEvents.ENTITY_GENERIC_EXPLODE, + this.world.playSound(null, this.getX(), this.getY(), this.getZ(), SoundEvents.ENTITY_GENERIC_EXPLODE, SoundCategory.BLOCKS, 4.0F, (1.0F + (this.world.rand.nextFloat() - this.world.rand.nextFloat()) * 0.2F) * 32.9F); @@ -120,11 +120,11 @@ public final class TinyTNTPrimedEntity extends TNTEntity implements IEntityAddit return; } - final Explosion ex = new Explosion(this.world, this, this.getPosX(), this.getPosY(), this.getPosZ(), 0.2f, + final Explosion ex = new Explosion(this.world, this, this.getX(), this.getY(), this.getZ(), 0.2f, false, Mode.BREAK); - final Box area = new Box(this.getPosX() - 1.5, this.getPosY() - 1.5f, this.getPosZ() - 1.5, - this.getPosX() + 1.5, this.getPosY() + 1.5, this.getPosZ() + 1.5); - final List list = this.world.getEntitiesWithinAABBExcludingEntity(this, area); + final Box area = new Box(this.getX() - 1.5, this.getY() - 1.5f, this.getZ() - 1.5, + this.getX() + 1.5, this.getY() + 1.5, this.getZ() + 1.5); + final List list = this.world.getEntities(this, area); net.minecraftforge.event.ForgeEventFactory.onExplosionDetonate(this.world, ex, list, 0.2f * 2d); @@ -133,11 +133,11 @@ public final class TinyTNTPrimedEntity extends TNTEntity implements IEntityAddit } if (AEConfig.instance().isFeatureEnabled(AEFeature.TINY_TNT_BLOCK_DAMAGE)) { - this.setPosition(this.getPosX(), this.getPosY() - 0.25, this.getPosZ()); + this.setPosition(this.getX(), this.getY() - 0.25, this.getPosZ()); - for (int x = (int) (this.getPosX() - 2); x <= this.getPosX() + 2; x++) { - for (int y = (int) (this.getPosY() - 2); y <= this.getPosY() + 2; y++) { - for (int z = (int) (this.getPosZ() - 2); z <= this.getPosZ() + 2; z++) { + for (int x = (int) (this.getX() - 2); x <= this.getX() + 2; x++) { + for (int y = (int) (this.getY() - 2); y <= this.getY() + 2; y++) { + for (int z = (int) (this.getZ() - 2); z <= this.getZ() + 2; z++) { final BlockPos point = new BlockPos(x, y, z); final BlockState state = this.world.getBlockState(point); final Block block = state.getBlock(); @@ -166,8 +166,8 @@ public final class TinyTNTPrimedEntity extends TNTEntity implements IEntityAddit } } - AppEng.proxy.sendToAllNearExcept(null, this.getPosX(), this.getPosY(), this.getPosZ(), 64, this.world, - new MockExplosionPacket(this.getPosX(), this.getPosY(), this.getPosZ())); + AppEng.proxy.sendToAllNearExcept(null, this.getX(), this.getY(), this.getZ(), 64, this.world, + new MockExplosionPacket(this.getX(), this.getY(), this.getPosZ())); } @Override diff --git a/src/main/java/appeng/facade/FacadeContainer.java b/src/main/java/appeng/facade/FacadeContainer.java index edf8581ff..e1e00b395 100644 --- a/src/main/java/appeng/facade/FacadeContainer.java +++ b/src/main/java/appeng/facade/FacadeContainer.java @@ -91,7 +91,7 @@ public class FacadeContainer implements IFacadeContainer { for (int x = 0; x < this.facades; x++) { if (this.storage.getFacade(x) != null) { final CompoundTag data = new CompoundTag(); - this.storage.getFacade(x).getItemStack().write(data); + this.storage.getFacade(x).getItemStack().toTag(data); c.put("facade:" + x, data); } } @@ -135,7 +135,7 @@ public class FacadeContainer implements IFacadeContainer { final CompoundTag t = c.getCompound("facade:" + x); if (t != null) { - final ItemStack is = ItemStack.read(t); + final ItemStack is = ItemStack.fromTag(t); if (!is.isEmpty()) { final net.minecraft.item.Item i = is.getItem(); if (i instanceof IFacadeItem) { diff --git a/src/main/java/appeng/fluids/container/FluidFormationPlaneContainer.java b/src/main/java/appeng/fluids/container/FluidFormationPlaneContainer.java index 370c3daee..c53ae0d09 100644 --- a/src/main/java/appeng/fluids/container/FluidFormationPlaneContainer.java +++ b/src/main/java/appeng/fluids/container/FluidFormationPlaneContainer.java @@ -1,7 +1,7 @@ package appeng.fluids.container; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.container.ContainerType; @@ -50,7 +50,7 @@ public class FluidFormationPlaneContainer extends FluidConfigurableContainer { @Override protected void setupConfig() { - final ItemTransferable upgrades = this.getUpgradeable().getInventoryByName("upgrades"); + final FixedItemInv upgrades = this.getUpgradeable().getInventoryByName("upgrades"); this.addSlot((new RestrictedInputSlot(RestrictedInputSlot.PlacableItemType.UPGRADES, upgrades, 0, 187, 8, this.getPlayerInventory())).setNotDraggable()); this.addSlot((new RestrictedInputSlot(RestrictedInputSlot.PlacableItemType.UPGRADES, upgrades, 1, 187, 8 + 18, diff --git a/src/main/java/appeng/fluids/container/FluidStorageBusContainer.java b/src/main/java/appeng/fluids/container/FluidStorageBusContainer.java index ce9849cea..b7f6ff530 100644 --- a/src/main/java/appeng/fluids/container/FluidStorageBusContainer.java +++ b/src/main/java/appeng/fluids/container/FluidStorageBusContainer.java @@ -24,7 +24,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.container.ContainerType; import net.minecraft.network.PacketByteBuf; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import appeng.api.AEApi; import appeng.api.config.AccessRestriction; @@ -86,7 +86,7 @@ public class FluidStorageBusContainer extends FluidConfigurableContainer { @Override protected void setupConfig() { - final ItemTransferable upgrades = this.getUpgradeable().getInventoryByName("upgrades"); + final FixedItemInv upgrades = this.getUpgradeable().getInventoryByName("upgrades"); this.addSlot((new RestrictedInputSlot(RestrictedInputSlot.PlacableItemType.UPGRADES, upgrades, 0, 187, 8, this.getPlayerInventory())).setNotDraggable()); this.addSlot((new RestrictedInputSlot(RestrictedInputSlot.PlacableItemType.UPGRADES, upgrades, 1, 187, 8 + 18, diff --git a/src/main/java/appeng/fluids/helper/DualityFluidInterface.java b/src/main/java/appeng/fluids/helper/DualityFluidInterface.java index b7fc21e95..e246fddb8 100644 --- a/src/main/java/appeng/fluids/helper/DualityFluidInterface.java +++ b/src/main/java/appeng/fluids/helper/DualityFluidInterface.java @@ -20,7 +20,7 @@ package appeng.fluids.helper; import java.util.Optional; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.nbt.CompoundTag; import net.minecraft.block.entity.BlockEntity; import net.minecraft.util.math.Direction; @@ -491,7 +491,7 @@ public class DualityFluidInterface } @Override - public ItemTransferable getInventoryByName(String name) { + public FixedItemInv getInventoryByName(String name) { return null; } diff --git a/src/main/java/appeng/fluids/items/BasicFluidStorageCell.java b/src/main/java/appeng/fluids/items/BasicFluidStorageCell.java index 561a9255a..16759c00a 100644 --- a/src/main/java/appeng/fluids/items/BasicFluidStorageCell.java +++ b/src/main/java/appeng/fluids/items/BasicFluidStorageCell.java @@ -20,7 +20,7 @@ package appeng.fluids.items; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import appeng.api.AEApi; import appeng.api.storage.IStorageChannel; @@ -88,7 +88,7 @@ public final class BasicFluidStorageCell extends AbstractStorageCell r) { diff --git a/src/main/java/appeng/hooks/MatterCannonDispenseItemBehavior.java b/src/main/java/appeng/hooks/MatterCannonDispenseItemBehavior.java index 9b7c3d259..f4b4221b4 100644 --- a/src/main/java/appeng/hooks/MatterCannonDispenseItemBehavior.java +++ b/src/main/java/appeng/hooks/MatterCannonDispenseItemBehavior.java @@ -18,6 +18,7 @@ package appeng.hooks; +import appeng.util.FakePlayer; import net.minecraft.block.DispenserBlock; import net.minecraft.dispenser.DefaultDispenseItemBehavior; import net.minecraft.dispenser.IBlockSource; @@ -51,10 +52,10 @@ public final class MatterCannonDispenseItemBehavior extends DefaultDispenseItemB final World w = dispenser.getWorld(); if (w instanceof ServerWorld) { - final PlayerEntity p = Platform.getPlayer((ServerWorld) w); + final PlayerEntity p = FakePlayer.getOrCreate((ServerWorld) w); Platform.configurePlayer(p, dir, dispenser.getBlockTileEntity()); - p.setPosition(p.getPosX() + dir.xOffset, p.getPosY() + dir.yOffset, p.getPosZ() + dir.zOffset); + p.setPosition(p.getX() + dir.xOffset, p.getY() + dir.yOffset, p.getZ() + dir.zOffset); dispensedItem = tm.onItemRightClick(w, p, null).getResult(); } diff --git a/src/main/java/appeng/hooks/TinyTNTDispenseItemBehavior.java b/src/main/java/appeng/hooks/TinyTNTDispenseItemBehavior.java index ab29db9fd..d936366db 100644 --- a/src/main/java/appeng/hooks/TinyTNTDispenseItemBehavior.java +++ b/src/main/java/appeng/hooks/TinyTNTDispenseItemBehavior.java @@ -38,7 +38,7 @@ public final class TinyTNTDispenseItemBehavior extends DefaultDispenseItemBehavi final int k = dispenser.getBlockPos().getZ() + Direction.getOffsetZ(); final TinyTNTPrimedEntity primedTinyTNTEntity = new TinyTNTPrimedEntity(world, i + 0.5F, j + 0.5F, k + 0.5F, null); - world.addEntity(primedTinyTNTEntity); + world.spawnEntity(primedTinyTNTEntity); dispensedItem.setCount(dispensedItem.getCount() - 1); return dispensedItem; } diff --git a/src/main/java/appeng/integration/modules/jei/FacadeRegistryPlugin.java b/src/main/java/appeng/integration/modules/jei/FacadeRegistryPlugin.java index 247831119..30b731404 100644 --- a/src/main/java/appeng/integration/modules/jei/FacadeRegistryPlugin.java +++ b/src/main/java/appeng/integration/modules/jei/FacadeRegistryPlugin.java @@ -22,7 +22,7 @@ import java.util.Collections; import java.util.List; import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.Ingredient; +import net.minecraft.recipe.Ingredient; import net.minecraft.item.crafting.ShapedRecipe; import net.minecraft.util.Identifier; import net.minecraft.util.NonNullList; diff --git a/src/main/java/appeng/integration/modules/jei/RecipeTransferHandler.java b/src/main/java/appeng/integration/modules/jei/RecipeTransferHandler.java index 417528a86..eed890a55 100644 --- a/src/main/java/appeng/integration/modules/jei/RecipeTransferHandler.java +++ b/src/main/java/appeng/integration/modules/jei/RecipeTransferHandler.java @@ -98,7 +98,7 @@ class RecipeTransferHandler implements IRecipeTransferHandl for (final ItemStack is : list) { final CompoundTag tag = new CompoundTag(); - is.write(tag); + is.toTag(tag); tags.add(tag); } diff --git a/src/main/java/appeng/integration/modules/theoneprobe/tile/ChargerInfoProvider.java b/src/main/java/appeng/integration/modules/theoneprobe/tile/ChargerInfoProvider.java index 374382ecf..7ac091185 100644 --- a/src/main/java/appeng/integration/modules/theoneprobe/tile/ChargerInfoProvider.java +++ b/src/main/java/appeng/integration/modules/theoneprobe/tile/ChargerInfoProvider.java @@ -22,7 +22,7 @@ import net.minecraft.block.BlockState; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.world.World; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import mcjty.theoneprobe.api.ElementAlignment; import mcjty.theoneprobe.api.IProbeHitData; @@ -39,8 +39,8 @@ public class ChargerInfoProvider implements ITileProbInfoProvider { World world, BlockState blockState, IProbeHitData data) { if (tile instanceof ChargerBlockEntity) { final ChargerBlockEntity charger = (ChargerBlockEntity) tile; - final ItemTransferable chargerInventory = charger.getInternalInventory(); - final ItemStack chargingItem = chargerInventory.getStackInSlot(0); + final FixedItemInv chargerInventory = charger.getInternalInventory(); + final ItemStack chargingItem = chargerInventory.getInvStack(0); if (!chargingItem.isEmpty()) { final String currentInventory = chargingItem.getName().getString(); diff --git a/src/main/java/appeng/items/contents/NetworkToolViewer.java b/src/main/java/appeng/items/contents/NetworkToolViewer.java index d1c3d55f2..f95a03451 100644 --- a/src/main/java/appeng/items/contents/NetworkToolViewer.java +++ b/src/main/java/appeng/items/contents/NetworkToolViewer.java @@ -18,7 +18,7 @@ package appeng.items.contents; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.item.ItemStack; import appeng.api.implementations.guiobjects.INetworkTool; @@ -52,7 +52,7 @@ public class NetworkToolViewer implements INetworkTool, IAEAppEngInventory { } @Override - public void onChangeInventory(ItemTransferable inv, int slot, InvOperation mc, ItemStack removedStack, + public void onChangeInventory(FixedItemInv inv, int slot, InvOperation mc, ItemStack removedStack, ItemStack newStack) { } @@ -68,23 +68,23 @@ public class NetworkToolViewer implements INetworkTool, IAEAppEngInventory { private static class NetworkToolInventoryFilter implements IAEItemFilter { @Override - public boolean allowExtract(ItemTransferable inv, int slot, int amount) { + public boolean allowExtract(FixedItemInv inv, int slot, int amount) { return true; } @Override - public boolean allowInsert(ItemTransferable inv, int slot, ItemStack stack) { + public boolean allowInsert(FixedItemInv inv, int slot, ItemStack stack) { return stack.getItem() instanceof IUpgradeModule && ((IUpgradeModule) stack.getItem()).getType(stack) != null; } } - public ItemTransferable getInternalInventory() { + public FixedItemInv getInternalInventory() { return this.inv; } @Override - public ItemTransferable getInventory() { + public FixedItemInv getInventory() { return this.inv; } } diff --git a/src/main/java/appeng/items/materials/MaterialItem.java b/src/main/java/appeng/items/materials/MaterialItem.java index 6035224c8..1da16231c 100644 --- a/src/main/java/appeng/items/materials/MaterialItem.java +++ b/src/main/java/appeng/items/materials/MaterialItem.java @@ -27,7 +27,7 @@ import java.util.regex.Pattern; import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; -import net.minecraft.entity.item.ItemEntity; +import net.minecraft.entity.ItemEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemUsageContext; @@ -41,7 +41,7 @@ import net.minecraft.text.TranslatableText; import net.minecraft.world.World; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import appeng.api.config.Upgrades; import appeng.api.implementations.IUpgradeableHost; @@ -53,7 +53,7 @@ import appeng.api.parts.IPartHost; import appeng.api.parts.SelectedPart; import appeng.items.AEBaseItem; import appeng.util.InventoryAdaptor; -import appeng.util.inv.AdaptorItemHandler; +import appeng.util.inv.AdaptorFixedInv; public final class MaterialItem extends AEBaseItem implements IStorageComponent, IUpgradeModule { @@ -143,7 +143,7 @@ public final class MaterialItem extends AEBaseItem implements IStorageComponent, Hand hand = context.getHand(); if (player.isInSneakingPose()) { final BlockEntity te = context.getWorld().getBlockEntity(context.getBlockPos()); - ItemTransferable upgrades = null; + FixedItemInv upgrades = null; if (te instanceof IPartHost) { final SelectedPart sp = ((IPartHost) te).selectPart(context.getHitVec()); @@ -164,7 +164,7 @@ public final class MaterialItem extends AEBaseItem implements IStorageComponent, return ActionResult.PASS; } - final InventoryAdaptor ad = new AdaptorItemHandler(upgrades); + final InventoryAdaptor ad = new AdaptorFixedInv(upgrades); player.setHeldItem(hand, ad.addItems(player.getStackInHand(hand))); return ActionResult.SUCCESS; } @@ -186,7 +186,7 @@ public final class MaterialItem extends AEBaseItem implements IStorageComponent, try { eqi = droppedEntity.getConstructor(World.class, double.class, double.class, double.class, ItemStack.class) - .newInstance(w, location.getPosX(), location.getPosY(), location.getPosZ(), itemstack); + .newInstance(w, location.getX(), location.getY(), location.getZ(), itemstack); } catch (final Throwable t) { throw new IllegalStateException(t); } diff --git a/src/main/java/appeng/items/misc/CrystalSeedItem.java b/src/main/java/appeng/items/misc/CrystalSeedItem.java index 185671b35..159f7125a 100644 --- a/src/main/java/appeng/items/misc/CrystalSeedItem.java +++ b/src/main/java/appeng/items/misc/CrystalSeedItem.java @@ -134,8 +134,8 @@ public class CrystalSeedItem extends AEBaseItem implements IGrowableCrystal { @Override public Entity createEntity(final World world, final Entity location, final ItemStack itemstack) { - final GrowingCrystalEntity egc = new GrowingCrystalEntity(world, location.getPosX(), location.getPosY(), - location.getPosZ(), itemstack); + final GrowingCrystalEntity egc = new GrowingCrystalEntity(world, location.getX(), location.getY(), + location.getZ(), itemstack); egc.setMotion(location.getMotion()); diff --git a/src/main/java/appeng/items/misc/EncodedPatternItem.java b/src/main/java/appeng/items/misc/EncodedPatternItem.java index b5799b2d6..013abafaf 100644 --- a/src/main/java/appeng/items/misc/EncodedPatternItem.java +++ b/src/main/java/appeng/items/misc/EncodedPatternItem.java @@ -32,7 +32,7 @@ import net.minecraft.util.TypedActionResult; import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.text.Text; -import net.minecraft.util.text.TextFormatting; +import net.minecraft.util.Formatting; import net.minecraft.world.World; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; @@ -79,9 +79,9 @@ public class EncodedPatternItem extends AEBaseItem implements ICraftingPatternIt ItemStack is = AEApi.instance().definitions().materials().blankPattern().maybeStack(stack.getCount()) .orElse(ItemStack.EMPTY); if (!is.isEmpty()) { - for (int s = 0; s < player.inventory.getSizeInventory(); s++) { - if (inv.getStackInSlot(s) == stack) { - inv.setInventorySlotContents(s, is); + for (int s = 0; s < player.inventory.size(); s++) { + if (inv.getStack(s) == stack) { + inv.setStack(s, is); return true; } } @@ -102,7 +102,7 @@ public class EncodedPatternItem extends AEBaseItem implements ICraftingPatternIt return; } - stack.setDisplayName(GuiText.InvalidPattern.textComponent().applyTextStyle(TextFormatting.RED)); + stack.setDisplayName(GuiText.InvalidPattern.textComponent().formatted(Formatting.RED)); InvalidPatternHelper invalid = new InvalidPatternHelper(stack); @@ -190,18 +190,13 @@ public class EncodedPatternItem extends AEBaseItem implements ICraftingPatternIt } } - public ItemStack getOutput(final ItemStack item) { + public ItemStack getOutput(World w, final ItemStack item) { ItemStack out = SIMPLE_CACHE.get(item); if (out != null) { return out; } - final World w = AppEng.proxy.getWorld(); - if (w == null) { - return ItemStack.EMPTY; - } - final ICraftingPatternDetails details = this.getPatternForItem(item, w); out = details != null ? details.getOutputs()[0].createItemStack() : ItemStack.EMPTY; diff --git a/src/main/java/appeng/items/storage/AbstractStorageCell.java b/src/main/java/appeng/items/storage/AbstractStorageCell.java index fc56cde42..03eb0ac11 100644 --- a/src/main/java/appeng/items/storage/AbstractStorageCell.java +++ b/src/main/java/appeng/items/storage/AbstractStorageCell.java @@ -21,7 +21,7 @@ package appeng.items.storage; import java.util.List; import java.util.Set; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.fabricmc.api.EnvType; import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.player.PlayerEntity; @@ -115,12 +115,12 @@ public abstract class AbstractStorageCell> extends AEBaseI } @Override - public ItemTransferable getUpgradesInventory(final ItemStack is) { + public FixedItemInv getUpgradesInventory(final ItemStack is) { return new CellUpgrades(is, 2); } @Override - public ItemTransferable getConfigInventory(final ItemStack is) { + public FixedItemInv getConfigInventory(final ItemStack is) { return new CellConfig(is); } @@ -158,7 +158,7 @@ public abstract class AbstractStorageCell> extends AEBaseI final InventoryAdaptor ia = InventoryAdaptor.getAdaptor(player); final IItemList list = inv.getAvailableItems(this.getChannel().createList()); if (list.isEmpty() && ia != null) { - playerInventory.setInventorySlotContents(playerInventory.currentItem, ItemStack.EMPTY); + playerInventory.setStack(playerInventory.currentItem, ItemStack.EMPTY); // drop core final ItemStack extraB = ia.addItems(this.component.stack(1)); @@ -167,9 +167,9 @@ public abstract class AbstractStorageCell> extends AEBaseI } // drop upgrades - final ItemTransferable upgradesInventory = this.getUpgradesInventory(stack); - for (int upgradeIndex = 0; upgradeIndex < upgradesInventory.getSlots(); upgradeIndex++) { - final ItemStack upgradeStack = upgradesInventory.getStackInSlot(upgradeIndex); + final FixedItemInv upgradesInventory = this.getUpgradesInventory(stack); + for (int upgradeIndex = 0; upgradeIndex < upgradesInventory.getSlotCount(); upgradeIndex++) { + final ItemStack upgradeStack = upgradesInventory.getInvStack(upgradeIndex); final ItemStack leftStack = ia.addItems(upgradeStack); if (!leftStack.isEmpty() && upgradeStack.getItem() instanceof IUpgradeModule) { player.dropItem(upgradeStack, false); @@ -199,14 +199,14 @@ public abstract class AbstractStorageCell> extends AEBaseI } @Override - public ItemStack getContainerItem(final ItemStack itemStack) { + public ItemStack getRecipeRemainder(final ItemStack itemStack) { return AEApi.instance().definitions().materials().emptyStorageCell().maybeStack(1) .orElseThrow(() -> new MissingDefinitionException( "Tried to use empty storage cells while basic storage cells are defined.")); } @Override - public boolean hasContainerItem(final ItemStack stack) { + public boolean hasRecipeRemainder(final ItemStack stack) { return AEConfig.instance().isFeatureEnabled(AEFeature.ENABLE_DISASSEMBLY_CRAFTING); } diff --git a/src/main/java/appeng/items/storage/CreativeStorageCellItem.java b/src/main/java/appeng/items/storage/CreativeStorageCellItem.java index c2c8e1782..0481b9ab6 100644 --- a/src/main/java/appeng/items/storage/CreativeStorageCellItem.java +++ b/src/main/java/appeng/items/storage/CreativeStorageCellItem.java @@ -20,7 +20,7 @@ package appeng.items.storage; import java.util.List; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.item.TooltipContext; @@ -49,12 +49,12 @@ public class CreativeStorageCellItem extends AEBaseItem implements ICellWorkbenc } @Override - public ItemTransferable getUpgradesInventory(final ItemStack is) { + public FixedItemInv getUpgradesInventory(final ItemStack is) { return null; } @Override - public ItemTransferable getConfigInventory(final ItemStack is) { + public FixedItemInv getConfigInventory(final ItemStack is) { return new CellConfig(is); } diff --git a/src/main/java/appeng/items/storage/SpatialStorageCellItem.java b/src/main/java/appeng/items/storage/SpatialStorageCellItem.java index e8d36bceb..56c62a04e 100644 --- a/src/main/java/appeng/items/storage/SpatialStorageCellItem.java +++ b/src/main/java/appeng/items/storage/SpatialStorageCellItem.java @@ -25,10 +25,10 @@ import net.minecraft.client.item.TooltipContext; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundTag; import net.minecraft.text.LiteralText; +import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.text.Text; -import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; import net.minecraft.world.dimension.DimensionType; import net.fabricmc.api.Environment; @@ -59,7 +59,7 @@ public class SpatialStorageCellItem extends AEBaseItem implements ISpatialStorag final TooltipContext advancedTooltips) { final DimensionType dimType = this.getStoredDimension(stack); if (dimType == null) { - lines.add(GuiText.Unformatted.textComponent().applyTextStyle(TextFormatting.ITALIC)); + lines.add(GuiText.Unformatted.textComponent().formatted(Formatting.ITALIC)); lines.add(GuiText.SpatialCapacity.textComponent(maxRegion, maxRegion, maxRegion)); } else { SpatialDimensionManager.INSTANCE.addCellDimensionTooltip(dimType, lines); diff --git a/src/main/java/appeng/items/storage/ViewCellItem.java b/src/main/java/appeng/items/storage/ViewCellItem.java index cbab4a3ae..ae6246805 100644 --- a/src/main/java/appeng/items/storage/ViewCellItem.java +++ b/src/main/java/appeng/items/storage/ViewCellItem.java @@ -18,7 +18,7 @@ package appeng.items.storage; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.item.ItemStack; import appeng.api.AEApi; @@ -59,15 +59,15 @@ public class ViewCellItem extends AEBaseItem implements ICellWorkbenchItem { .getStorageChannel(IItemStorageChannel.class).createList(); final ICellWorkbenchItem vc = (ICellWorkbenchItem) currentViewCell.getItem(); - final ItemTransferable upgrades = vc.getUpgradesInventory(currentViewCell); - final ItemTransferable config = vc.getConfigInventory(currentViewCell); + final FixedItemInv upgrades = vc.getUpgradesInventory(currentViewCell); + final FixedItemInv config = vc.getConfigInventory(currentViewCell); final FuzzyMode fzMode = vc.getFuzzyMode(currentViewCell); boolean hasInverter = false; boolean hasFuzzy = false; - for (int x = 0; x < upgrades.getSlots(); x++) { - final ItemStack is = upgrades.getStackInSlot(x); + for (int x = 0; x < upgrades.getSlotCount(); x++) { + final ItemStack is = upgrades.getInvStack(x); if (!is.isEmpty() && is.getItem() instanceof IUpgradeModule) { final Upgrades u = ((IUpgradeModule) is.getItem()).getType(is); if (u != null) { @@ -84,8 +84,8 @@ public class ViewCellItem extends AEBaseItem implements ICellWorkbenchItem { } } - for (int x = 0; x < config.getSlots(); x++) { - final ItemStack is = config.getStackInSlot(x); + for (int x = 0; x < config.getSlotCount(); x++) { + final ItemStack is = config.getInvStack(x); if (!is.isEmpty()) { priorityList.add(AEItemStack.fromItemStack(is)); } @@ -112,12 +112,12 @@ public class ViewCellItem extends AEBaseItem implements ICellWorkbenchItem { } @Override - public ItemTransferable getUpgradesInventory(final ItemStack is) { + public FixedItemInv getUpgradesInventory(final ItemStack is) { return new CellUpgrades(is, 2); } @Override - public ItemTransferable getConfigInventory(final ItemStack is) { + public FixedItemInv getConfigInventory(final ItemStack is) { return new CellConfig(is); } diff --git a/src/main/java/appeng/items/tools/MemoryCardItem.java b/src/main/java/appeng/items/tools/MemoryCardItem.java index 62d61f015..ef9b35f4f 100644 --- a/src/main/java/appeng/items/tools/MemoryCardItem.java +++ b/src/main/java/appeng/items/tools/MemoryCardItem.java @@ -28,12 +28,9 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.ItemUsageContext; import net.minecraft.nbt.CompoundTag; import net.minecraft.text.TranslatableText; -import net.minecraft.util.TypedActionResult; -import net.minecraft.util.ActionResult; -import net.minecraft.util.Hand; +import net.minecraft.util.*; import net.minecraft.util.math.BlockPos; import net.minecraft.text.Text; -import net.minecraft.util.text.TextFormatting; import net.minecraft.world.IWorldReader; import net.minecraft.world.World; import net.fabricmc.api.Environment; @@ -73,7 +70,7 @@ public class MemoryCardItem extends AEBaseItem implements IMemoryCard { if (data.contains("freq")) { final short freq = data.getShort("freq"); - final String freqTooltip = TextFormatting.BOLD + Platform.p2p().toHexString(freq); + final String freqTooltip = Formatting.BOLD + Platform.p2p().toHexString(freq); lines.add(new TranslatableText("gui.tooltips.appliedenergistics2.P2PFrequency", freqTooltip)); } @@ -145,19 +142,19 @@ public class MemoryCardItem extends AEBaseItem implements IMemoryCard { switch (msg) { case SETTINGS_CLEARED: - player.sendMessage(PlayerMessages.SettingCleared.get()); + player.sendSystemMessage(PlayerMessages.SettingCleared.get(), Util.NIL_UUID); break; case INVALID_MACHINE: - player.sendMessage(PlayerMessages.InvalidMachine.get()); + player.sendSystemMessage(PlayerMessages.InvalidMachine.get(), Util.NIL_UUID); break; case SETTINGS_LOADED: - player.sendMessage(PlayerMessages.LoadedSettings.get()); + player.sendSystemMessage(PlayerMessages.LoadedSettings.get(), Util.NIL_UUID); break; case SETTINGS_SAVED: - player.sendMessage(PlayerMessages.SavedSettings.get()); + player.sendSystemMessage(PlayerMessages.SavedSettings.get(), Util.NIL_UUID); break; case SETTINGS_RESET: - player.sendMessage(PlayerMessages.ResetSettings.get()); + player.sendSystemMessage(PlayerMessages.ResetSettings.get(), Util.NIL_UUID); break; default: } diff --git a/src/main/java/appeng/items/tools/NetworkToolItem.java b/src/main/java/appeng/items/tools/NetworkToolItem.java index 027bf5a0e..81f7a7323 100644 --- a/src/main/java/appeng/items/tools/NetworkToolItem.java +++ b/src/main/java/appeng/items/tools/NetworkToolItem.java @@ -91,7 +91,7 @@ public class NetworkToolItem extends AEBaseItem implements IGuiItem, IAEWrench { final BlockEntity te = context.getWorld().getBlockEntity(context.getBlockPos()); if (te instanceof IPartHost) { - final SelectedPart part = ((IPartHost) te).selectPart(mop.getHitVec()); + final SelectedPart part = ((IPartHost) te).selectPart(mop.getPos()); if (part.part != null || part.facade != null) { if (part.part instanceof INetworkToolAgent && !((INetworkToolAgent) part.part).showNetworkInfo(mop)) { diff --git a/src/main/java/appeng/items/tools/powered/ColorApplicatorItem.java b/src/main/java/appeng/items/tools/powered/ColorApplicatorItem.java index add79779f..6ec8e1aff 100644 --- a/src/main/java/appeng/items/tools/powered/ColorApplicatorItem.java +++ b/src/main/java/appeng/items/tools/powered/ColorApplicatorItem.java @@ -18,7 +18,7 @@ package appeng.items.tools.powered; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import appeng.api.AEApi; import appeng.api.config.Actionable; import appeng.api.config.FuzzyMode; @@ -46,6 +46,7 @@ import appeng.items.misc.PaintBallItem; import appeng.items.tools.powered.powersink.AEBasePoweredItem; import appeng.me.helpers.BaseActionSource; import appeng.tile.misc.PaintSplotchesBlockEntity; +import appeng.util.FakePlayer; import appeng.util.Platform; import appeng.util.item.AEItemStack; import com.google.common.collect.ImmutableMap; @@ -124,7 +125,7 @@ public class ColorApplicatorItem extends AEBasePoweredItem Direction side = context.getSide(); PlayerEntity p = context.getPlayer(); // This can be null if (p == null && w instanceof ServerWorld) { - p = Platform.getPlayer((ServerWorld) w); + p = FakePlayer.getOrCreate((ServerWorld) w); } final Block blk = w.getBlockState(pos).getBlock(); @@ -240,7 +241,7 @@ public class ColorApplicatorItem extends AEBasePoweredItem final CompoundTag c = is.getTag(); if (c != null && c.contains(TAG_COLOR)) { final CompoundTag color = c.getCompound(TAG_COLOR); - final ItemStack oldColor = ItemStack.read(color); + final ItemStack oldColor = ItemStack.fromTag(color); if (!oldColor.isEmpty()) { return oldColor; } @@ -314,7 +315,7 @@ public class ColorApplicatorItem extends AEBasePoweredItem data.remove(TAG_COLOR); } else { final CompoundTag color = new CompoundTag(); - newColor.write(color); + newColor.toTag(color); data.put(TAG_COLOR, color); } } @@ -433,12 +434,12 @@ public class ColorApplicatorItem extends AEBasePoweredItem } @Override - public ItemTransferable getUpgradesInventory(final ItemStack is) { + public FixedItemInv getUpgradesInventory(final ItemStack is) { return new CellUpgrades(is, 2); } @Override - public ItemTransferable getConfigInventory(final ItemStack is) { + public FixedItemInv getConfigInventory(final ItemStack is) { return new CellConfig(is); } diff --git a/src/main/java/appeng/items/tools/powered/EntropyManipulatorItem.java b/src/main/java/appeng/items/tools/powered/EntropyManipulatorItem.java index 791631623..ba2ec37b3 100644 --- a/src/main/java/appeng/items/tools/powered/EntropyManipulatorItem.java +++ b/src/main/java/appeng/items/tools/powered/EntropyManipulatorItem.java @@ -20,6 +20,7 @@ package appeng.items.tools.powered; import java.util.*; +import appeng.util.FakePlayer; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; @@ -32,13 +33,13 @@ import net.minecraft.fluid.Fluids; import net.minecraft.inventory.CraftingInventory; import net.minecraft.item.*; import net.minecraft.item.crafting.FurnaceRecipe; -import net.minecraft.item.crafting.IRecipeType; +import net.minecraft.recipe.RecipeType; import net.minecraft.particles.ParticleTypes; import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.util.*; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.RayTraceContext; +import net.minecraft.world.RayTraceContext; import net.minecraft.util.hit.HitResult; import net.minecraft.world.World; import net.minecraft.server.world.ServerWorld; @@ -203,7 +204,7 @@ public class EntropyManipulatorItem extends AEBasePoweredItem implements IBlockT // considered for onItemUse @Override public TypedActionResult onItemRightClick(final World w, final PlayerEntity p, final Hand hand) { - final HitResult target = rayTrace(w, p, RayTraceContext.FluidMode.ANY); + final HitResult target = rayTrace(w, p, RayTraceContext.FluidHandling.ANY); if (target.getType() != HitResult.Type.BLOCK) { return new TypedActionResult<>(ActionResult.FAIL, p.getStackInHand(hand)); @@ -233,7 +234,7 @@ public class EntropyManipulatorItem extends AEBasePoweredItem implements IBlockT if (w.isClient) { return ActionResult.FAIL; } - p = Platform.getPlayer((ServerWorld) w); + p = FakePlayer.getOrCreate((ServerWorld) w); // Fake players cannot crouch and we cannot communicate whether they want to // heat or cool tryBoth = true; @@ -280,11 +281,11 @@ public class EntropyManipulatorItem extends AEBasePoweredItem implements IBlockT for (final ItemStack i : stack) { CraftingInventory tempInv = new CraftingInventory(new ContainerNull(), 1, 1); - tempInv.setInventorySlotContents(0, i); - Optional recipe = w.getRecipeManager().getRecipe(IRecipeType.SMELTING, tempInv, w); + tempInv.setStack(0, i); + Optional recipe = w.getRecipeManager().getRecipe(RecipeType.SMELTING, tempInv, w); if (recipe.isPresent()) { - ItemStack result = recipe.get().getCraftingResult(tempInv); + ItemStack result = recipe.get().craft(tempInv); if (result.getItem() instanceof BlockItem) { // Anti-Dupe-Bug I presume... if (Block.getBlockFromItem(result.getItem()) == block) { diff --git a/src/main/java/appeng/items/tools/powered/MatterCannonItem.java b/src/main/java/appeng/items/tools/powered/MatterCannonItem.java index 19f2a87db..8cb7fc09b 100644 --- a/src/main/java/appeng/items/tools/powered/MatterCannonItem.java +++ b/src/main/java/appeng/items/tools/powered/MatterCannonItem.java @@ -22,14 +22,14 @@ import java.util.List; import javax.annotation.Nullable; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.fabricmc.api.EnvType; import net.minecraft.block.BlockState; import net.minecraft.block.entity.BlockEntity; import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.item.ItemEntity; +import net.minecraft.entity.ItemEntity; import net.minecraft.entity.passive.SheepEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; @@ -37,14 +37,14 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.TypedActionResult; import net.minecraft.util.ActionResult; import net.minecraft.util.DamageSource; +import net.minecraft.util.hit.EntityHitResult; import net.minecraft.util.math.Box; import net.minecraft.util.math.Direction; import net.minecraft.util.EntityDamageSource; import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.util.math.EntityRayTraceResult; -import net.minecraft.util.math.RayTraceContext; +import net.minecraft.world.RayTraceContext; import net.minecraft.util.hit.HitResult; import net.minecraft.util.math.Vec3d; import net.minecraft.text.Text; @@ -165,7 +165,7 @@ public class MatterCannonItem extends AEBasePoweredItem implements IStorageCell< } } else { if (Platform.isServer()) { - p.sendMessage(PlayerMessages.AmmoDepleted.get()); + p.sendSystemMessage(PlayerMessages.AmmoDepleted.get(), Util.NIL_UUID); } return new TypedActionResult<>(ActionResult.SUCCESS, p.getStackInHand(hand)); } @@ -178,11 +178,11 @@ public class MatterCannonItem extends AEBasePoweredItem implements IStorageCell< final Vec3d Vec3d1, final Vec3d direction, final double d0, final double d1, final double d2) { final Box bb = new Box(Math.min(Vec3d.x, Vec3d1.x), Math.min(Vec3d.y, Vec3d1.y), Math.min(Vec3d.z, Vec3d1.z), Math.max(Vec3d.x, Vec3d1.x), Math.max(Vec3d.y, Vec3d1.y), - Math.max(Vec3d.z, Vec3d1.z)).grow(16, 16, 16); + Math.max(Vec3d.z, Vec3d1.z)).expand(16, 16, 16); Entity entity = null; Vec3d entityIntersection = null; - final List list = w.getEntitiesWithinAABBExcludingEntity(p, bb); + final List list = w.getEntities(p, bb); double closest = 9999999.0D; for (int l = 0; l < list.size(); ++l) { @@ -191,17 +191,17 @@ public class MatterCannonItem extends AEBasePoweredItem implements IStorageCell< if (!entity1.isAlive() && entity1 != p && !(entity1 instanceof ItemEntity)) { if (entity1.isAlive()) { // prevent killing / flying of mounts. - if (entity1.isRidingOrBeingRiddenBy(p)) { + if (entity1.isConnectedThroughVehicle(p)) { continue; } final float f1 = 0.3F; - final Box boundingBox = entity1.getBoundingBox().grow(f1, f1, f1); + final Box boundingBox = entity1.getBoundingBox().expand(f1, f1, f1); final Vec3d intersection = boundingBox.rayTrace(Vec3d, Vec3d1).orElse(null); if (intersection != null) { - final double nd = Vec3d.squareDistanceTo(intersection); + final double nd = Vec3d.squaredDistanceTo(intersection); if (nd < closest) { entity = entity1; @@ -213,23 +213,23 @@ public class MatterCannonItem extends AEBasePoweredItem implements IStorageCell< } } - RayTraceContext rayTraceContext = new RayTraceContext(Vec3d, Vec3d1, RayTraceContext.BlockMode.COLLIDER, - RayTraceContext.FluidMode.NONE, p); - HitResult pos = w.rayTraceBlocks(rayTraceContext); + RayTraceContext rayTraceContext = new RayTraceContext(Vec3d, Vec3d1, RayTraceContext.ShapeType.COLLIDER, + RayTraceContext.FluidHandling.NONE, p); + HitResult pos = w.rayTrace(rayTraceContext); final Vec3d vec = new Vec3d(d0, d1, d2); if (entity != null && pos.getType() != HitResult.Type.MISS - && pos.getHitVec().squareDistanceTo(vec) > closest) { - pos = new EntityRayTraceResult(entity, entityIntersection); + && pos.getPos().squaredDistanceTo(vec) > closest) { + pos = new EntityHitResult(entity, entityIntersection); } else if (entity != null && pos.getType() == HitResult.Type.MISS) { - pos = new EntityRayTraceResult(entity, entityIntersection); + pos = new EntityHitResult(entity, entityIntersection); } try { AppEng.proxy.sendToAllNearExcept(null, d0, d1, d2, 128, w, new MatterCannonPacket(d0, d1, d2, (float) direction.x, (float) direction.y, (float) direction.z, (byte) (pos.getType() == HitResult.Type.MISS ? 32 - : pos.getHitVec().squareDistanceTo(vec) + 1))); + : pos.getPos().squaredDistanceTo(vec) + 1))); } catch (final Exception err) { AELog.debug(err); } @@ -240,8 +240,8 @@ public class MatterCannonItem extends AEBasePoweredItem implements IStorageCell< final AEColor col = ipb.getColor(); // boolean lit = ipb.isLumen( type ); - if (pos instanceof EntityRayTraceResult) { - EntityRayTraceResult entityResult = (EntityRayTraceResult) pos; + if (pos instanceof EntityHitResult) { + EntityHitResult entityResult = (EntityHitResult) pos; Entity entityHit = entityResult.getEntity(); final int id = entityHit.getEntityId(); @@ -273,7 +273,7 @@ public class MatterCannonItem extends AEBasePoweredItem implements IStorageCell< final BlockEntity te = w.getBlockEntity(hitPos); if (te instanceof PaintSplotchesBlockEntity) { - final Vec3d hp = pos.getHitVec().subtract(hitPos.getX(), hitPos.getY(), hitPos.getZ()); + final Vec3d hp = pos.getPos().subtract(hitPos.getX(), hitPos.getY(), hitPos.getZ()); ((PaintSplotchesBlockEntity) te).addBlot(type, side.getOpposite(), hp); } } @@ -288,11 +288,11 @@ public class MatterCannonItem extends AEBasePoweredItem implements IStorageCell< final Box bb = new Box(Math.min(Vec3d.x, Vec3d1.x), Math.min(Vec3d.y, Vec3d1.y), Math.min(Vec3d.z, Vec3d1.z), Math.max(Vec3d.x, Vec3d1.x), Math.max(Vec3d.y, Vec3d1.y), - Math.max(Vec3d.z, Vec3d1.z)).grow(16, 16, 16); + Math.max(Vec3d.z, Vec3d1.z)).expand(16, 16, 16); Entity entity = null; Vec3d entityIntersection = null; - final List list = w.getEntitiesWithinAABBExcludingEntity(p, bb); + final List list = w.getEntities(p, bb); double closest = 9999999.0D; for (int l = 0; l < list.size(); ++l) { @@ -301,17 +301,17 @@ public class MatterCannonItem extends AEBasePoweredItem implements IStorageCell< if (entity1.isAlive() && entity1 != p && !(entity1 instanceof ItemEntity)) { if (entity1.isAlive()) { // prevent killing / flying of mounts. - if (entity1.isRidingOrBeingRiddenBy(p)) { + if (entity1.isConnectedThroughVehicle(p)) { continue; } final float f1 = 0.3F; - final Box boundingBox = entity1.getBoundingBox().grow(f1, f1, f1); + final Box boundingBox = entity1.getBoundingBox().expand(f1, f1, f1); final Vec3d intersection = boundingBox.rayTrace(Vec3d, Vec3d1).orElse(null); if (intersection != null) { - final double nd = Vec3d.squareDistanceTo(intersection); + final double nd = Vec3d.squaredDistanceTo(intersection); if (nd < closest) { entity = entity1; @@ -323,22 +323,22 @@ public class MatterCannonItem extends AEBasePoweredItem implements IStorageCell< } } - RayTraceContext rayTraceContext = new RayTraceContext(Vec3d, Vec3d1, RayTraceContext.BlockMode.COLLIDER, - RayTraceContext.FluidMode.NONE, p); + RayTraceContext rayTraceContext = new RayTraceContext(Vec3d, Vec3d1, RayTraceContext.ShapeType.COLLIDER, + RayTraceContext.FluidHandling.NONE, p); final Vec3d vec = new Vec3d(d0, d1, d2); - HitResult pos = w.rayTraceBlocks(rayTraceContext); + HitResult pos = w.rayTrace(rayTraceContext); if (entity != null && pos.getType() != HitResult.Type.MISS - && pos.getHitVec().squareDistanceTo(vec) > closest) { - pos = new EntityRayTraceResult(entity, entityIntersection); + && pos.getPos().squaredDistanceTo(vec) > closest) { + pos = new EntityHitResult(entity, entityIntersection); } else if (entity != null && pos.getType() == HitResult.Type.MISS) { - pos = new EntityRayTraceResult(entity, entityIntersection); + pos = new EntityHitResult(entity, entityIntersection); } try { AppEng.proxy.sendToAllNearExcept(null, d0, d1, d2, 128, w, new MatterCannonPacket(d0, d1, d2, (float) direction.x, (float) direction.y, (float) direction.z, (byte) (pos.getType() == HitResult.Type.MISS ? 32 - : pos.getHitVec().squareDistanceTo(vec) + 1))); + : pos.getPos().squaredDistanceTo(vec) + 1))); } catch (final Exception err) { AELog.debug(err); } @@ -346,8 +346,8 @@ public class MatterCannonItem extends AEBasePoweredItem implements IStorageCell< if (pos.getType() != HitResult.Type.MISS) { final DamageSource dmgSrc = new EntityDamageSource("matter_cannon", p); - if (pos instanceof EntityRayTraceResult) { - EntityRayTraceResult entityResult = (EntityRayTraceResult) pos; + if (pos instanceof EntityHitResult) { + EntityHitResult entityResult = (EntityHitResult) pos; Entity entityHit = entityResult.getEntity(); final int dmg = (int) Math.ceil(penetration / 20.0f); @@ -398,12 +398,12 @@ public class MatterCannonItem extends AEBasePoweredItem implements IStorageCell< } @Override - public ItemTransferable getUpgradesInventory(final ItemStack is) { + public FixedItemInv getUpgradesInventory(final ItemStack is) { return new CellUpgrades(is, 4); } @Override - public ItemTransferable getConfigInventory(final ItemStack is) { + public FixedItemInv getConfigInventory(final ItemStack is) { return new CellConfig(is); } diff --git a/src/main/java/appeng/items/tools/powered/PortableCellItem.java b/src/main/java/appeng/items/tools/powered/PortableCellItem.java index 5135db2ae..024bf1ac8 100644 --- a/src/main/java/appeng/items/tools/powered/PortableCellItem.java +++ b/src/main/java/appeng/items/tools/powered/PortableCellItem.java @@ -33,7 +33,7 @@ import net.minecraft.text.Text; import net.minecraft.world.World; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import appeng.api.AEApi; import appeng.api.config.FuzzyMode; @@ -129,12 +129,12 @@ public class PortableCellItem extends AEBasePoweredItem implements IStorageCell< } @Override - public ItemTransferable getUpgradesInventory(final ItemStack is) { + public FixedItemInv getUpgradesInventory(final ItemStack is) { return new CellUpgrades(is, 2); } @Override - public ItemTransferable getConfigInventory(final ItemStack is) { + public FixedItemInv getConfigInventory(final ItemStack is) { return new CellConfig(is); } diff --git a/src/main/java/appeng/items/tools/quartz/QuartzCuttingKnifeItem.java b/src/main/java/appeng/items/tools/quartz/QuartzCuttingKnifeItem.java index 0d5f8a13a..f17f722ff 100644 --- a/src/main/java/appeng/items/tools/quartz/QuartzCuttingKnifeItem.java +++ b/src/main/java/appeng/items/tools/quartz/QuartzCuttingKnifeItem.java @@ -71,7 +71,7 @@ public class QuartzCuttingKnifeItem extends AEBaseItem implements IGuiItem { } @Override - public ItemStack getContainerItem(final ItemStack itemStack) { + public ItemStack getRecipeRemainder(final ItemStack itemStack) { ItemStack copy = itemStack.copy(); copy.setDamage(itemStack.getDamage() + 1); @@ -79,7 +79,7 @@ public class QuartzCuttingKnifeItem extends AEBaseItem implements IGuiItem { } @Override - public boolean hasContainerItem(final ItemStack stack) { + public boolean hasRecipeRemainder(final ItemStack stack) { return true; } diff --git a/src/main/java/appeng/me/GridNode.java b/src/main/java/appeng/me/GridNode.java index bfa70f3d8..833d89fc6 100644 --- a/src/main/java/appeng/me/GridNode.java +++ b/src/main/java/appeng/me/GridNode.java @@ -425,7 +425,7 @@ public class GridNode implements IGridNode, IPathItem { private IGridHost findGridHost(final WorldAccess world, final int x, final int y, final int z) { final BlockPos pos = new BlockPos(x, y, z); - if (world.isBlockLoaded(pos)) { + if (world.isChunkLoaded(pos)) { final BlockEntity te = world.getBlockEntity(pos); if (te instanceof IGridHost) { return (IGridHost) te; diff --git a/src/main/java/appeng/me/cluster/implementations/CraftingCPUCluster.java b/src/main/java/appeng/me/cluster/implementations/CraftingCPUCluster.java index 65eb78940..fbc4aac24 100644 --- a/src/main/java/appeng/me/cluster/implementations/CraftingCPUCluster.java +++ b/src/main/java/appeng/me/cluster/implementations/CraftingCPUCluster.java @@ -26,8 +26,10 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; +import appeng.util.FakePlayer; import com.google.common.collect.ImmutableList; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.CraftingInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundTag; @@ -612,7 +614,7 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU { if (!is.isEmpty()) { this.postChange(AEItemStack.fromItemStack(is), this.machineSrc); - ic.setInventorySlotContents(x, is); + ic.setStack(x, is); found = true; break; } @@ -625,7 +627,7 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU { if (!is.isEmpty()) { this.postChange(input[x], this.machineSrc); - ic.setInventorySlotContents(x, is); + ic.setStack(x, is); if (is.getCount() == input[x].getStackSize()) { found = true; continue; @@ -641,8 +643,8 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU { if (!found) { // put stuff back.. - for (int x = 0; x < ic.getSizeInventory(); x++) { - final ItemStack is = ic.getStackInSlot(x); + for (int x = 0; x < ic.size(); x++) { + final ItemStack is = ic.getStack(x); if (!is.isEmpty()) { this.inventory.injectItems(AEItemStack.fromItemStack(is), Actionable.MODULATE, this.machineSrc); @@ -664,11 +666,11 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU { } if (details.isCraftable()) { - BasicEventHooks.firePlayerCraftingEvent(Platform.getPlayer((ServerWorld) getWorld()), + BasicEventHooks.firePlayerCraftingEvent((PlayerEntity) FakePlayer.getOrCreate((ServerWorld) getWorld()), details.getOutput(ic, this.getWorld()), ic); - for (int x = 0; x < ic.getSizeInventory(); x++) { - final ItemStack output = Platform.getContainerItem(ic.getStackInSlot(x)); + for (int x = 0; x < ic.size(); x++) { + final ItemStack output = Platform.getRecipeRemainder(ic.getStack(x)); if (!output.isEmpty()) { final IAEItemStack cItem = AEItemStack.fromItemStack(output); this.postChange(cItem, this.machineSrc); @@ -695,8 +697,8 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU { if (ic != null) { // put stuff back.. - for (int x = 0; x < ic.getSizeInventory(); x++) { - final ItemStack is = ic.getStackInSlot(x); + for (int x = 0; x < ic.size(); x++) { + final ItemStack is = ic.getStack(x); if (!is.isEmpty()) { this.inventory.injectItems(AEItemStack.fromItemStack(is), Actionable.MODULATE, this.machineSrc); diff --git a/src/main/java/appeng/me/storage/AbstractCellInventory.java b/src/main/java/appeng/me/storage/AbstractCellInventory.java index 5dfb95692..c6f4fa059 100644 --- a/src/main/java/appeng/me/storage/AbstractCellInventory.java +++ b/src/main/java/appeng/me/storage/AbstractCellInventory.java @@ -18,7 +18,7 @@ package appeng.me.storage; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundTag; @@ -212,12 +212,12 @@ public abstract class AbstractCellInventory> implements IC } @Override - public ItemTransferable getConfigInventory() { + public FixedItemInv getConfigInventory() { return this.cellType.getConfigInventory(this.i); } @Override - public ItemTransferable getUpgradesInventory() { + public FixedItemInv getUpgradesInventory() { return this.cellType.getUpgradesInventory(this.i); } diff --git a/src/main/java/appeng/me/storage/BasicCellInventoryHandler.java b/src/main/java/appeng/me/storage/BasicCellInventoryHandler.java index fb2eb1ad9..16ca372aa 100644 --- a/src/main/java/appeng/me/storage/BasicCellInventoryHandler.java +++ b/src/main/java/appeng/me/storage/BasicCellInventoryHandler.java @@ -18,7 +18,7 @@ package appeng.me.storage; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundTag; @@ -49,15 +49,15 @@ public class BasicCellInventoryHandler> extends MEInventor if (ci != null) { final IItemList priorityList = channel.createList(); - final ItemTransferable upgrades = ci.getUpgradesInventory(); - final ItemTransferable config = ci.getConfigInventory(); + final FixedItemInv upgrades = ci.getUpgradesInventory(); + final FixedItemInv config = ci.getConfigInventory(); final FuzzyMode fzMode = ci.getFuzzyMode(); boolean hasInverter = false; boolean hasFuzzy = false; - for (int x = 0; x < upgrades.getSlots(); x++) { - final ItemStack is = upgrades.getStackInSlot(x); + for (int x = 0; x < upgrades.getSlotCount(); x++) { + final ItemStack is = upgrades.getInvStack(x); if (!is.isEmpty() && is.getItem() instanceof IUpgradeModule) { final Upgrades u = ((IUpgradeModule) is.getItem()).getType(is); if (u != null) { @@ -74,8 +74,8 @@ public class BasicCellInventoryHandler> extends MEInventor } } - for (int x = 0; x < config.getSlots(); x++) { - final ItemStack is = config.getStackInSlot(x); + for (int x = 0; x < config.getSlotCount(); x++) { + final ItemStack is = config.getInvStack(x); if (!is.isEmpty()) { final T configItem = channel.createStack(is); if (configItem != null) { diff --git a/src/main/java/appeng/parts/AEBasePart.java b/src/main/java/appeng/parts/AEBasePart.java index 0f1ed26db..de1a0829c 100644 --- a/src/main/java/appeng/parts/AEBasePart.java +++ b/src/main/java/appeng/parts/AEBasePart.java @@ -45,7 +45,7 @@ import net.minecraft.text.Text; import net.minecraft.world.BlockView; import net.minecraft.world.World; import net.fabricmc.api.Environment; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import appeng.api.AEApi; import appeng.api.config.Upgrades; @@ -305,7 +305,7 @@ public abstract class AEBasePart implements IPart, IGridProxyable, IActionHost, } @Override - public ItemTransferable getInventoryByName(final String name) { + public FixedItemInv getInventoryByName(final String name) { return null; } @@ -329,7 +329,7 @@ public abstract class AEBasePart implements IPart, IGridProxyable, IActionHost, pHost.setPriority(compound.getInt("priority")); } - final ItemTransferable inv = this.getInventoryByName("config"); + final FixedItemInv inv = this.getInventoryByName("config"); if (inv instanceof AppEngInternalAEInventory) { final AppEngInternalAEInventory target = (AppEngInternalAEInventory) inv; final AppEngInternalAEInventory tmp = new AppEngInternalAEInventory(null, target.getSlots()); @@ -360,7 +360,7 @@ public abstract class AEBasePart implements IPart, IGridProxyable, IActionHost, output.putInt("priority", pHost.getPriority()); } - final ItemTransferable inv = this.getInventoryByName("config"); + final FixedItemInv inv = this.getInventoryByName("config"); if (inv instanceof AppEngInternalAEInventory) { ((AppEngInternalAEInventory) inv).writeToNBT(output, "config"); } diff --git a/src/main/java/appeng/parts/CableBusContainer.java b/src/main/java/appeng/parts/CableBusContainer.java index 4f989cfad..aa76c80d3 100644 --- a/src/main/java/appeng/parts/CableBusContainer.java +++ b/src/main/java/appeng/parts/CableBusContainer.java @@ -351,7 +351,7 @@ public class CableBusContainer extends CableBusStorage implements AEMultiTile, I final IPartCollisionHelper bch = new BusCollisionHelper(boxes, side, true); p.getBoxes(bch); for (Box bb : boxes) { - bb = bb.grow(0.002, 0.002, 0.002); + bb = bb.expand(0.002, 0.002, 0.002); if (bb.contains(pos)) { return new SelectedPart(p, side); } @@ -369,7 +369,7 @@ public class CableBusContainer extends CableBusStorage implements AEMultiTile, I final IPartCollisionHelper bch = new BusCollisionHelper(boxes, side, true); p.getBoxes(bch, true); for (Box bb : boxes) { - bb = bb.grow(0.01, 0.01, 0.01); + bb = bb.expand(0.01, 0.01, 0.01); if (bb.contains(pos)) { return new SelectedPart(p, side); } @@ -800,7 +800,7 @@ public class CableBusContainer extends CableBusStorage implements AEMultiTile, I final IPart part = this.getPart(s); if (part != null) { final CompoundTag def = new CompoundTag(); - part.getItemStack(PartItemStack.WORLD).write(def); + part.getItemStack(PartItemStack.WORLD).toTag(def); final CompoundTag extra = new CompoundTag(); part.writeToNBT(extra); @@ -842,7 +842,7 @@ public class CableBusContainer extends CableBusStorage implements AEMultiTile, I final CompoundTag def = data.getCompound(defKey); final CompoundTag extra = data.getCompound(extraKey); IPart p = this.getPart(side); - final ItemStack iss = ItemStack.read(def); + final ItemStack iss = ItemStack.fromTag(def); if (iss.isEmpty()) { continue; } diff --git a/src/main/java/appeng/parts/CableBusStorage.java b/src/main/java/appeng/parts/CableBusStorage.java index b430c118e..56dbe423b 100644 --- a/src/main/java/appeng/parts/CableBusStorage.java +++ b/src/main/java/appeng/parts/CableBusStorage.java @@ -58,7 +58,7 @@ public class CableBusStorage { this.sides[x] = null; this.sides = this.shrink(this.sides, true); } else if (part != null) { - this.sides = this.grow(this.sides, x, true); + this.sides = this.expand(this.sides, x, true); this.sides[x] = part; } } @@ -114,7 +114,7 @@ public class CableBusStorage { this.facades[x] = null; this.facades = this.shrink(this.facades, false); } else { - this.facades = this.grow(this.facades, x, false); + this.facades = this.expand(this.facades, x, false); this.facades[x] = facade; } } diff --git a/src/main/java/appeng/parts/PartPlacement.java b/src/main/java/appeng/parts/PartPlacement.java index baf7b80dd..7c062682d 100644 --- a/src/main/java/appeng/parts/PartPlacement.java +++ b/src/main/java/appeng/parts/PartPlacement.java @@ -39,7 +39,7 @@ import net.minecraft.util.math.Direction; import net.minecraft.util.Hand; import net.minecraft.util.SoundCategory; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.RayTraceContext; +import net.minecraft.world.RayTraceContext; import net.minecraft.util.hit.HitResult; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; @@ -81,9 +81,9 @@ public class PartPlacement { // FIXME: This was changed alot. final LookDirection dir = Platform.getPlayerRay(player); - RayTraceContext rtc = new RayTraceContext(dir.getA(), dir.getB(), RayTraceContext.BlockMode.OUTLINE, - RayTraceContext.FluidMode.NONE, player); - final BlockHitResult mop = world.rayTraceBlocks(rtc); + RayTraceContext rtc = new RayTraceContext(dir.getA(), dir.getB(), RayTraceContext.ShapeType.OUTLINE, + RayTraceContext.FluidHandling.NONE, player); + final BlockHitResult mop = world.rayTrace(rtc); ItemPlacementContext useContext = new ItemPlacementContext(new ItemUsageContext(player, hand, mop)); if (!held.isEmpty() && Platform.isWrench(player, held, pos) && player.isInSneakingPose()) { @@ -103,7 +103,7 @@ public class PartPlacement { if (mop.getType() == HitResult.Type.BLOCK) { final List is = new ArrayList<>(); final SelectedPart sp = selectPart(player, host, - mop.getHitVec().add(-mop.getPos().getX(), -mop.getPos().getY(), -mop.getPos().getZ())); + mop.getPos().add(-mop.getPos().getX(), -mop.getPos().getY(), -mop.getPos().getZ())); if (sp.part != null) { is.add(sp.part.getItemStack(PartItemStack.WRENCH)); @@ -157,7 +157,7 @@ public class PartPlacement { host.markForSave(); host.markForUpdate(); if (!player.isCreative()) { - held.grow(-1); + held.increment(-1); ; if (held.getCount() == 0) { player.inventory.mainInventory.set(player.inventory.currentItem, @@ -182,7 +182,7 @@ public class PartPlacement { if (held.isEmpty()) { if (host != null && player.isInSneakingPose() && world.isAirBlock(pos)) { if (mop.getType() == HitResult.Type.BLOCK) { - Vec3d hitVec = mop.getHitVec().add(-mop.getPos().getX(), -mop.getPos().getY(), + Vec3d hitVec = mop.getPos().add(-mop.getPos().getX(), -mop.getPos().getY(), -mop.getPos().getZ()); final SelectedPart sPart = selectPart(player, host, hitVec); if (sPart != null && sPart.part != null) { @@ -286,10 +286,10 @@ public class PartPlacement { if (!world.isClient) { if (mop.getType() != HitResult.Type.MISS) { final SelectedPart sp = selectPart(player, host, - mop.getHitVec().add(-mop.getPos().getX(), -mop.getPos().getY(), -mop.getPos().getZ())); + mop.getPos().add(-mop.getPos().getX(), -mop.getPos().getY(), -mop.getPos().getZ())); if (sp.part != null) { - if (!player.isInSneakingPose() && sp.part.onActivate(player, hand, mop.getHitVec())) { + if (!player.isInSneakingPose() && sp.part.onActivate(player, hand, mop.getPos())) { return ActionResult.FAIL; } } @@ -311,7 +311,7 @@ public class PartPlacement { }); if (!player.isCreative()) { - held.grow(-1); + held.increment(-1); if (held.getCount() == 0) { player.setHeldItem(hand, ItemStack.EMPTY); MinecraftForge.EVENT_BUS.post(new PlayerDestroyItemEvent(player, held, hand)); @@ -370,7 +370,7 @@ public class PartPlacement { final double d0 = mc.playerController.getBlockReachDistance(); final Vec3d vec3 = mc.getRenderViewEntity().getEyePosition(f); - if (mop instanceof BlockHitResult && mop.getHitVec().distanceTo(vec3) < d0) { + if (mop instanceof BlockHitResult && mop.getPos().distanceTo(vec3) < d0) { BlockHitResult brtr = (BlockHitResult) mop; final World w = event.getEntity().world; diff --git a/src/main/java/appeng/parts/automation/AnnihilationPlanePart.java b/src/main/java/appeng/parts/automation/AnnihilationPlanePart.java index fa2f9bce1..8597f2f34 100644 --- a/src/main/java/appeng/parts/automation/AnnihilationPlanePart.java +++ b/src/main/java/appeng/parts/automation/AnnihilationPlanePart.java @@ -23,13 +23,15 @@ import java.util.List; import javax.annotation.Nonnull; +import appeng.util.FakePlayer; import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.Material; import net.minecraft.block.entity.BlockEntity; import net.minecraft.entity.Entity; -import net.minecraft.entity.item.ItemEntity; +import net.minecraft.entity.ItemEntity; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; @@ -242,10 +244,10 @@ public class AnnihilationPlanePart extends BasicStatePart implements IGridTickab switch (this.getSide()) { case DOWN: case UP: - if (entity.getPosX() > pos.getX() && entity.getPosX() < pos.getX() + 1) { - if (entity.getPosZ() > pos.getZ() && entity.getPosZ() < pos.getZ() + 1) { - if ((entity.getPosY() > pos.getY() + 0.9 && this.getSide() == AEPartLocation.UP) - || (entity.getPosY() < pos.getY() + 0.1 && this.getSide() == AEPartLocation.DOWN)) { + if (entity.getX() > pos.getX() && entity.getX() < pos.getX() + 1) { + if (entity.getZ() > pos.getZ() && entity.getZ() < pos.getZ() + 1) { + if ((entity.getY() > pos.getY() + 0.9 && this.getSide() == AEPartLocation.UP) + || (entity.getY() < pos.getY() + 0.1 && this.getSide() == AEPartLocation.DOWN)) { capture = true; } } @@ -253,10 +255,10 @@ public class AnnihilationPlanePart extends BasicStatePart implements IGridTickab break; case SOUTH: case NORTH: - if (entity.getPosX() > pos.getX() && entity.getPosX() < pos.getX() + 1) { + if (entity.getX() > pos.getX() && entity.getX() < pos.getX() + 1) { if (posYMiddle > pos.getY() && posYMiddle < pos.getY() + 1) { - if ((entity.getPosZ() > pos.getZ() + 0.9 && this.getSide() == AEPartLocation.SOUTH) - || (entity.getPosZ() < pos.getZ() + 0.1 + if ((entity.getZ() > pos.getZ() + 0.9 && this.getSide() == AEPartLocation.SOUTH) + || (entity.getZ() < pos.getZ() + 0.1 && this.getSide() == AEPartLocation.NORTH)) { capture = true; } @@ -265,10 +267,10 @@ public class AnnihilationPlanePart extends BasicStatePart implements IGridTickab break; case EAST: case WEST: - if (entity.getPosZ() > pos.getZ() && entity.getPosZ() < pos.getZ() + 1) { + if (entity.getZ() > pos.getZ() && entity.getZ() < pos.getZ() + 1) { if (posYMiddle > pos.getY() && posYMiddle < pos.getY() + 1) { - if ((entity.getPosX() > pos.getX() + 0.9 && this.getSide() == AEPartLocation.EAST) - || (entity.getPosX() < pos.getX() + 0.1 && this.getSide() == AEPartLocation.WEST)) { + if ((entity.getX() > pos.getX() + 0.9 && this.getSide() == AEPartLocation.EAST) + || (entity.getX() < pos.getX() + 0.1 && this.getSide() == AEPartLocation.WEST)) { capture = true; } } @@ -284,8 +286,8 @@ public class AnnihilationPlanePart extends BasicStatePart implements IGridTickab if (changed) { AppEng.proxy.sendToAllNearExcept(null, pos.getX(), pos.getY(), pos.getZ(), 64, - this.getTile().getWorld(), new ItemTransitionEffectPacket(entity.getPosX(), - entity.getPosY(), entity.getPosZ(), this.getSide().getOpposite())); + this.getTile().getWorld(), new ItemTransitionEffectPacket(entity.getX(), + entity.getY(), entity.getZ(), this.getSide().getOpposite())); } } } @@ -481,8 +483,8 @@ public class AnnihilationPlanePart extends BasicStatePart implements IGridTickab final boolean ignoreMaterials = material == Material.AIR || material == Material.LAVA || material == Material.WATER || material.isLiquid(); - return !ignoreMaterials && hardness >= 0f && w.isBlockLoaded(pos) - && w.canMineBlockBody(Platform.getPlayer(w), pos); + return !ignoreMaterials && hardness >= 0f && w.isChunkLoaded(pos) + && w.canPlayerModifyAt((PlayerEntity) FakePlayer.getOrCreate(w), pos); } protected List obtainBlockDrops(final ServerWorld w, final BlockPos pos) { @@ -504,7 +506,7 @@ public class AnnihilationPlanePart extends BasicStatePart implements IGridTickab } BlockEntity te = w.getBlockEntity(pos); - return Block.getDrops(state, w, pos, te, fakePlayer, harvestTool); + return Block.getDroppedStacks(state, w, pos, te, fakePlayer, harvestTool); } /** diff --git a/src/main/java/appeng/parts/automation/FormationPlanePart.java b/src/main/java/appeng/parts/automation/FormationPlanePart.java index deff88b9b..31d1e5996 100644 --- a/src/main/java/appeng/parts/automation/FormationPlanePart.java +++ b/src/main/java/appeng/parts/automation/FormationPlanePart.java @@ -25,9 +25,10 @@ import java.util.List; import javax.annotation.Nonnull; import javax.annotation.Nullable; +import appeng.util.FakePlayer; import net.minecraft.block.entity.BlockEntity; import net.minecraft.entity.Entity; -import net.minecraft.entity.item.ItemEntity; +import net.minecraft.entity.ItemEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.container.ContainerType; import net.minecraft.item.BlockItem; @@ -50,7 +51,7 @@ import net.minecraft.world.World; import net.minecraft.server.world.ServerWorld; import net.minecraftforge.common.IPlantable; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import appeng.api.AEApi; import appeng.api.config.AccessRestriction; @@ -140,7 +141,7 @@ public class FormationPlanePart extends AbstractFormationPlanePart } @Override - public void onChangeInventory(final ItemTransferable inv, final int slot, final InvOperation mc, + public void onChangeInventory(final FixedItemInv inv, final int slot, final InvOperation mc, final ItemStack removedStack, final ItemStack newStack) { super.onChangeInventory(inv, slot, mc, removedStack, newStack); @@ -163,7 +164,7 @@ public class FormationPlanePart extends AbstractFormationPlanePart } @Override - public ItemTransferable getInventoryByName(final String name) { + public FixedItemInv getInventoryByName(final String name) { if (name.equals("config")) { return this.Config; } @@ -224,7 +225,7 @@ public class FormationPlanePart extends AbstractFormationPlanePart if (w.getBlockState(placePos).getMaterial().isReplaceable()) { if (placeBlock == YesNo.YES && (i instanceof BlockItem || i instanceof IPlantable || i instanceof FireworkStarItem || i instanceof FireworkRocketItem || i instanceof IPartItem)) { - final PlayerEntity player = Platform.getPlayer((ServerWorld) w); + final PlayerEntity player = FakePlayer.getOrCreate((ServerWorld) w); Platform.configurePlayer(player, side, this.getTile()); Hand hand = player.getActiveHand(); player.setHeldItem(hand, is); @@ -306,7 +307,7 @@ public class FormationPlanePart extends AbstractFormationPlanePart } } - if (!w.addEntity(result)) { + if (!w.spawnEntity(result)) { result.remove(); worked = false; } diff --git a/src/main/java/appeng/parts/automation/LevelEmitterPart.java b/src/main/java/appeng/parts/automation/LevelEmitterPart.java index 8d9e66304..024517937 100644 --- a/src/main/java/appeng/parts/automation/LevelEmitterPart.java +++ b/src/main/java/appeng/parts/automation/LevelEmitterPart.java @@ -21,7 +21,7 @@ package appeng.parts.automation; import java.util.Collection; import java.util.Random; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.CraftingInventory; import net.minecraft.item.ItemStack; @@ -417,7 +417,7 @@ public class LevelEmitterPart extends UpgradeablePart implements IEnergyWatcherH } @Override - public void onChangeInventory(final ItemTransferable inv, final int slot, final InvOperation mc, + public void onChangeInventory(final FixedItemInv inv, final int slot, final InvOperation mc, final ItemStack removedStack, final ItemStack newStack) { if (inv == this.config) { this.configureWatchers(); @@ -455,7 +455,7 @@ public class LevelEmitterPart extends UpgradeablePart implements IEnergyWatcherH } @Override - public ItemTransferable getInventoryByName(final String name) { + public FixedItemInv getInventoryByName(final String name) { if (name.equals("config")) { return this.config; } diff --git a/src/main/java/appeng/parts/automation/SharedItemBusPart.java b/src/main/java/appeng/parts/automation/SharedItemBusPart.java index 95a5aab65..0167e8a62 100644 --- a/src/main/java/appeng/parts/automation/SharedItemBusPart.java +++ b/src/main/java/appeng/parts/automation/SharedItemBusPart.java @@ -24,7 +24,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkPos; import net.minecraft.world.BlockView; import net.minecraft.world.World; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import appeng.api.config.RedstoneMode; import appeng.api.config.Upgrades; @@ -61,7 +61,7 @@ public abstract class SharedItemBusPart extends UpgradeablePart implements IGrid } @Override - public ItemTransferable getInventoryByName(final String name) { + public FixedItemInv getInventoryByName(final String name) { if (name.equals("config")) { return this.getConfig(); } diff --git a/src/main/java/appeng/parts/automation/UpgradeInventory.java b/src/main/java/appeng/parts/automation/UpgradeInventory.java index 98a7400dc..20ccff233 100644 --- a/src/main/java/appeng/parts/automation/UpgradeInventory.java +++ b/src/main/java/appeng/parts/automation/UpgradeInventory.java @@ -18,7 +18,7 @@ package appeng.parts.automation; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; @@ -136,7 +136,7 @@ public abstract class UpgradeInventory extends AppEngInternalInventory implement } @Override - public void onChangeInventory(final ItemTransferable inv, final int slot, final InvOperation mc, + public void onChangeInventory(final FixedItemInv inv, final int slot, final InvOperation mc, final ItemStack removedStack, final ItemStack newStack) { this.cached = false; if (this.parent != null && Platform.isServer()) { @@ -147,12 +147,12 @@ public abstract class UpgradeInventory extends AppEngInternalInventory implement private class UpgradeInvFilter implements IAEItemFilter { @Override - public boolean allowExtract(ItemTransferable inv, int slot, int amount) { + public boolean allowExtract(FixedItemInv inv, int slot, int amount) { return true; } @Override - public boolean allowInsert(ItemTransferable inv, int slot, ItemStack itemstack) { + public boolean allowInsert(FixedItemInv inv, int slot, ItemStack itemstack) { if (itemstack.isEmpty()) { return false; } diff --git a/src/main/java/appeng/parts/automation/UpgradeablePart.java b/src/main/java/appeng/parts/automation/UpgradeablePart.java index 7ab16f85c..f5432e601 100644 --- a/src/main/java/appeng/parts/automation/UpgradeablePart.java +++ b/src/main/java/appeng/parts/automation/UpgradeablePart.java @@ -21,7 +21,7 @@ package appeng.parts.automation; import java.util.List; import net.minecraft.item.ItemStack; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import appeng.api.config.RedstoneMode; import appeng.api.config.Settings; @@ -53,7 +53,7 @@ public abstract class UpgradeablePart extends BasicStatePart implements IAEAppEn } @Override - public void onChangeInventory(final ItemTransferable inv, final int slot, final InvOperation mc, + public void onChangeInventory(final FixedItemInv inv, final int slot, final InvOperation mc, final ItemStack removedStack, final ItemStack newStack) { if (inv == this.upgrades) { this.upgradesChanged(); @@ -134,7 +134,7 @@ public abstract class UpgradeablePart extends BasicStatePart implements IAEAppEn } @Override - public ItemTransferable getInventoryByName(final String name) { + public FixedItemInv getInventoryByName(final String name) { if (name.equals("upgrades")) { return this.upgrades; } diff --git a/src/main/java/appeng/parts/misc/InterfacePart.java b/src/main/java/appeng/parts/misc/InterfacePart.java index 81014bdb5..42873f9cf 100644 --- a/src/main/java/appeng/parts/misc/InterfacePart.java +++ b/src/main/java/appeng/parts/misc/InterfacePart.java @@ -21,7 +21,7 @@ package appeng.parts.misc; import java.util.EnumSet; import java.util.List; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import com.google.common.collect.ImmutableSet; import net.minecraft.entity.player.PlayerEntity; @@ -159,7 +159,7 @@ public class InterfacePart extends BasicStatePart implements IGridTickable, ISto } @Override - public ItemTransferable getInventoryByName(final String name) { + public FixedItemInv getInventoryByName(final String name) { return this.duality.getInventoryByName(name); } @@ -192,7 +192,7 @@ public class InterfacePart extends BasicStatePart implements IGridTickable, ISto } @Override - public void onChangeInventory(final ItemTransferable inv, final int slot, final InvOperation mc, + public void onChangeInventory(final FixedItemInv inv, final int slot, final InvOperation mc, final ItemStack removedStack, final ItemStack newStack) { this.duality.onChangeInventory(inv, slot, mc, removedStack, newStack); } diff --git a/src/main/java/appeng/parts/misc/ItemHandlerAdapter.java b/src/main/java/appeng/parts/misc/ItemHandlerAdapter.java index 00c61147d..84b7437a1 100644 --- a/src/main/java/appeng/parts/misc/ItemHandlerAdapter.java +++ b/src/main/java/appeng/parts/misc/ItemHandlerAdapter.java @@ -25,7 +25,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.item.ItemStack; import appeng.api.AEApi; @@ -52,11 +52,11 @@ import appeng.util.item.AEItemStack; class ItemHandlerAdapter implements IMEInventory, IBaseMonitor, ITickingMonitor { private final Map, Object> listeners = new HashMap<>(); private IActionSource mySource; - private final ItemTransferable itemHandler; + private final FixedItemInv itemHandler; private final IGridProxyable proxyable; private final InventoryCache cache; - ItemHandlerAdapter(ItemTransferable itemHandler, IGridProxyable proxy) { + ItemHandlerAdapter(FixedItemInv itemHandler, IGridProxyable proxy) { this.itemHandler = itemHandler; this.proxyable = proxy; this.cache = new InventoryCache(this.itemHandler); @@ -67,7 +67,7 @@ class ItemHandlerAdapter implements IMEInventory, IBaseMonitor, IBaseMonitor, IBaseMonitor, IBaseMonitor, IBaseMonitor update() { final List changes = new ArrayList<>(); - final int slots = this.itemHandler.getSlots(); + final int slots = this.itemHandler.getSlotCount(); // Make room for new slots if (slots > this.cachedAeStacks.length) { @@ -243,7 +243,7 @@ class ItemHandlerAdapter implements IMEInventory, IBaseMonitor handlerExtOpt = target + final LazyOptional handlerExtOpt = target .getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, targetSide); if (handlerExtOpt.isPresent()) { return new ItemHandlerAdapter(handlerExtOpt.orElse(null), this); @@ -380,12 +380,12 @@ public class StorageBusPart extends UpgradeablePart return Objects.hash(target, accessorOpt.orElse(null)); } - final LazyOptional itemHandlerOpt = target + final LazyOptional itemHandlerOpt = target .getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, targetSide); if (itemHandlerOpt.isPresent()) { - ItemTransferable itemHandler = itemHandlerOpt.orElse(null); - return Objects.hash(target, itemHandler, itemHandler.getSlots()); + FixedItemInv itemHandler = itemHandlerOpt.orElse(null); + return Objects.hash(target, itemHandler, itemHandler.getSlotCount()); } return 0; diff --git a/src/main/java/appeng/parts/p2p/ItemP2PTunnelPart.java b/src/main/java/appeng/parts/p2p/ItemP2PTunnelPart.java index b857ba33e..112051521 100644 --- a/src/main/java/appeng/parts/p2p/ItemP2PTunnelPart.java +++ b/src/main/java/appeng/parts/p2p/ItemP2PTunnelPart.java @@ -23,7 +23,7 @@ import java.util.List; import javax.annotation.Nonnull; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import alexiil.mc.lib.attributes.item.impl.EmptyFixedItemInv; import net.minecraft.block.entity.BlockEntity; import net.minecraft.item.ItemStack; @@ -50,7 +50,7 @@ import appeng.me.cache.helpers.TunnelCollection; import appeng.util.Platform; import appeng.util.inv.WrapperChainedItemHandler; -public class ItemP2PTunnelPart extends P2PTunnelPart implements ItemTransferable, IGridTickable { +public class ItemP2PTunnelPart extends P2PTunnelPart implements FixedItemInv, IGridTickable { private static final float POWER_DRAIN = 2.0f; private static final P2PModels MODELS = new P2PModels("part/p2p/p2p_tunnel_items"); private boolean partVisited = false; @@ -62,7 +62,7 @@ public class ItemP2PTunnelPart extends P2PTunnelPart implemen private int oldSize = 0; private boolean requested; - private ItemTransferable cachedInv; + private FixedItemInv cachedInv; public ItemP2PTunnelPart(final ItemStack is) { super(is); @@ -77,14 +77,14 @@ public class ItemP2PTunnelPart extends P2PTunnelPart implemen } } - private ItemTransferable getDestination() { + private FixedItemInv getDestination() { this.requested = true; if (this.cachedInv != null) { return this.cachedInv; } - final List outs = new ArrayList(); + final List outs = new ArrayList(); final TunnelCollection itemTunnels; try { @@ -94,7 +94,7 @@ public class ItemP2PTunnelPart extends P2PTunnelPart implemen } for (final ItemP2PTunnelPart t : itemTunnels) { - final ItemTransferable inv = t.getOutputInv(); + final FixedItemInv inv = t.getOutputInv(); if (inv != null && inv != this) { if (Platform.getRandomInt() % 2 == 0) { outs.add(inv); @@ -104,11 +104,11 @@ public class ItemP2PTunnelPart extends P2PTunnelPart implemen } } - return this.cachedInv = new WrapperChainedItemHandler(outs.toArray(new ItemTransferable[outs.size()])); + return this.cachedInv = new WrapperChainedItemHandler(outs.toArray(new FixedItemInv[outs.size()])); } - private ItemTransferable getOutputInv() { - ItemTransferable ret = null; + private FixedItemInv getOutputInv() { + FixedItemInv ret = null; if (!this.partVisited) { this.partVisited = true; if (this.getProxy().isActive()) { @@ -147,7 +147,7 @@ public class ItemP2PTunnelPart extends P2PTunnelPart implemen if (!this.isOutput()) { this.cachedInv = null; final int olderSize = this.oldSize; - this.oldSize = this.getDestination().getSlots(); + this.oldSize = this.getDestination().getSlotCount(); if (olderSize != this.oldSize) { this.getHost().notifyNeighbors(); } @@ -159,7 +159,7 @@ public class ItemP2PTunnelPart extends P2PTunnelPart implemen if (!this.isOutput()) { this.cachedInv = null; final int olderSize = this.oldSize; - this.oldSize = this.getDestination().getSlots(); + this.oldSize = this.getDestination().getSlotCount(); if (olderSize != this.oldSize) { this.getHost().notifyNeighbors(); } @@ -171,7 +171,7 @@ public class ItemP2PTunnelPart extends P2PTunnelPart implemen if (!this.isOutput()) { this.cachedInv = null; final int olderSize = this.oldSize; - this.oldSize = this.getDestination().getSlots(); + this.oldSize = this.getDestination().getSlotCount(); if (olderSize != this.oldSize) { this.getHost().notifyNeighbors(); } @@ -183,7 +183,7 @@ public class ItemP2PTunnelPart extends P2PTunnelPart implemen if (!this.isOutput()) { this.cachedInv = null; final int olderSize = this.oldSize; - this.oldSize = this.getDestination().getSlots(); + this.oldSize = this.getDestination().getSlotCount(); if (olderSize != this.oldSize) { this.getHost().notifyNeighbors(); } @@ -207,7 +207,7 @@ public class ItemP2PTunnelPart extends P2PTunnelPart implemen @Override public int getSlots() { - return this.getDestination().getSlots(); + return this.getDestination().getSlotCount(); } @Override @@ -217,7 +217,7 @@ public class ItemP2PTunnelPart extends P2PTunnelPart implemen @Override public ItemStack getStackInSlot(final int i) { - return this.getDestination().getStackInSlot(i); + return this.getDestination().getInvStack(i); } @Override diff --git a/src/main/java/appeng/parts/p2p/P2PTunnelPart.java b/src/main/java/appeng/parts/p2p/P2PTunnelPart.java index 2842805a9..a43776ca1 100644 --- a/src/main/java/appeng/parts/p2p/P2PTunnelPart.java +++ b/src/main/java/appeng/parts/p2p/P2PTunnelPart.java @@ -173,7 +173,7 @@ public abstract class P2PTunnelPart extends BasicStateP final IMemoryCard mc = (IMemoryCard) is.getItem(); final CompoundTag data = mc.getData(is); - final ItemStack newType = ItemStack.read(data); + final ItemStack newType = ItemStack.fromTag(data); final short freq = data.getShort("freq"); if (!newType.isEmpty()) { @@ -312,7 +312,7 @@ public abstract class P2PTunnelPart extends BasicStateP final ItemStack p2pItem = this.getItemStack(PartItemStack.WRENCH); final String type = p2pItem.getTranslationKey(); - p2pItem.write(data); + p2pItem.toTag(data); data.putShort("freq", this.getFrequency()); final AEColor[] colors = Platform.p2p().toColors(this.getFrequency()); diff --git a/src/main/java/appeng/parts/reporting/AbstractMonitorPart.java b/src/main/java/appeng/parts/reporting/AbstractMonitorPart.java index 991015b09..fbf8e716a 100644 --- a/src/main/java/appeng/parts/reporting/AbstractMonitorPart.java +++ b/src/main/java/appeng/parts/reporting/AbstractMonitorPart.java @@ -178,7 +178,7 @@ public abstract class AbstractMonitorPart extends AbstractDisplayPart if (player.getStackInHand(hand).isEmpty()) { this.isLocked = !this.isLocked; - player.sendMessage((this.isLocked ? PlayerMessages.isNowLocked : PlayerMessages.isNowUnlocked).get()); + player.sendSystemMessage((this.isLocked ? PlayerMessages.isNowLocked : PlayerMessages.isNowUnlocked).get(), Util.NIL_UUID); this.getHost().markForSave(); this.getHost().markForUpdate(); } diff --git a/src/main/java/appeng/parts/reporting/AbstractReportingPart.java b/src/main/java/appeng/parts/reporting/AbstractReportingPart.java index 94358530c..ae1a83d85 100644 --- a/src/main/java/appeng/parts/reporting/AbstractReportingPart.java +++ b/src/main/java/appeng/parts/reporting/AbstractReportingPart.java @@ -209,7 +209,7 @@ public abstract class AbstractReportingPart extends AEBasePart implements IMonit final AEPartLocation side) { super.onPlacement(player, hand, held, side); - final byte rotation = (byte) (MathHelper.floor((player.rotationYaw * 4F) / 360F + 2.5D) & 3); + final byte rotation = (byte) (MathHelper.floor((player.yaw * 4F) / 360F + 2.5D) & 3); if (side == AEPartLocation.UP) { this.spin = rotation; } else if (side == AEPartLocation.DOWN) { diff --git a/src/main/java/appeng/parts/reporting/AbstractTerminalPart.java b/src/main/java/appeng/parts/reporting/AbstractTerminalPart.java index 788579d5d..fb7ed201f 100644 --- a/src/main/java/appeng/parts/reporting/AbstractTerminalPart.java +++ b/src/main/java/appeng/parts/reporting/AbstractTerminalPart.java @@ -20,7 +20,7 @@ package appeng.parts.reporting; import java.util.List; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.container.ContainerType; import net.minecraft.item.ItemStack; @@ -133,12 +133,12 @@ public abstract class AbstractTerminalPart extends AbstractDisplayPart } @Override - public ItemTransferable getViewCellStorage() { + public FixedItemInv getViewCellStorage() { return this.viewCell; } @Override - public void onChangeInventory(final ItemTransferable inv, final int slot, final InvOperation mc, + public void onChangeInventory(final FixedItemInv inv, final int slot, final InvOperation mc, final ItemStack removedStack, final ItemStack newStack) { this.getHost().markForSave(); } diff --git a/src/main/java/appeng/parts/reporting/ConversionMonitorPart.java b/src/main/java/appeng/parts/reporting/ConversionMonitorPart.java index f47097792..0f3270bb1 100644 --- a/src/main/java/appeng/parts/reporting/ConversionMonitorPart.java +++ b/src/main/java/appeng/parts/reporting/ConversionMonitorPart.java @@ -27,7 +27,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.Hand; import net.minecraft.util.Identifier; import net.minecraft.util.math.Vec3d; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraftforge.items.wrapper.PlayerMainInvWrapper; import appeng.api.AEApi; @@ -157,10 +157,10 @@ public class ConversionMonitorPart extends AbstractMonitorPart { if (allItems) { if (this.getDisplayed() != null) { final IAEItemStack input = this.getDisplayed().copy(); - ItemTransferable inv = new PlayerMainInvWrapper(player.inventory); + FixedItemInv inv = new PlayerMainInvWrapper(player.inventory); - for (int x = 0; x < inv.getSlots(); x++) { - final ItemStack targetStack = inv.getStackInSlot(x); + for (int x = 0; x < inv.getSlotCount(); x++) { + final ItemStack targetStack = inv.getInvStack(x); if (input.equals(targetStack)) { final ItemStack canExtract = inv.extractItem(x, targetStack.getCount(), true); if (!canExtract.isEmpty()) { diff --git a/src/main/java/appeng/parts/reporting/CraftingTerminalPart.java b/src/main/java/appeng/parts/reporting/CraftingTerminalPart.java index 42c45ac3d..3e5e29c6a 100644 --- a/src/main/java/appeng/parts/reporting/CraftingTerminalPart.java +++ b/src/main/java/appeng/parts/reporting/CraftingTerminalPart.java @@ -20,7 +20,7 @@ package appeng.parts.reporting; import java.util.List; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.container.ContainerType; import net.minecraft.item.ItemStack; @@ -88,7 +88,7 @@ public class CraftingTerminalPart extends AbstractTerminalPart { } @Override - public ItemTransferable getInventoryByName(final String name) { + public FixedItemInv getInventoryByName(final String name) { if (name.equals("crafting")) { return this.craftingGrid; } diff --git a/src/main/java/appeng/parts/reporting/PatternTerminalPart.java b/src/main/java/appeng/parts/reporting/PatternTerminalPart.java index bd56719c8..d238b46be 100644 --- a/src/main/java/appeng/parts/reporting/PatternTerminalPart.java +++ b/src/main/java/appeng/parts/reporting/PatternTerminalPart.java @@ -25,7 +25,7 @@ import net.minecraft.inventory.container.ContainerType; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundTag; import net.minecraft.util.Identifier; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import appeng.api.config.SecurityPermissions; import appeng.api.implementations.ICraftingPatternItem; @@ -103,7 +103,7 @@ public class PatternTerminalPart extends AbstractTerminalPart { } @Override - public void onChangeInventory(final ItemTransferable inv, final int slot, final InvOperation mc, + public void onChangeInventory(final FixedItemInv inv, final int slot, final InvOperation mc, final ItemStack removedStack, final ItemStack newStack) { if (inv == this.pattern && slot == 1) { final ItemStack is = this.pattern.getStackInSlot(1); @@ -162,7 +162,7 @@ public class PatternTerminalPart extends AbstractTerminalPart { } @Override - public ItemTransferable getInventoryByName(final String name) { + public FixedItemInv getInventoryByName(final String name) { if (name.equals("crafting")) { return this.crafting; } diff --git a/src/main/java/appeng/recipes/game/DisassembleRecipe.java b/src/main/java/appeng/recipes/game/DisassembleRecipe.java index d08af9ad8..e3c61c0b9 100644 --- a/src/main/java/appeng/recipes/game/DisassembleRecipe.java +++ b/src/main/java/appeng/recipes/game/DisassembleRecipe.java @@ -25,9 +25,9 @@ import java.util.Optional; import javax.annotation.Nonnull; import net.minecraft.inventory.CraftingInventory; -import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Inventory; import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipeSerializer; +import net.minecraft.recipe.RecipeSerializer; import net.minecraft.item.crafting.SpecialRecipe; import net.minecraft.item.crafting.SpecialRecipeSerializer; import net.minecraft.util.Identifier; @@ -46,7 +46,7 @@ import appeng.api.storage.data.IItemList; import appeng.core.AppEng; public final class DisassembleRecipe extends SpecialRecipe { - public static final IRecipeSerializer SERIALIZER = new SpecialRecipeSerializer<>( + public static final RecipeSerializer SERIALIZER = new SpecialRecipeSerializer<>( DisassembleRecipe::new); static { @@ -87,11 +87,11 @@ public final class DisassembleRecipe extends SpecialRecipe { } @Nonnull - private ItemStack getOutput(final IInventory inventory) { + private ItemStack getOutput(final Inventory inventory) { int itemCount = 0; ItemStack output = MISMATCHED_STACK; - for (int slotIndex = 0; slotIndex < inventory.getSizeInventory(); slotIndex++) { + for (int slotIndex = 0; slotIndex < inventory.size(); slotIndex++) { final ItemStack stackInSlot = inventory.getStackInSlot(slotIndex); if (!stackInSlot.isEmpty()) { // needs a single input in the recipe @@ -150,7 +150,7 @@ public final class DisassembleRecipe extends SpecialRecipe { @Nonnull @Override - public ItemStack getCraftingResult(@Nonnull final CraftingInventory inv) { + public ItemStack craft(@Nonnull final CraftingInventory inv) { return this.getOutput(inv); } @@ -161,7 +161,7 @@ public final class DisassembleRecipe extends SpecialRecipe { @Nonnull @Override - public IRecipeSerializer getSerializer() { + public RecipeSerializer getSerializer() { return SERIALIZER; } diff --git a/src/main/java/appeng/recipes/game/FacadeRecipe.java b/src/main/java/appeng/recipes/game/FacadeRecipe.java index c161ce811..41c062022 100644 --- a/src/main/java/appeng/recipes/game/FacadeRecipe.java +++ b/src/main/java/appeng/recipes/game/FacadeRecipe.java @@ -21,9 +21,9 @@ package appeng.recipes.game; import javax.annotation.Nonnull; import net.minecraft.inventory.CraftingInventory; -import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Inventory; import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipeSerializer; +import net.minecraft.recipe.RecipeSerializer; import net.minecraft.item.crafting.SpecialRecipe; import net.minecraft.item.crafting.SpecialRecipeSerializer; import net.minecraft.util.Identifier; @@ -55,7 +55,7 @@ public final class FacadeRecipe extends SpecialRecipe { } @Nonnull - private ItemStack getOutput(final IInventory inv, final boolean createFacade) { + private ItemStack getOutput(final Inventory inv, final boolean createFacade) { if (inv.getStackInSlot(0).isEmpty() && inv.getStackInSlot(2).isEmpty() && inv.getStackInSlot(6).isEmpty() && inv.getStackInSlot(8).isEmpty()) { if (this.anchor.isSameAs(inv.getStackInSlot(1)) && this.anchor.isSameAs(inv.getStackInSlot(3)) @@ -72,7 +72,7 @@ public final class FacadeRecipe extends SpecialRecipe { } @Override - public ItemStack getCraftingResult(@Nonnull final CraftingInventory inv) { + public ItemStack craft(@Nonnull final CraftingInventory inv) { return this.getOutput(inv, true); } @@ -83,11 +83,11 @@ public final class FacadeRecipe extends SpecialRecipe { @Nonnull @Override - public IRecipeSerializer getSerializer() { + public RecipeSerializer getSerializer() { return getSerializer(facade); } - public static IRecipeSerializer getSerializer(FacadeItem facade) { + public static RecipeSerializer getSerializer(FacadeItem facade) { if (SERIALIZER == null) { SERIALIZER = new SpecialRecipeSerializer<>(id -> new FacadeRecipe(id, facade)); SERIALIZER.setRegistryName(new Identifier(AppEng.MOD_ID, "facade")); diff --git a/src/main/java/appeng/recipes/handlers/GrinderRecipe.java b/src/main/java/appeng/recipes/handlers/GrinderRecipe.java index 4db2c837a..06a4bed83 100644 --- a/src/main/java/appeng/recipes/handlers/GrinderRecipe.java +++ b/src/main/java/appeng/recipes/handlers/GrinderRecipe.java @@ -4,19 +4,19 @@ import java.util.List; import com.google.common.collect.ImmutableList; -import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Inventory; import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.item.crafting.IRecipeType; -import net.minecraft.item.crafting.Ingredient; +import net.minecraft.recipe.RecipeType; +import net.minecraft.recipe.Ingredient; +import net.minecraft.recipe.Recipe; +import net.minecraft.recipe.RecipeSerializer; import net.minecraft.util.Identifier; import net.minecraft.util.NonNullList; import net.minecraft.world.World; -public class GrinderRecipe implements IRecipe { +public class GrinderRecipe implements Recipe { - public static IRecipeType TYPE; + public static RecipeType TYPE; private final Identifier id; private final String group; @@ -43,12 +43,12 @@ public class GrinderRecipe implements IRecipe { } @Override - public boolean matches(IInventory inv, World worldIn) { + public boolean matches(Inventory inv, World worldIn) { return this.ingredient.test(inv.getStackInSlot(0)); } @Override - public ItemStack getCraftingResult(IInventory inv) { + public ItemStack craft(Inventory inv) { // FIXME: What about secondary output return this.result.copy(); } @@ -69,12 +69,12 @@ public class GrinderRecipe implements IRecipe { } @Override - public IRecipeSerializer getSerializer() { + public RecipeSerializer getSerializer() { return GrinderRecipeSerializer.INSTANCE; } @Override - public IRecipeType getType() { + public RecipeType getType() { return TYPE; } diff --git a/src/main/java/appeng/recipes/handlers/GrinderRecipeSerializer.java b/src/main/java/appeng/recipes/handlers/GrinderRecipeSerializer.java index 2fcfa2aa2..6ba2bbc60 100644 --- a/src/main/java/appeng/recipes/handlers/GrinderRecipeSerializer.java +++ b/src/main/java/appeng/recipes/handlers/GrinderRecipeSerializer.java @@ -11,8 +11,8 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.item.crafting.Ingredient; +import net.minecraft.recipe.Ingredient; +import net.minecraft.recipe.RecipeSerializer; import net.minecraft.item.crafting.ShapedRecipe; import net.minecraft.network.PacketByteBuf; import net.minecraft.util.Identifier; @@ -22,8 +22,8 @@ import net.minecraftforge.registries.ForgeRegistryEntry; import appeng.core.AEConfig; import appeng.core.AppEng; -public class GrinderRecipeSerializer extends ForgeRegistryEntry> - implements IRecipeSerializer { +public class GrinderRecipeSerializer extends ForgeRegistryEntry> + implements RecipeSerializer { public static final GrinderRecipeSerializer INSTANCE = new GrinderRecipeSerializer(); diff --git a/src/main/java/appeng/recipes/handlers/GrinderRecipes.java b/src/main/java/appeng/recipes/handlers/GrinderRecipes.java index 5ebe23a49..3b4ad7cb3 100644 --- a/src/main/java/appeng/recipes/handlers/GrinderRecipes.java +++ b/src/main/java/appeng/recipes/handlers/GrinderRecipes.java @@ -2,9 +2,9 @@ package appeng.recipes.handlers; import javax.annotation.Nullable; -import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Inventory; import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; +import net.minecraft.recipe.Recipe; import net.minecraft.world.World; public final class GrinderRecipes { @@ -18,7 +18,7 @@ public final class GrinderRecipes { */ @Nullable public static GrinderRecipe findForInput(World world, ItemStack input) { - for (IRecipe recipe : world.getRecipeManager().getRecipes(GrinderRecipe.TYPE).values()) { + for (Recipe recipe : world.getRecipeManager().getRecipes(GrinderRecipe.TYPE).values()) { GrinderRecipe grinderRecipe = (GrinderRecipe) recipe; if (grinderRecipe.getIngredient().test(input) && input.getCount() >= grinderRecipe.getIngredientCount()) { return grinderRecipe; @@ -32,7 +32,7 @@ public final class GrinderRecipes { * disregarding its current size. */ public static boolean isValidIngredient(World world, ItemStack stack) { - for (IRecipe recipe : world.getRecipeManager().getRecipes(GrinderRecipe.TYPE).values()) { + for (Recipe recipe : world.getRecipeManager().getRecipes(GrinderRecipe.TYPE).values()) { GrinderRecipe grinderRecipe = (GrinderRecipe) recipe; if (grinderRecipe.getIngredient().test(stack)) { return true; diff --git a/src/main/java/appeng/recipes/handlers/InscriberRecipe.java b/src/main/java/appeng/recipes/handlers/InscriberRecipe.java index 2e51fa07f..c6bac825c 100644 --- a/src/main/java/appeng/recipes/handlers/InscriberRecipe.java +++ b/src/main/java/appeng/recipes/handlers/InscriberRecipe.java @@ -1,20 +1,19 @@ package appeng.recipes.handlers; -import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Inventory; import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.item.crafting.IRecipeType; -import net.minecraft.item.crafting.Ingredient; +import net.minecraft.recipe.*; +import net.minecraft.recipe.Ingredient; +import net.minecraft.recipe.Recipe; import net.minecraft.util.NonNullList; import net.minecraft.util.Identifier; import net.minecraft.world.World; import appeng.api.features.InscriberProcessType; -public class InscriberRecipe implements IRecipe { +public class InscriberRecipe implements Recipe { - public static IRecipeType TYPE; + public static RecipeType TYPE; private final Identifier id; private final String group; @@ -37,12 +36,12 @@ public class InscriberRecipe implements IRecipe { } @Override - public boolean matches(IInventory inv, World worldIn) { + public boolean matches(Inventory inv, World worldIn) { return false; } @Override - public ItemStack getCraftingResult(IInventory inv) { + public ItemStack craft(Inventory inv) { return this.output.copy(); } @@ -62,12 +61,12 @@ public class InscriberRecipe implements IRecipe { } @Override - public IRecipeSerializer getSerializer() { + public RecipeSerializer getSerializer() { return InscriberRecipeSerializer.INSTANCE; } @Override - public IRecipeType getType() { + public RecipeType getType() { return TYPE; } diff --git a/src/main/java/appeng/recipes/handlers/InscriberRecipeSerializer.java b/src/main/java/appeng/recipes/handlers/InscriberRecipeSerializer.java index def67a1a8..ac662f8f4 100644 --- a/src/main/java/appeng/recipes/handlers/InscriberRecipeSerializer.java +++ b/src/main/java/appeng/recipes/handlers/InscriberRecipeSerializer.java @@ -5,8 +5,8 @@ import javax.annotation.Nullable; import com.google.gson.JsonObject; import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.item.crafting.Ingredient; +import net.minecraft.recipe.Ingredient; +import net.minecraft.recipe.RecipeSerializer; import net.minecraft.item.crafting.ShapedRecipe; import net.minecraft.network.PacketByteBuf; import net.minecraft.util.Identifier; @@ -16,8 +16,8 @@ import net.minecraftforge.registries.ForgeRegistryEntry; import appeng.api.features.InscriberProcessType; import appeng.core.AppEng; -public class InscriberRecipeSerializer extends ForgeRegistryEntry> - implements IRecipeSerializer { +public class InscriberRecipeSerializer extends ForgeRegistryEntry> + implements RecipeSerializer { public static final InscriberRecipeSerializer INSTANCE = new InscriberRecipeSerializer(); diff --git a/src/main/java/appeng/server/ServerHelper.java b/src/main/java/appeng/server/ServerHelper.java index 5cbdf3534..0a0e5cc23 100644 --- a/src/main/java/appeng/server/ServerHelper.java +++ b/src/main/java/appeng/server/ServerHelper.java @@ -74,15 +74,15 @@ public class ServerHelper extends CommonHelper { @Override public void sendToAllNearExcept(final PlayerEntity p, final double x, final double y, final double z, final double dist, final World w, final BasePacket packet) { - if (Platform.isClient()) { + if (w.isClient()) { return; } for (final PlayerEntity o : this.getPlayers()) { final ServerPlayerEntity entityplayermp = (ServerPlayerEntity) o; if (entityplayermp != p && entityplayermp.world == w) { - final double dX = x - entityplayermp.getPosX(); - final double dY = y - entityplayermp.getPosY(); - final double dZ = z - entityplayermp.getPosZ(); + final double dX = x - entityplayermp.getX(); + final double dY = y - entityplayermp.getY(); + final double dZ = z - entityplayermp.getZ(); if (dX * dX + dY * dY + dZ * dZ < dist * dist) { NetworkHandler.instance().sendTo(packet, entityplayermp); } @@ -133,7 +133,7 @@ public class ServerHelper extends CommonHelper { protected CableRenderMode renderModeForPlayer(final PlayerEntity player) { if (player != null) { for (int x = 0; x < PlayerInventory.getHotbarSize(); x++) { - final ItemStack is = player.inventory.getStackInSlot(x); + final ItemStack is = player.inventory.getStack(x); if (!is.isEmpty() && is.getItem() instanceof NetworkToolItem) { final CompoundTag c = is.getTag(); diff --git a/src/main/java/appeng/server/subcommands/TestMeteoritesCommand.java b/src/main/java/appeng/server/subcommands/TestMeteoritesCommand.java index bbf5e0b42..e863db785 100644 --- a/src/main/java/appeng/server/subcommands/TestMeteoritesCommand.java +++ b/src/main/java/appeng/server/subcommands/TestMeteoritesCommand.java @@ -33,11 +33,11 @@ import com.mojang.brigadier.exceptions.CommandSyntaxException; import net.minecraft.server.command.ServerCommandSource; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.MinecraftServer; +import net.minecraft.util.Formatting; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkPos; import net.minecraft.text.Text; import net.minecraft.text.LiteralText; -import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.event.ClickEvent; import net.minecraft.util.text.event.HoverEvent; import net.minecraft.world.chunk.ChunkStatus; @@ -84,7 +84,7 @@ public class TestMeteoritesCommand implements ISubCommand { BlockPos centerBlock; if (player != null) { world = player.getServerWorld(); - centerBlock = new BlockPos(player.getPosX(), 0, player.getPosZ()); + centerBlock = new BlockPos(player.getX(), 0, player.getPosZ()); } else { world = srv.getWorld(DimensionType.OVERWORLD); centerBlock = world.getSpawnPoint(); @@ -173,7 +173,7 @@ public class TestMeteoritesCommand implements ISubCommand { // Add a tooltip Text tooltip = new LiteralText(settings.toString() + "\nBiome: ") .append(world.getBiome(pos).getName()); - msg.applyTextStyle(style -> style.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, tooltip))); + msg.formatted(style -> style.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, tooltip))); sender.sendFeedback(msg, true); } @@ -191,8 +191,8 @@ public class TestMeteoritesCommand implements ISubCommand { String displayText = String.format(Locale.ROOT, "pos=%d,%d,%d", tpPos.getX(), tpPos.getY(), tpPos.getZ()); String tpCommand = String.format(Locale.ROOT, "/tp @s %d %d %d", tpPos.getX(), tpPos.getY(), tpPos.getZ()); - return new LiteralText(displayText).applyTextStyle(TextFormatting.UNDERLINE) - .applyTextStyle(style -> style.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, tpCommand))); + return new LiteralText(displayText).formatted(Formatting.UNDERLINE) + .formatted(style -> style.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, tpCommand))); } private static MeteoriteStructurePiece getMeteoritePieceFromChunk(IChunk chunk) { diff --git a/src/main/java/appeng/server/subcommands/TestOreGenCommand.java b/src/main/java/appeng/server/subcommands/TestOreGenCommand.java index 1ad1648dc..f76f1a7bc 100644 --- a/src/main/java/appeng/server/subcommands/TestOreGenCommand.java +++ b/src/main/java/appeng/server/subcommands/TestOreGenCommand.java @@ -66,7 +66,7 @@ public class TestOreGenCommand implements ISubCommand { try { ServerPlayerEntity player = sender.asPlayer(); world = player.getServerWorld(); - center = new BlockPos(player.getPosX(), 0, player.getPosZ()); + center = new BlockPos(player.getX(), 0, player.getPosZ()); } catch (CommandSyntaxException e) { world = srv.getWorld(DimensionType.OVERWORLD); center = world.getSpawnPoint(); diff --git a/src/main/java/appeng/spatial/StorageHelper.java b/src/main/java/appeng/spatial/StorageHelper.java index 9b01ea9c4..348e33657 100644 --- a/src/main/java/appeng/spatial/StorageHelper.java +++ b/src/main/java/appeng/spatial/StorageHelper.java @@ -161,21 +161,21 @@ public class StorageHelper { final List dstE = dstWorld.getEntitiesWithinAABB(Entity.class, dstBox); for (final Entity e : dstE) { - this.teleportEntity(e, new TelDestination(srcWorld, srcBox, e.getPosX(), e.getPosY(), e.getPosZ(), + this.teleportEntity(e, new TelDestination(srcWorld, srcBox, e.getX(), e.getY(), e.getZ(), -dstX + srcX, -dstY + srcY, -dstZ + srcZ)); } for (final Entity e : srcE) { - this.teleportEntity(e, new TelDestination(dstWorld, dstBox, e.getPosX(), e.getPosY(), e.getPosZ(), + this.teleportEntity(e, new TelDestination(dstWorld, dstBox, e.getX(), e.getY(), e.getZ(), -srcX + dstX, -srcY + dstY, -srcZ + dstZ)); } for (final WorldCoord wc : cDst.getUpdates()) { - cSrc.getWorld().notifyNeighborsOfStateChange(wc.getPos(), Blocks.AIR); + cSrc.getWorld().updateNeighborsAlways(wc.getPos(), Blocks.AIR); } for (final WorldCoord wc : cSrc.getUpdates()) { - cSrc.getWorld().notifyNeighborsOfStateChange(wc.getPos(), Blocks.AIR); + cSrc.getWorld().updateNeighborsAlways(wc.getPos(), Blocks.AIR); } this.transverseEdges(srcX - 1, srcY - 1, srcZ - 1, srcX + scaleX + 1, srcY + scaleY + 1, srcZ + scaleZ + 1, @@ -248,7 +248,7 @@ public class StorageHelper { public Entity placeEntity(Entity entity, ServerWorld currentWorld, ServerWorld destWorld, float yaw, Function repositionEntity) { Entity newEntity = repositionEntity.apply(false); - newEntity.rotationYaw = yaw; + newEntity.yaw = yaw; newEntity.setPositionAndUpdate(this.destination.x, this.destination.y, this.destination.z); newEntity.setMotion(0, 0, 0); return newEntity; diff --git a/src/main/java/appeng/tile/crafting/MolecularAssemblerBlockEntity.java b/src/main/java/appeng/tile/crafting/MolecularAssemblerBlockEntity.java index 2910bd526..c0979de64 100644 --- a/src/main/java/appeng/tile/crafting/MolecularAssemblerBlockEntity.java +++ b/src/main/java/appeng/tile/crafting/MolecularAssemblerBlockEntity.java @@ -23,9 +23,11 @@ import java.util.List; import javax.annotation.Nullable; +import appeng.util.*; import net.fabricmc.api.Environment; import net.minecraft.block.BlockState; import net.minecraft.block.entity.BlockEntity; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.CraftingInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundTag; @@ -37,7 +39,7 @@ import net.minecraft.world.World; import net.minecraft.server.world.ServerWorld; import net.fabricmc.api.EnvType; import net.minecraftforge.fml.hooks.BasicEventHooks; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import appeng.api.AEApi; import appeng.api.config.Actionable; @@ -71,10 +73,6 @@ import appeng.parts.automation.DefinitionUpgradeInventory; import appeng.parts.automation.UpgradeInventory; import appeng.tile.grid.AENetworkInvBlockEntity; import appeng.tile.inventory.AppEngInternalInventory; -import appeng.util.ConfigManager; -import appeng.util.IConfigManagerHost; -import appeng.util.InventoryAdaptor; -import appeng.util.Platform; import appeng.util.helpers.ItemHandlerUtil; import appeng.util.inv.InvOperation; import appeng.util.inv.WrapperChainedItemHandler; @@ -90,8 +88,8 @@ public class MolecularAssemblerBlockEntity extends AENetworkInvBlockEntity private final CraftingInventory craftingInv; private final AppEngInternalInventory gridInv = new AppEngInternalInventory(this, 9 + 1, 1); private final AppEngInternalInventory patternInv = new AppEngInternalInventory(this, 1, 1); - private final ItemTransferable gridInvExt = new WrapperFilteredItemHandler(this.gridInv, new CraftingGridFilter()); - private final ItemTransferable internalInv = new WrapperChainedItemHandler(this.gridInv, this.patternInv); + private final FixedItemInv gridInvExt = new WrapperFilteredItemHandler(this.gridInv, new CraftingGridFilter()); + private final FixedItemInv internalInv = new WrapperChainedItemHandler(this.gridInv, this.patternInv); private final IConfigManager settings; private final UpgradeInventory upgrades; private boolean isPowered = false; @@ -133,8 +131,8 @@ public class MolecularAssemblerBlockEntity extends AENetworkInvBlockEntity this.myPlan = patternDetails; this.pushDirection = AEPartLocation.fromFacing(where); - for (int x = 0; x < table.getSizeInventory(); x++) { - this.gridInv.setStackInSlot(x, table.getStackInSlot(x)); + for (int x = 0; x < table.size(); x++) { + this.gridInv.setStackInSlot(x, table.getStack(x)); } this.updateSleepiness(); @@ -170,8 +168,8 @@ public class MolecularAssemblerBlockEntity extends AENetworkInvBlockEntity return false; } - for (int x = 0; x < this.craftingInv.getSizeInventory(); x++) { - this.craftingInv.setInventorySlotContents(x, this.gridInv.getStackInSlot(x)); + for (int x = 0; x < this.craftingInv.size(); x++) { + this.craftingInv.setStack(x, this.gridInv.getStackInSlot(x)); } return !this.myPlan.getOutput(this.craftingInv, this.getWorld()).isEmpty(); @@ -208,7 +206,7 @@ public class MolecularAssemblerBlockEntity extends AENetworkInvBlockEntity final ItemStack pattern = this.myPlan.getPattern(); if (!pattern.isEmpty()) { final CompoundTag compound = new CompoundTag(); - pattern.write(compound); + pattern.toTag(compound); data.put("myPlan", compound); data.putInt("pushDirection", this.pushDirection.ordinal()); } @@ -223,7 +221,7 @@ public class MolecularAssemblerBlockEntity extends AENetworkInvBlockEntity public void fromTag(BlockState state, final CompoundTag data) { super.fromTag(state, data); if (data.contains("myPlan")) { - final ItemStack myPat = ItemStack.read(data.getCompound("myPlan")); + final ItemStack myPat = ItemStack.fromTag(data.getCompound("myPlan")); if (!myPat.isEmpty() && myPat.getItem() instanceof EncodedPatternItem) { final World w = this.getWorld(); @@ -290,7 +288,7 @@ public class MolecularAssemblerBlockEntity extends AENetworkInvBlockEntity } @Override - public ItemTransferable getInventoryByName(final String name) { + public FixedItemInv getInventoryByName(final String name) { if (name.equals("upgrades")) { return this.upgrades; } @@ -308,17 +306,17 @@ public class MolecularAssemblerBlockEntity extends AENetworkInvBlockEntity } @Override - public ItemTransferable getInternalInventory() { + public FixedItemInv getInternalInventory() { return this.internalInv; } @Override - protected ItemTransferable getItemHandlerForSide(Direction side) { + protected FixedItemInv getItemHandlerForSide(Direction side) { return this.gridInvExt; } @Override - public void onChangeInventory(final ItemTransferable inv, final int slot, final InvOperation mc, + public void onChangeInventory(final FixedItemInv inv, final int slot, final InvOperation mc, final ItemStack removed, final ItemStack added) { if (inv == this.gridInv || inv == this.patternInv) { this.recalculatePlan(); @@ -401,20 +399,20 @@ public class MolecularAssemblerBlockEntity extends AENetworkInvBlockEntity } if (this.progress >= 100) { - for (int x = 0; x < this.craftingInv.getSizeInventory(); x++) { - this.craftingInv.setInventorySlotContents(x, this.gridInv.getStackInSlot(x)); + for (int x = 0; x < this.craftingInv.size(); x++) { + this.craftingInv.setStack(x, this.gridInv.getStackInSlot(x)); } this.progress = 0; final ItemStack output = this.myPlan.getOutput(this.craftingInv, this.getWorld()); if (!output.isEmpty()) { - BasicEventHooks.firePlayerCraftingEvent(Platform.getPlayer((ServerWorld) this.getWorld()), output, + BasicEventHooks.firePlayerCraftingEvent((PlayerEntity) FakePlayer.getOrCreate((ServerWorld) this.getWorld()), output, this.craftingInv); this.pushOut(output.copy()); - for (int x = 0; x < this.craftingInv.getSizeInventory(); x++) { - this.gridInv.setStackInSlot(x, Platform.getContainerItem(this.craftingInv.getStackInSlot(x))); + for (int x = 0; x < this.craftingInv.size(); x++) { + this.gridInv.setStackInSlot(x, Platform.getRecipeRemainder(this.craftingInv.getStack(x))); } if (ItemHandlerUtil.isEmpty(this.patternInv)) { @@ -561,12 +559,12 @@ public class MolecularAssemblerBlockEntity extends AENetworkInvBlockEntity } @Override - public boolean allowExtract(ItemTransferable inv, int slot, int amount) { + public boolean allowExtract(FixedItemInv inv, int slot, int amount) { return slot == 9; } @Override - public boolean allowInsert(ItemTransferable inv, int slot, ItemStack stack) { + public boolean allowInsert(FixedItemInv inv, int slot, ItemStack stack) { if (slot >= 9) { return false; } diff --git a/src/main/java/appeng/tile/grindstone/GrinderBlockEntity.java b/src/main/java/appeng/tile/grindstone/GrinderBlockEntity.java index 5a232a760..58d05a150 100644 --- a/src/main/java/appeng/tile/grindstone/GrinderBlockEntity.java +++ b/src/main/java/appeng/tile/grindstone/GrinderBlockEntity.java @@ -21,7 +21,7 @@ package appeng.tile.grindstone; import java.util.ArrayList; import java.util.List; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.block.BlockState; import net.minecraft.item.ItemStack; import net.minecraft.block.entity.BlockEntityType; @@ -36,7 +36,7 @@ import appeng.tile.AEBaseInvBlockEntity; import appeng.tile.inventory.AppEngInternalInventory; import appeng.util.InventoryAdaptor; import appeng.util.Platform; -import appeng.util.inv.AdaptorItemHandler; +import appeng.util.inv.AdaptorFixedInv; import appeng.util.inv.InvOperation; import appeng.util.inv.WrapperFilteredItemHandler; import appeng.util.inv.filter.IAEItemFilter; @@ -45,7 +45,7 @@ public class GrinderBlockEntity extends AEBaseInvBlockEntity implements ICrankab private static final int SLOT_PROCESSING = 6; private final AppEngInternalInventory inv = new AppEngInternalInventory(this, 7); - private final ItemTransferable invExt = new WrapperFilteredItemHandler(this.inv, new GrinderFilter()); + private final FixedItemInv invExt = new WrapperFilteredItemHandler(this.inv, new GrinderFilter()); private int points; public GrinderBlockEntity(BlockEntityType tileEntityTypeIn) { @@ -60,17 +60,17 @@ public class GrinderBlockEntity extends AEBaseInvBlockEntity implements ICrankab } @Override - public ItemTransferable getInternalInventory() { + public FixedItemInv getInternalInventory() { return this.inv; } @Override - protected ItemTransferable getItemHandlerForSide(Direction side) { + protected FixedItemInv getItemHandlerForSide(Direction side) { return this.invExt; } @Override - public void onChangeInventory(final ItemTransferable inv, final int slot, final InvOperation mc, + public void onChangeInventory(final FixedItemInv inv, final int slot, final InvOperation mc, final ItemStack removed, final ItemStack added) { } @@ -125,7 +125,7 @@ public class GrinderBlockEntity extends AEBaseInvBlockEntity implements ICrankab } this.points = 0; - final InventoryAdaptor sia = new AdaptorItemHandler(new RangedWrapper(this.inv, 3, 6)); + final InventoryAdaptor sia = new AdaptorFixedInv(new RangedWrapper(this.inv, 3, 6)); this.addItem(sia, r.getRecipeOutput()); @@ -162,12 +162,12 @@ public class GrinderBlockEntity extends AEBaseInvBlockEntity implements ICrankab private class GrinderFilter implements IAEItemFilter { @Override - public boolean allowExtract(ItemTransferable inv, int slotIndex, int amount) { + public boolean allowExtract(FixedItemInv inv, int slotIndex, int amount) { return slotIndex >= 3 && slotIndex <= 5; } @Override - public boolean allowInsert(ItemTransferable inv, int slotIndex, ItemStack stack) { + public boolean allowInsert(FixedItemInv inv, int slotIndex, ItemStack stack) { if (!GrinderRecipes.isValidIngredient(world, stack)) { return false; } diff --git a/src/main/java/appeng/tile/inventory/AppEngInternalAEInventory.java b/src/main/java/appeng/tile/inventory/AppEngInternalAEInventory.java index bbd0b61f2..11aed0aa8 100644 --- a/src/main/java/appeng/tile/inventory/AppEngInternalAEInventory.java +++ b/src/main/java/appeng/tile/inventory/AppEngInternalAEInventory.java @@ -146,14 +146,14 @@ public class AppEngInternalAEInventory implements IItemHandlerModifiable, Iterab if (!simulate) { if (existing.isEmpty()) { this.inv[slot] = AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class) - .createStack(reachedLimit ? ItemHandlerHelper.copyStackWithSize(stack, limit) : stack); + .createStack(reachedLimit ? Platform.copyStackWithSize(stack, limit) : stack); } else { - existing.grow(reachedLimit ? limit : stack.getCount()); + existing.increment(reachedLimit ? limit : stack.getCount()); } this.fireOnChangeInventory(slot, InvOperation.INSERT, ItemStack.EMPTY, - reachedLimit ? ItemHandlerHelper.copyStackWithSize(stack, limit) : stack); + reachedLimit ? Platform.copyStackWithSize(stack, limit) : stack); } - return reachedLimit ? ItemHandlerHelper.copyStackWithSize(stack, stack.getCount() - limit) : ItemStack.EMPTY; + return reachedLimit ? Platform.copyStackWithSize(stack, stack.getCount() - limit) : ItemStack.EMPTY; } @Override @@ -169,11 +169,11 @@ public class AppEngInternalAEInventory implements IItemHandlerModifiable, Iterab return split; } else { if (!simulate) { - split.grow(-amount); + split.increment(-amount); this.fireOnChangeInventory(slot, InvOperation.EXTRACT, - ItemHandlerHelper.copyStackWithSize(split, amount), ItemStack.EMPTY); + Platform.copyStackWithSize(split, amount), ItemStack.EMPTY); } - return ItemHandlerHelper.copyStackWithSize(split, amount); + return Platform.copyStackWithSize(split, amount); } } return ItemStack.EMPTY; diff --git a/src/main/java/appeng/tile/misc/CellWorkbenchBlockEntity.java b/src/main/java/appeng/tile/misc/CellWorkbenchBlockEntity.java index 6d0288317..e8067ff9b 100644 --- a/src/main/java/appeng/tile/misc/CellWorkbenchBlockEntity.java +++ b/src/main/java/appeng/tile/misc/CellWorkbenchBlockEntity.java @@ -20,7 +20,7 @@ package appeng.tile.misc; import java.util.List; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.block.BlockState; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundTag; @@ -50,8 +50,8 @@ public class CellWorkbenchBlockEntity extends AEBaseBlockEntity private final AppEngInternalAEInventory config = new AppEngInternalAEInventory(this, 63); private final ConfigManager manager = new ConfigManager(this); - private ItemTransferable cacheUpgrades = null; - private ItemTransferable cacheConfig = null; + private FixedItemInv cacheUpgrades = null; + private FixedItemInv cacheConfig = null; private boolean locked = false; public CellWorkbenchBlockEntity(BlockEntityType tileEntityTypeIn) { @@ -60,7 +60,7 @@ public class CellWorkbenchBlockEntity extends AEBaseBlockEntity this.cell.setEnableClientEvents(true); } - public ItemTransferable getCellUpgradeInventory() { + public FixedItemInv getCellUpgradeInventory() { if (this.cacheUpgrades == null) { final ICellWorkbenchItem cell = this.getCell(); if (cell == null) { @@ -72,7 +72,7 @@ public class CellWorkbenchBlockEntity extends AEBaseBlockEntity return null; } - final ItemTransferable inv = cell.getUpgradesInventory(is); + final FixedItemInv inv = cell.getUpgradesInventory(is); if (inv == null) { return null; } @@ -112,7 +112,7 @@ public class CellWorkbenchBlockEntity extends AEBaseBlockEntity } @Override - public ItemTransferable getInventoryByName(final String name) { + public FixedItemInv getInventoryByName(final String name) { if (name.equals("config")) { return this.config; } @@ -130,7 +130,7 @@ public class CellWorkbenchBlockEntity extends AEBaseBlockEntity } @Override - public void onChangeInventory(final ItemTransferable inv, final int slot, final InvOperation mc, + public void onChangeInventory(final FixedItemInv inv, final int slot, final InvOperation mc, final ItemStack removedStack, final ItemStack newStack) { if (inv == this.cell && !this.locked) { this.locked = true; @@ -138,11 +138,11 @@ public class CellWorkbenchBlockEntity extends AEBaseBlockEntity this.cacheUpgrades = null; this.cacheConfig = null; - final ItemTransferable configInventory = this.getCellConfigInventory(); + final FixedItemInv configInventory = this.getCellConfigInventory(); if (configInventory != null) { boolean cellHasConfig = false; - for (int x = 0; x < configInventory.getSlots(); x++) { - if (!configInventory.getStackInSlot(x).isEmpty()) { + for (int x = 0; x < configInventory.getSlotCount(); x++) { + if (!configInventory.getInvStack(x).isEmpty()) { cellHasConfig = true; break; } @@ -150,7 +150,7 @@ public class CellWorkbenchBlockEntity extends AEBaseBlockEntity if (cellHasConfig) { for (int x = 0; x < this.config.getSlots(); x++) { - this.config.setStackInSlot(x, configInventory.getStackInSlot(x)); + this.config.setStackInSlot(x, configInventory.getInvStack(x)); } } else { ItemHandlerUtil.copy(this.config, configInventory, false); @@ -166,7 +166,7 @@ public class CellWorkbenchBlockEntity extends AEBaseBlockEntity this.locked = false; } else if (inv == this.config && !this.locked) { this.locked = true; - final ItemTransferable c = this.getCellConfigInventory(); + final FixedItemInv c = this.getCellConfigInventory(); if (c != null) { ItemHandlerUtil.copy(this.config, c, false); // copy items back. The ConfigInventory may changed the items on insert @@ -176,7 +176,7 @@ public class CellWorkbenchBlockEntity extends AEBaseBlockEntity } } - private ItemTransferable getCellConfigInventory() { + private FixedItemInv getCellConfigInventory() { if (this.cacheConfig == null) { final ICellWorkbenchItem cell = this.getCell(); if (cell == null) { @@ -188,7 +188,7 @@ public class CellWorkbenchBlockEntity extends AEBaseBlockEntity return null; } - final ItemTransferable inv = cell.getConfigInventory(is); + final FixedItemInv inv = cell.getConfigInventory(is); if (inv == null) { return null; } diff --git a/src/main/java/appeng/tile/misc/ChargerBlockEntity.java b/src/main/java/appeng/tile/misc/ChargerBlockEntity.java index fff83f645..f980190d9 100644 --- a/src/main/java/appeng/tile/misc/ChargerBlockEntity.java +++ b/src/main/java/appeng/tile/misc/ChargerBlockEntity.java @@ -28,7 +28,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.network.PacketByteBuf; import net.minecraft.util.math.Direction; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import appeng.api.AEApi; import appeng.api.config.Actionable; @@ -132,12 +132,12 @@ public class ChargerBlockEntity extends AENetworkPowerBlockEntity implements ICr } @Override - public ItemTransferable getInternalInventory() { + public FixedItemInv getInternalInventory() { return this.inv; } @Override - public void onChangeInventory(final ItemTransferable inv, final int slot, final InvOperation mc, + public void onChangeInventory(final FixedItemInv inv, final int slot, final InvOperation mc, final ItemStack removed, final ItemStack added) { try { this.getProxy().getTick().wakeDevice(this.getProxy().getNode()); @@ -253,15 +253,15 @@ public class ChargerBlockEntity extends AENetworkPowerBlockEntity implements ICr private class ChargerInvFilter implements IAEItemFilter { @Override - public boolean allowInsert(ItemTransferable inv, final int i, final ItemStack itemstack) { + public boolean allowInsert(FixedItemInv inv, final int i, final ItemStack itemstack) { final IItemDefinition cert = AEApi.instance().definitions().materials().certusQuartzCrystal(); return Platform.isChargeable(itemstack) || cert.isSameAs(itemstack); } @Override - public boolean allowExtract(ItemTransferable inv, final int slotIndex, int amount) { - ItemStack extractedItem = inv.getStackInSlot(slotIndex); + public boolean allowExtract(FixedItemInv inv, final int slotIndex, int amount) { + ItemStack extractedItem = inv.getInvStack(slotIndex); if (Platform.isChargeable(extractedItem)) { final IAEItemPowerStorage ips = (IAEItemPowerStorage) extractedItem.getItem(); diff --git a/src/main/java/appeng/tile/misc/CondenserBlockEntity.java b/src/main/java/appeng/tile/misc/CondenserBlockEntity.java index e5bd917c6..8d10fd527 100644 --- a/src/main/java/appeng/tile/misc/CondenserBlockEntity.java +++ b/src/main/java/appeng/tile/misc/CondenserBlockEntity.java @@ -22,7 +22,7 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; import alexiil.mc.lib.attributes.fluid.volume.FluidVolume; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.block.BlockState; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundTag; @@ -70,13 +70,13 @@ public class CondenserBlockEntity extends AEBaseInvBlockEntity implements IConfi private final AppEngInternalInventory outputSlot = new AppEngInternalInventory(this, 1); private final AppEngInternalInventory storageSlot = new AppEngInternalInventory(this, 1); - private final ItemTransferable inputSlot = new CondenseItemHandler(); + private final FixedItemInv inputSlot = new CondenseItemHandler(); private final IFluidHandler fluidHandler = new FluidHandler(); private final MEHandler meHandler = new MEHandler(); - private final ItemTransferable externalInv = new WrapperChainedItemHandler(this.inputSlot, + private final FixedItemInv externalInv = new WrapperChainedItemHandler(this.inputSlot, new WrapperFilteredItemHandler(this.outputSlot, AEItemFilters.EXTRACT_ONLY)); - private final ItemTransferable combinedInv = new WrapperChainedItemHandler(this.inputSlot, this.outputSlot, + private final FixedItemInv combinedInv = new WrapperChainedItemHandler(this.inputSlot, this.outputSlot, this.storageSlot); private double storedPower = 0; @@ -143,7 +143,7 @@ public class CondenserBlockEntity extends AEBaseInvBlockEntity implements IConfi this.outputSlot.insertItem(0, output, false); } - ItemTransferable getOutputSlot() { + FixedItemInv getOutputSlot() { return this.outputSlot; } @@ -168,12 +168,12 @@ public class CondenserBlockEntity extends AEBaseInvBlockEntity implements IConfi } @Override - public ItemTransferable getInternalInventory() { + public FixedItemInv getInternalInventory() { return this.combinedInv; } @Override - public void onChangeInventory(final ItemTransferable inv, final int slot, final InvOperation mc, + public void onChangeInventory(final FixedItemInv inv, final int slot, final InvOperation mc, final ItemStack removed, final ItemStack added) { if (inv == this.outputSlot) { this.meHandler.outputChanged(added, removed); @@ -211,7 +211,7 @@ public class CondenserBlockEntity extends AEBaseInvBlockEntity implements IConfi return super.getCapability(capability, facing); } - private class CondenseItemHandler implements ItemTransferable { + private class CondenseItemHandler implements FixedItemInv { @Override public int getSlots() { diff --git a/src/main/java/appeng/tile/misc/CondenserItemInventory.java b/src/main/java/appeng/tile/misc/CondenserItemInventory.java index 247a35435..02040bd22 100644 --- a/src/main/java/appeng/tile/misc/CondenserItemInventory.java +++ b/src/main/java/appeng/tile/misc/CondenserItemInventory.java @@ -63,7 +63,7 @@ class CondenserItemInventory implements IMEMonitor, ITickingMonito @Override public IAEItemStack extractItems(final IAEItemStack request, final Actionable mode, final IActionSource src) { AEItemStack ret = null; - ItemStack slotItem = this.target.getOutputSlot().getStackInSlot(0); + ItemStack slotItem = this.target.getOutputSlot().getInvStack(0); if (!slotItem.isEmpty() && request.isSameType(slotItem)) { int count = (int) Math.min(request.getStackSize(), Integer.MAX_VALUE); ret = AEItemStack @@ -74,8 +74,8 @@ class CondenserItemInventory implements IMEMonitor, ITickingMonito @Override public IItemList getAvailableItems(final IItemList out) { - if (!this.target.getOutputSlot().getStackInSlot(0).isEmpty()) { - out.add(AEItemStack.fromItemStack(this.target.getOutputSlot().getStackInSlot(0))); + if (!this.target.getOutputSlot().getInvStack(0).isEmpty()) { + out.add(AEItemStack.fromItemStack(this.target.getOutputSlot().getInvStack(0))); } return out; } diff --git a/src/main/java/appeng/tile/misc/InscriberBlockEntity.java b/src/main/java/appeng/tile/misc/InscriberBlockEntity.java index 8048259b9..26de66107 100644 --- a/src/main/java/appeng/tile/misc/InscriberBlockEntity.java +++ b/src/main/java/appeng/tile/misc/InscriberBlockEntity.java @@ -25,7 +25,7 @@ import java.util.List; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.block.BlockState; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundTag; @@ -90,9 +90,9 @@ public class InscriberBlockEntity extends AENetworkPowerBlockEntity private final AppEngInternalInventory bottomItemHandler = new AppEngInternalInventory(this, 1, 1); private final AppEngInternalInventory sideItemHandler = new AppEngInternalInventory(this, 2, 1); - private final ItemTransferable topItemHandlerExtern; - private final ItemTransferable bottomItemHandlerExtern; - private final ItemTransferable sideItemHandlerExtern; + private final FixedItemInv topItemHandlerExtern; + private final FixedItemInv bottomItemHandlerExtern; + private final FixedItemInv sideItemHandlerExtern; private InscriberRecipe cachedTask = null; @@ -207,12 +207,12 @@ public class InscriberBlockEntity extends AENetworkPowerBlockEntity } @Override - public ItemTransferable getInternalInventory() { + public FixedItemInv getInternalInventory() { return this.inv; } @Override - public void onChangeInventory(final ItemTransferable inv, final int slot, final InvOperation mc, + public void onChangeInventory(final FixedItemInv inv, final int slot, final InvOperation mc, final ItemStack removed, final ItemStack added) { try { if (slot == 0) { @@ -342,7 +342,7 @@ public class InscriberBlockEntity extends AENetworkPowerBlockEntity } @Override - public ItemTransferable getInventoryByName(final String name) { + public FixedItemInv getInventoryByName(final String name) { if (name.equals("inv")) { return this.getInternalInventory(); } @@ -355,7 +355,7 @@ public class InscriberBlockEntity extends AENetworkPowerBlockEntity } @Override - protected ItemTransferable getItemHandlerForSide(@Nonnull Direction facing) { + protected FixedItemInv getItemHandlerForSide(@Nonnull Direction facing) { if (facing == this.getUp()) { return this.topItemHandlerExtern; } else if (facing == this.getUp().getOpposite()) { @@ -411,7 +411,7 @@ public class InscriberBlockEntity extends AENetworkPowerBlockEntity */ private class ItemHandlerFilter implements IAEItemFilter { @Override - public boolean allowExtract(ItemTransferable inv, int slot, int amount) { + public boolean allowExtract(FixedItemInv inv, int slot, int amount) { if (InscriberBlockEntity.this.isSmash()) { return false; } @@ -421,7 +421,7 @@ public class InscriberBlockEntity extends AENetworkPowerBlockEntity } @Override - public boolean allowInsert(ItemTransferable inv, int slot, ItemStack stack) { + public boolean allowInsert(FixedItemInv inv, int slot, ItemStack stack) { // output slot if (slot == 1) { return false; diff --git a/src/main/java/appeng/tile/misc/InscriberRecipes.java b/src/main/java/appeng/tile/misc/InscriberRecipes.java index a133f9330..b4776e754 100644 --- a/src/main/java/appeng/tile/misc/InscriberRecipes.java +++ b/src/main/java/appeng/tile/misc/InscriberRecipes.java @@ -6,10 +6,10 @@ import javax.annotation.Nullable; import com.google.common.collect.Iterables; -import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Inventory; import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.item.crafting.Ingredient; +import net.minecraft.recipe.Ingredient; +import net.minecraft.recipe.Recipe; import net.minecraft.nbt.CompoundTag; import net.minecraft.text.LiteralText; import net.minecraft.util.Identifier; @@ -38,7 +38,7 @@ public final class InscriberRecipes { * Returns an unmodifiable view of all registered inscriber recipes. */ public static Iterable getRecipes(World world) { - Collection> unfilteredRecipes = world.getRecipeManager().getRecipes(InscriberRecipe.TYPE) + Collection> unfilteredRecipes = world.getRecipeManager().getRecipes(InscriberRecipe.TYPE) .values(); return Iterables.filter(unfilteredRecipes, InscriberRecipe.class); } diff --git a/src/main/java/appeng/tile/misc/InterfaceBlockEntity.java b/src/main/java/appeng/tile/misc/InterfaceBlockEntity.java index ab0a21327..5744634b0 100644 --- a/src/main/java/appeng/tile/misc/InterfaceBlockEntity.java +++ b/src/main/java/appeng/tile/misc/InterfaceBlockEntity.java @@ -39,7 +39,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.util.LazyOptional; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import appeng.api.AEApi; import appeng.api.config.Actionable; @@ -196,7 +196,7 @@ public class InterfaceBlockEntity extends AENetworkInvBlockEntity } @Override - public ItemTransferable getInventoryByName(final String name) { + public FixedItemInv getInventoryByName(final String name) { return this.duality.getInventoryByName(name); } @@ -211,12 +211,12 @@ public class InterfaceBlockEntity extends AENetworkInvBlockEntity } @Override - public ItemTransferable getInternalInventory() { + public FixedItemInv getInternalInventory() { return this.duality.getInternalInventory(); } @Override - public void onChangeInventory(final ItemTransferable inv, final int slot, final InvOperation mc, + public void onChangeInventory(final FixedItemInv inv, final int slot, final InvOperation mc, final ItemStack removed, final ItemStack added) { this.duality.onChangeInventory(inv, slot, mc, removed, added); } diff --git a/src/main/java/appeng/tile/misc/SecurityStationBlockEntity.java b/src/main/java/appeng/tile/misc/SecurityStationBlockEntity.java index e5dfacb3d..a9d262e8e 100644 --- a/src/main/java/appeng/tile/misc/SecurityStationBlockEntity.java +++ b/src/main/java/appeng/tile/misc/SecurityStationBlockEntity.java @@ -23,7 +23,7 @@ import java.util.EnumSet; import java.util.List; import java.util.Map; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.block.BlockState; import net.minecraft.block.entity.BlockEntityType; import net.minecraft.entity.player.PlayerEntity; @@ -110,7 +110,7 @@ public class SecurityStationBlockEntity extends AENetworkBlockEntity implements } @Override - public void onChangeInventory(final ItemTransferable inv, final int slot, final InvOperation mc, + public void onChangeInventory(final FixedItemInv inv, final int slot, final InvOperation mc, final ItemStack removedStack, final ItemStack newStack) { } @@ -163,7 +163,7 @@ public class SecurityStationBlockEntity extends AENetworkBlockEntity implements int offset = 0; for (final IAEItemStack ais : this.inventory.getStoredItems()) { final CompoundTag it = new CompoundTag(); - ais.createItemStack().write(it); + ais.createItemStack().toTag(it); storedItems.put(String.valueOf(offset), it); offset++; } @@ -187,7 +187,7 @@ public class SecurityStationBlockEntity extends AENetworkBlockEntity implements for (final Object key : storedItems.keySet()) { final INBT obj = storedItems.get((String) key); if (obj instanceof CompoundTag) { - this.inventory.getStoredItems().add(AEItemStack.fromItemStack(ItemStack.read((CompoundTag) obj))); + this.inventory.getStoredItems().add(AEItemStack.fromItemStack(ItemStack.fromTag((CompoundTag) obj))); } } } diff --git a/src/main/java/appeng/tile/misc/VibrationChamberBlockEntity.java b/src/main/java/appeng/tile/misc/VibrationChamberBlockEntity.java index e2abff2ec..fcc45ce46 100644 --- a/src/main/java/appeng/tile/misc/VibrationChamberBlockEntity.java +++ b/src/main/java/appeng/tile/misc/VibrationChamberBlockEntity.java @@ -22,7 +22,7 @@ import java.io.IOException; import javax.annotation.Nonnull; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.block.BlockState; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -56,7 +56,7 @@ public class VibrationChamberBlockEntity extends AENetworkInvBlockEntity impleme public static final int MAX_BURN_SPEED = 200; public static final double DILATION_SCALING = 25.0; // x4 ~ 40 AE/t at max private final AppEngInternalInventory inv = new AppEngInternalInventory(this, 1); - private final ItemTransferable invExt = new WrapperFilteredItemHandler(this.inv, new FuelSlotFilter()); + private final FixedItemInv invExt = new WrapperFilteredItemHandler(this.inv, new FuelSlotFilter()); private int burnSpeed = 100; private double burnTime = 0; @@ -110,17 +110,17 @@ public class VibrationChamberBlockEntity extends AENetworkInvBlockEntity impleme } @Override - protected ItemTransferable getItemHandlerForSide(@Nonnull Direction facing) { + protected FixedItemInv getItemHandlerForSide(@Nonnull Direction facing) { return this.invExt; } @Override - public ItemTransferable getInternalInventory() { + public FixedItemInv getInternalInventory() { return this.inv; } @Override - public void onChangeInventory(final ItemTransferable inv, final int slot, final InvOperation mc, + public void onChangeInventory(final FixedItemInv inv, final int slot, final InvOperation mc, final ItemStack removed, final ItemStack added) { if (this.getBurnTime() <= 0) { if (this.canEatFuel()) { @@ -217,7 +217,7 @@ public class VibrationChamberBlockEntity extends AENetworkInvBlockEntity impleme is.shrink(1); if (is.isEmpty()) { - this.inv.setStackInSlot(0, fuelItem.getContainerItem(is)); + this.inv.setStackInSlot(0, fuelItem.getRecipeRemainder(is)); } else { this.inv.setStackInSlot(0, is); } @@ -270,12 +270,12 @@ public class VibrationChamberBlockEntity extends AENetworkInvBlockEntity impleme private class FuelSlotFilter implements IAEItemFilter { @Override - public boolean allowExtract(ItemTransferable inv, int slot, int amount) { - return ForgeHooks.getBurnTime(inv.getStackInSlot(slot)) == 0; + public boolean allowExtract(FixedItemInv inv, int slot, int amount) { + return ForgeHooks.getBurnTime(inv.getInvStack(slot)) == 0; } @Override - public boolean allowInsert(ItemTransferable inv, int slot, ItemStack stack) { + public boolean allowInsert(FixedItemInv inv, int slot, ItemStack stack) { return ForgeHooks.getBurnTime(stack) != 0; } } diff --git a/src/main/java/appeng/tile/networking/CableBusBlockEntity.java b/src/main/java/appeng/tile/networking/CableBusBlockEntity.java index bef4a26d9..1839db548 100644 --- a/src/main/java/appeng/tile/networking/CableBusBlockEntity.java +++ b/src/main/java/appeng/tile/networking/CableBusBlockEntity.java @@ -280,7 +280,7 @@ public class CableBusBlockEntity extends AEBaseBlockEntity implements AEMultiTil @Override public void notifyNeighbors() { - if (this.world != null && this.world.isBlockLoaded(this.pos) && !CableBusContainer.isLoading()) { + if (this.world != null && this.world.isChunkLoaded(this.pos) && !CableBusContainer.isLoading()) { Platform.notifyBlocksOfNeighbors(this.world, this.pos); } } diff --git a/src/main/java/appeng/tile/networking/ControllerBlockEntity.java b/src/main/java/appeng/tile/networking/ControllerBlockEntity.java index a46de5c1d..139515e81 100644 --- a/src/main/java/appeng/tile/networking/ControllerBlockEntity.java +++ b/src/main/java/appeng/tile/networking/ControllerBlockEntity.java @@ -25,7 +25,7 @@ import net.minecraft.block.entity.BlockEntityType; import net.minecraft.util.math.Direction; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkPos; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import alexiil.mc.lib.attributes.item.impl.EmptyFixedItemInv; import appeng.api.config.Actionable; @@ -168,12 +168,12 @@ public class ControllerBlockEntity extends AENetworkPowerBlockEntity { } @Override - public ItemTransferable getInternalInventory() { + public FixedItemInv getInternalInventory() { return EmptyFixedItemInv.INSTANCE; } @Override - public void onChangeInventory(final ItemTransferable inv, final int slot, final InvOperation mc, + public void onChangeInventory(final FixedItemInv inv, final int slot, final InvOperation mc, final ItemStack removed, final ItemStack added) { } diff --git a/src/main/java/appeng/tile/networking/EnergyAcceptorBlockEntity.java b/src/main/java/appeng/tile/networking/EnergyAcceptorBlockEntity.java index 8618dfd52..edf7b493e 100644 --- a/src/main/java/appeng/tile/networking/EnergyAcceptorBlockEntity.java +++ b/src/main/java/appeng/tile/networking/EnergyAcceptorBlockEntity.java @@ -21,7 +21,7 @@ package appeng.tile.networking; import alexiil.mc.lib.attributes.item.impl.EmptyFixedItemInv; import net.minecraft.block.entity.BlockEntityType; import net.minecraft.item.ItemStack; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import appeng.api.config.Actionable; import appeng.api.networking.energy.IEnergyGrid; @@ -68,12 +68,12 @@ public class EnergyAcceptorBlockEntity extends AENetworkPowerBlockEntity { } @Override - public ItemTransferable getInternalInventory() { + public FixedItemInv getInternalInventory() { return EmptyFixedItemInv.INSTANCE; } @Override - public void onChangeInventory(final ItemTransferable inv, final int slot, final InvOperation mc, + public void onChangeInventory(final FixedItemInv inv, final int slot, final InvOperation mc, final ItemStack removed, final ItemStack added) { } diff --git a/src/main/java/appeng/tile/networking/WirelessBlockEntity.java b/src/main/java/appeng/tile/networking/WirelessBlockEntity.java index c0d83b180..115d0b4d3 100644 --- a/src/main/java/appeng/tile/networking/WirelessBlockEntity.java +++ b/src/main/java/appeng/tile/networking/WirelessBlockEntity.java @@ -21,7 +21,7 @@ package appeng.tile.networking; import java.io.IOException; import java.util.EnumSet; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.item.ItemStack; import net.minecraft.network.PacketByteBuf; import net.minecraft.block.entity.BlockEntityType; @@ -117,12 +117,12 @@ public class WirelessBlockEntity extends AENetworkInvBlockEntity implements IWir } @Override - public ItemTransferable getInternalInventory() { + public FixedItemInv getInternalInventory() { return this.inv; } @Override - public void onChangeInventory(final ItemTransferable inv, final int slot, final InvOperation mc, + public void onChangeInventory(final FixedItemInv inv, final int slot, final InvOperation mc, final ItemStack removed, final ItemStack added) { // :P } diff --git a/src/main/java/appeng/tile/qnb/QuantumBridgeBlockEntity.java b/src/main/java/appeng/tile/qnb/QuantumBridgeBlockEntity.java index 98877f4b9..cc5f803d7 100644 --- a/src/main/java/appeng/tile/qnb/QuantumBridgeBlockEntity.java +++ b/src/main/java/appeng/tile/qnb/QuantumBridgeBlockEntity.java @@ -24,7 +24,7 @@ import java.util.Optional; import javax.annotation.Nonnull; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.block.Block; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundTag; @@ -113,12 +113,12 @@ public class QuantumBridgeBlockEntity extends AENetworkInvBlockEntity implements } @Override - public ItemTransferable getInternalInventory() { + public FixedItemInv getInternalInventory() { return this.internalInventory; } @Override - public void onChangeInventory(final ItemTransferable inv, final int slot, final InvOperation mc, + public void onChangeInventory(final FixedItemInv inv, final int slot, final InvOperation mc, final ItemStack removed, final ItemStack added) { if (this.cluster != null) { this.cluster.updateStatus(true); @@ -126,7 +126,7 @@ public class QuantumBridgeBlockEntity extends AENetworkInvBlockEntity implements } @Override - protected ItemTransferable getItemHandlerForSide(Direction side) { + protected FixedItemInv getItemHandlerForSide(Direction side) { if (this.isCenter()) { return this.internalInventory; } diff --git a/src/main/java/appeng/tile/spatial/SpatialIOPortBlockEntity.java b/src/main/java/appeng/tile/spatial/SpatialIOPortBlockEntity.java index d657c70fb..12f8a22af 100644 --- a/src/main/java/appeng/tile/spatial/SpatialIOPortBlockEntity.java +++ b/src/main/java/appeng/tile/spatial/SpatialIOPortBlockEntity.java @@ -20,7 +20,7 @@ package appeng.tile.spatial; import javax.annotation.Nonnull; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.block.BlockState; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundTag; @@ -55,7 +55,7 @@ import appeng.util.inv.filter.IAEItemFilter; public class SpatialIOPortBlockEntity extends AENetworkInvBlockEntity implements IWorldCallable { private final AppEngInternalInventory inv = new AppEngInternalInventory(this, 2); - private final ItemTransferable invExt = new WrapperFilteredItemHandler(this.inv, new SpatialIOFilter()); + private final FixedItemInv invExt = new WrapperFilteredItemHandler(this.inv, new SpatialIOFilter()); private YesNo lastRedstoneState = YesNo.UNDECIDED; public SpatialIOPortBlockEntity(BlockEntityType tileEntityTypeIn) { @@ -161,29 +161,29 @@ public class SpatialIOPortBlockEntity extends AENetworkInvBlockEntity implements @Override protected @Nonnull - ItemTransferable getItemHandlerForSide(@Nonnull Direction side) { + FixedItemInv getItemHandlerForSide(@Nonnull Direction side) { return this.invExt; } @Override - public ItemTransferable getInternalInventory() { + public FixedItemInv getInternalInventory() { return this.inv; } @Override - public void onChangeInventory(final ItemTransferable inv, final int slot, final InvOperation mc, + public void onChangeInventory(final FixedItemInv inv, final int slot, final InvOperation mc, final ItemStack removed, final ItemStack added) { } private class SpatialIOFilter implements IAEItemFilter { @Override - public boolean allowExtract(ItemTransferable inv, int slot, int amount) { + public boolean allowExtract(FixedItemInv inv, int slot, int amount) { return slot == 1; } @Override - public boolean allowInsert(ItemTransferable inv, int slot, ItemStack stack) { + public boolean allowInsert(FixedItemInv inv, int slot, ItemStack stack) { return (slot == 0 && SpatialIOPortBlockEntity.this.isSpatialCell(stack)); } diff --git a/src/main/java/appeng/tile/storage/ChestBlockEntity.java b/src/main/java/appeng/tile/storage/ChestBlockEntity.java index 15f97e840..cd28c8e69 100644 --- a/src/main/java/appeng/tile/storage/ChestBlockEntity.java +++ b/src/main/java/appeng/tile/storage/ChestBlockEntity.java @@ -26,7 +26,7 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; import alexiil.mc.lib.attributes.fluid.volume.FluidVolume; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.block.BlockState; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.container.ContainerType; @@ -113,7 +113,7 @@ public class ChestBlockEntity extends AENetworkPowerBlockEntity implements IMEChest, ITerminalHost, IPriorityHost, IConfigManagerHost, IColorableTile, ITickableTileEntity { private final AppEngInternalInventory inputInventory = new AppEngInternalInventory(this, 1); private final AppEngInternalInventory cellInventory = new AppEngInternalInventory(this, 1); - private final ItemTransferable internalInventory = new WrapperChainedItemHandler(this.inputInventory, + private final FixedItemInv internalInventory = new WrapperChainedItemHandler(this.inputInventory, this.cellInventory); private final IActionSource mySrc = new MachineSource(this); @@ -425,12 +425,12 @@ public class ChestBlockEntity extends AENetworkPowerBlockEntity } @Override - public ItemTransferable getInternalInventory() { + public FixedItemInv getInternalInventory() { return this.internalInventory; } @Override - public void onChangeInventory(final ItemTransferable inv, final int slot, final InvOperation mc, + public void onChangeInventory(final FixedItemInv inv, final int slot, final InvOperation mc, final ItemStack removed, final ItemStack added) { if (inv == this.cellInventory) { this.cellHandler = null; @@ -456,7 +456,7 @@ public class ChestBlockEntity extends AENetworkPowerBlockEntity } @Override - protected ItemTransferable getItemHandlerForSide(@Nonnull Direction side) { + protected FixedItemInv getItemHandlerForSide(@Nonnull Direction side) { if (side == this.getForward()) { return this.cellInventory; } else { @@ -785,12 +785,12 @@ public class ChestBlockEntity extends AENetworkPowerBlockEntity private class InputInventoryFilter implements IAEItemFilter { @Override - public boolean allowExtract(ItemTransferable inv, int slot, int amount) { + public boolean allowExtract(FixedItemInv inv, int slot, int amount) { return false; } @Override - public boolean allowInsert(ItemTransferable inv, int slot, ItemStack stack) { + public boolean allowInsert(FixedItemInv inv, int slot, ItemStack stack) { if (ChestBlockEntity.this.isPowered()) { ChestBlockEntity.this.updateHandler(); return ChestBlockEntity.this.cellHandler != null && ChestBlockEntity.this.cellHandler @@ -803,12 +803,12 @@ public class ChestBlockEntity extends AENetworkPowerBlockEntity private static class CellInventoryFilter implements IAEItemFilter { @Override - public boolean allowExtract(ItemTransferable inv, int slot, int amount) { + public boolean allowExtract(FixedItemInv inv, int slot, int amount) { return true; } @Override - public boolean allowInsert(ItemTransferable inv, int slot, ItemStack stack) { + public boolean allowInsert(FixedItemInv inv, int slot, ItemStack stack) { return AEApi.instance().registries().cell().getHandler(stack) != null; } diff --git a/src/main/java/appeng/tile/storage/DriveBlockEntity.java b/src/main/java/appeng/tile/storage/DriveBlockEntity.java index 828d039d8..acd076e1b 100644 --- a/src/main/java/appeng/tile/storage/DriveBlockEntity.java +++ b/src/main/java/appeng/tile/storage/DriveBlockEntity.java @@ -29,7 +29,7 @@ import java.util.Map; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.block.BlockState; import net.minecraft.block.entity.BlockEntityType; import net.minecraft.inventory.container.ContainerType; @@ -304,12 +304,12 @@ public class DriveBlockEntity extends AENetworkInvBlockEntity implements IChestO } @Override - public ItemTransferable getInternalInventory() { + public FixedItemInv getInternalInventory() { return this.inv; } @Override - public void onChangeInventory(final ItemTransferable inv, final int slot, final InvOperation mc, + public void onChangeInventory(final FixedItemInv inv, final int slot, final InvOperation mc, final ItemStack removed, final ItemStack added) { if (this.isCached) { this.isCached = false; // recalculate the storage cell. @@ -422,12 +422,12 @@ public class DriveBlockEntity extends AENetworkInvBlockEntity implements IChestO private class CellValidInventoryFilter implements IAEItemFilter { @Override - public boolean allowExtract(ItemTransferable inv, int slot, int amount) { + public boolean allowExtract(FixedItemInv inv, int slot, int amount) { return true; } @Override - public boolean allowInsert(ItemTransferable inv, int slot, ItemStack stack) { + public boolean allowInsert(FixedItemInv inv, int slot, ItemStack stack) { return !stack.isEmpty() && AEApi.instance().registries().cell().isCellHandled(stack); } diff --git a/src/main/java/appeng/tile/storage/IOPortBlockEntity.java b/src/main/java/appeng/tile/storage/IOPortBlockEntity.java index 8e049681f..70135d4a6 100644 --- a/src/main/java/appeng/tile/storage/IOPortBlockEntity.java +++ b/src/main/java/appeng/tile/storage/IOPortBlockEntity.java @@ -22,7 +22,7 @@ import java.util.IdentityHashMap; import java.util.List; import java.util.Map; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.item.ItemStack; @@ -69,7 +69,7 @@ import appeng.util.IConfigManagerHost; import appeng.util.InventoryAdaptor; import appeng.util.Platform; import appeng.util.helpers.ItemHandlerUtil; -import appeng.util.inv.AdaptorItemHandler; +import appeng.util.inv.AdaptorFixedInv; import appeng.util.inv.InvOperation; import appeng.util.inv.WrapperChainedItemHandler; import appeng.util.inv.WrapperFilteredItemHandler; @@ -84,11 +84,11 @@ public class IOPortBlockEntity extends AENetworkInvBlockEntity private final AppEngInternalInventory inputCells = new AppEngInternalInventory(this, NUMBER_OF_CELL_SLOTS); private final AppEngInternalInventory outputCells = new AppEngInternalInventory(this, NUMBER_OF_CELL_SLOTS); - private final ItemTransferable combinedInventory = new WrapperChainedItemHandler(this.inputCells, this.outputCells); + private final FixedItemInv combinedInventory = new WrapperChainedItemHandler(this.inputCells, this.outputCells); - private final ItemTransferable inputCellsExt = new WrapperFilteredItemHandler(this.inputCells, + private final FixedItemInv inputCellsExt = new WrapperFilteredItemHandler(this.inputCells, AEItemFilters.INSERT_ONLY); - private final ItemTransferable outputCellsExt = new WrapperFilteredItemHandler(this.outputCells, + private final FixedItemInv outputCellsExt = new WrapperFilteredItemHandler(this.outputCells, AEItemFilters.EXTRACT_ONLY); private final UpgradeInventory upgrades; @@ -186,7 +186,7 @@ public class IOPortBlockEntity extends AENetworkInvBlockEntity } @Override - public ItemTransferable getInventoryByName(final String name) { + public FixedItemInv getInventoryByName(final String name) { if (name.equals("upgrades")) { return this.upgrades; } @@ -212,12 +212,12 @@ public class IOPortBlockEntity extends AENetworkInvBlockEntity } @Override - public ItemTransferable getInternalInventory() { + public FixedItemInv getInternalInventory() { return this.combinedInventory; } @Override - public void onChangeInventory(final ItemTransferable inv, final int slot, final InvOperation mc, + public void onChangeInventory(final FixedItemInv inv, final int slot, final InvOperation mc, final ItemStack removed, final ItemStack added) { if (this.inputCells == inv) { this.updateTask(); @@ -225,7 +225,7 @@ public class IOPortBlockEntity extends AENetworkInvBlockEntity } @Override - protected ItemTransferable getItemHandlerForSide(final Direction facing) { + protected FixedItemInv getItemHandlerForSide(final Direction facing) { if (facing == this.getUp() || facing == this.getUp().getOpposite()) { return this.inputCellsExt; } else { @@ -393,7 +393,7 @@ public class IOPortBlockEntity extends AENetworkInvBlockEntity } private boolean moveSlot(final int x) { - final InventoryAdaptor ad = new AdaptorItemHandler(this.outputCells); + final InventoryAdaptor ad = new AdaptorFixedInv(this.outputCells); if (ad.addItems(this.inputCells.getStackInSlot(x)).isEmpty()) { this.inputCells.setStackInSlot(x, ItemStack.EMPTY); return true; diff --git a/src/main/java/appeng/tile/storage/SkyChestBlockEntity.java b/src/main/java/appeng/tile/storage/SkyChestBlockEntity.java index d65fcc970..48d2da3d0 100644 --- a/src/main/java/appeng/tile/storage/SkyChestBlockEntity.java +++ b/src/main/java/appeng/tile/storage/SkyChestBlockEntity.java @@ -30,7 +30,7 @@ import net.minecraft.block.entity.BlockEntityType; import net.minecraft.util.SoundCategory; import net.minecraft.util.SoundEvents; import net.minecraft.util.math.MathHelper; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import appeng.block.storage.SkyChestBlock; import appeng.tile.AEBaseInvBlockEntity; @@ -77,7 +77,7 @@ public class SkyChestBlockEntity extends AEBaseInvBlockEntity implements ITickab } @Override - public ItemTransferable getInternalInventory() { + public FixedItemInv getInternalInventory() { return this.inv; } @@ -118,9 +118,9 @@ public class SkyChestBlockEntity extends AEBaseInvBlockEntity implements ITickab Block block = getCachedState().getBlock(); if (block instanceof SkyChestBlock) { this.world.addBlockEvent(this.pos, block, 1, this.numPlayersUsing); - this.world.notifyNeighborsOfStateChange(this.pos, block); + this.world.updateNeighborsAlways(this.pos, block); // FIXME: Uhm, we are we doing this? - this.world.notifyNeighborsOfStateChange(this.pos.down(), block); + this.world.updateNeighborsAlways(this.pos.down(), block); } } @@ -139,7 +139,7 @@ public class SkyChestBlockEntity extends AEBaseInvBlockEntity implements ITickab } @Override - public void onChangeInventory(final ItemTransferable inv, final int slot, final InvOperation mc, + public void onChangeInventory(final FixedItemInv inv, final int slot, final InvOperation mc, final ItemStack removed, final ItemStack added) { } diff --git a/src/main/java/appeng/util/BlockUpdate.java b/src/main/java/appeng/util/BlockUpdate.java index d08935bf9..f76d89001 100644 --- a/src/main/java/appeng/util/BlockUpdate.java +++ b/src/main/java/appeng/util/BlockUpdate.java @@ -31,8 +31,8 @@ public class BlockUpdate implements IWorldCallable { @Override public Boolean call(final World world) throws Exception { - if (world.isBlockLoaded(this.pos)) { - world.notifyNeighborsOfStateChange(this.pos, Blocks.AIR); + if (world.isChunkLoaded(this.pos)) { + world.updateNeighborsAlways(this.pos, Blocks.AIR); } return true; diff --git a/src/main/java/appeng/util/FakePlayer.java b/src/main/java/appeng/util/FakePlayer.java new file mode 100644 index 000000000..48ace2645 --- /dev/null +++ b/src/main/java/appeng/util/FakePlayer.java @@ -0,0 +1,57 @@ +package appeng.util; + +import com.mojang.authlib.GameProfile; +import io.netty.util.concurrent.CompleteFuture; +import io.netty.util.concurrent.Future; +import io.netty.util.concurrent.GenericFutureListener; +import io.netty.util.concurrent.SucceededFuture; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.network.ClientConnection; +import net.minecraft.network.NetworkSide; +import net.minecraft.network.Packet; +import net.minecraft.network.packet.c2s.play.ClientSettingsC2SPacket; +import net.minecraft.server.network.ServerPlayNetworkHandler; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.server.network.ServerPlayerInteractionManager; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.World; + +import javax.annotation.Nullable; +import java.util.Objects; +import java.util.UUID; +import java.util.WeakHashMap; + +public class FakePlayer extends ServerPlayerEntity { + private static final WeakHashMap FAKE_PLAYERS = new WeakHashMap<>(); + + private static final GameProfile PROFILE = new GameProfile(UUID.fromString("60C173A5-E1E6-4B87-85B1-272CE424521D"), "[AppEng2]"); + + private FakePlayer(ServerWorld world) { + super(world.getServer(), world, PROFILE, new ServerPlayerInteractionManager(world)); + } + + /** + * DO NOT COPY THE PLAYER ANYWHERE! + * It will keep the world alive, always call this method if you need it. + */ + public static FakePlayer getOrCreate(ServerWorld world) { + Objects.requireNonNull(world); + + final FakePlayer wrp = FAKE_PLAYERS.get(world); + if (wrp != null) { + return wrp; + } + + FakePlayer p = new FakePlayer(world); + FAKE_PLAYERS.put(world, p); + return p; + } + + @Override + public void tick() { + } + + // FIXME: We should probably find and override all methods that access the networkHandler + +} \ No newline at end of file diff --git a/src/main/java/appeng/util/InventoryAdaptor.java b/src/main/java/appeng/util/InventoryAdaptor.java index 0b5ff1110..ec2025b60 100644 --- a/src/main/java/appeng/util/InventoryAdaptor.java +++ b/src/main/java/appeng/util/InventoryAdaptor.java @@ -18,19 +18,18 @@ package appeng.util; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.util.math.Direction; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.items.CapabilityItemHandler; -import alexiil.mc.lib.attributes.item.ItemTransferable; - +import alexiil.mc.lib.attributes.SearchOptions; +import alexiil.mc.lib.attributes.item.FixedItemInv; +import alexiil.mc.lib.attributes.item.ItemAttributes; import appeng.api.config.FuzzyMode; -import appeng.util.inv.AdaptorItemHandler; +import appeng.util.inv.AdaptorFixedInv; import appeng.util.inv.AdaptorItemHandlerPlayerInv; import appeng.util.inv.IInventoryDestination; import appeng.util.inv.ItemSlot; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.util.math.Direction; /** * Universal Facade for other inventories. Used to conveniently interact with @@ -40,15 +39,14 @@ import appeng.util.inv.ItemSlot; */ public abstract class InventoryAdaptor implements Iterable { public static InventoryAdaptor getAdaptor(final BlockEntity te, final Direction d) { - if (te != null) { - LazyOptional cap = te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, d); - // Attempt getting an IItemHandler for the given side via caps - if (cap.isPresent()) { - return new AdaptorItemHandler(cap.orElseThrow(IllegalStateException::new)); - } + FixedItemInv inv = ItemAttributes.FIXED_INV.get(te.getWorld(), te.getPos().offset(d), SearchOptions.inDirection(d.getOpposite())); + + if (inv == ItemAttributes.FIXED_INV.defaultValue) { + return null; } - return null; + + return new AdaptorFixedInv(inv); } public static InventoryAdaptor getAdaptor(final PlayerEntity te) { @@ -65,10 +63,10 @@ public abstract class InventoryAdaptor implements Iterable { // return what was extracted. public abstract ItemStack removeSimilarItems(int amount, ItemStack filter, FuzzyMode fuzzyMode, - IInventoryDestination destination); + IInventoryDestination destination); public abstract ItemStack simulateSimilarRemove(int amount, ItemStack filter, FuzzyMode fuzzyMode, - IInventoryDestination destination); + IInventoryDestination destination); // return what isn't used... public abstract ItemStack addItems(ItemStack toBeAdded); diff --git a/src/main/java/appeng/util/Platform.java b/src/main/java/appeng/util/Platform.java index 60b7e760d..d82abd233 100644 --- a/src/main/java/appeng/util/Platform.java +++ b/src/main/java/appeng/util/Platform.java @@ -18,62 +18,9 @@ package appeng.util; -import java.text.DecimalFormat; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Objects; -import java.util.Random; -import java.util.WeakHashMap; - -import javax.annotation.Nullable; - -import com.google.common.base.Preconditions; -import com.google.common.collect.Iterables; - -import net.fabricmc.api.Environment; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.item.TooltipContext; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.inventory.CraftingInventory; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.util.Identifier; -import net.minecraft.util.math.*; -import net.minecraft.util.math.Box; -import net.minecraft.util.math.EntityRayTraceResult; -import net.minecraft.util.math.RayTraceContext; -import net.minecraft.util.hit.HitResult; -import net.minecraft.text.Text; -import net.minecraft.text.LiteralText; -import net.minecraft.util.text.TextFormatting; -import net.minecraft.text.TranslatableText; -import net.minecraft.world.World; -import net.minecraft.server.world.ServerWorld; -import net.fabricmc.api.EnvType; -import net.minecraftforge.common.util.FakePlayerFactory; import alexiil.mc.lib.attributes.fluid.volume.FluidVolume; -import net.minecraftforge.fml.ModList; -import net.minecraftforge.fml.common.thread.SidedThreadGroups; -import net.minecraftforge.fml.loading.FMLEnvironment; -import net.minecraftforge.registries.ForgeRegistries; - import appeng.api.AEApi; -import appeng.api.config.AccessRestriction; -import appeng.api.config.Actionable; -import appeng.api.config.PowerMultiplier; -import appeng.api.config.PowerUnits; -import appeng.api.config.SearchBoxMode; -import appeng.api.config.SecurityPermissions; -import appeng.api.config.SortOrder; +import appeng.api.config.*; import appeng.api.definitions.IItemDefinition; import appeng.api.definitions.IMaterials; import appeng.api.features.AEFeature; @@ -110,6 +57,42 @@ import appeng.util.helpers.ItemComparisonHelper; import appeng.util.helpers.P2PHelper; import appeng.util.item.AEItemStack; import appeng.util.prioritylist.IPartitionList; +import com.google.common.base.Preconditions; +import com.google.common.collect.Iterables; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.item.TooltipContext; +import net.minecraft.entity.Entity; +import net.minecraft.entity.ItemEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.inventory.CraftingInventory; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.recipe.Recipe; +import net.minecraft.server.integrated.IntegratedServer; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.text.LiteralText; +import net.minecraft.text.Text; +import net.minecraft.text.TranslatableText; +import net.minecraft.util.Formatting; +import net.minecraft.util.Identifier; +import net.minecraft.util.Util; +import net.minecraft.util.hit.EntityHitResult; +import net.minecraft.util.hit.HitResult; +import net.minecraft.util.math.*; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.RayTraceContext; +import net.minecraft.world.World; + +import javax.annotation.Nullable; +import java.text.DecimalFormat; +import java.util.*; /** * @author AlgorithmX2 @@ -121,13 +104,14 @@ public class Platform { public static final int DEF_OFFSET = 16; - private static final boolean CLIENT_INSTALL = FMLEnvironment.dist.isClient(); + private static final FabricLoader FABRIC = FabricLoader.getInstance(); + + private static final boolean CLIENT_INSTALL = FABRIC.getEnvironmentType() == EnvType.CLIENT; /* * random source, use it for item drop locations... */ private static final Random RANDOM_GENERATOR = new Random(); - private static final WeakHashMap FAKE_PLAYERS = new WeakHashMap<>(); private static final ItemComparisonHelper ITEM_COMPARISON_HELPER = new ItemComparisonHelper(); @@ -208,14 +192,17 @@ public class Platform { * @return True if client-side classes (such as Renderers) are available. */ public static boolean hasClientClasses() { - return FMLEnvironment.dist.isClient(); + return FABRIC.getEnvironmentType() == EnvType.CLIENT; } /* * returns true if the code is on the client. */ public static boolean isClient() { - return Thread.currentThread().getThreadGroup() != SidedThreadGroups.SERVER; + // FIXME: Move this to the proxy so it will work on a dedicated server + MinecraftClient client = MinecraftClient.getInstance(); + IntegratedServer server = client.getServer(); + return server == null || Thread.currentThread() != server.getThread(); } /* @@ -229,7 +216,7 @@ public class Platform { if (!dc.isInWorld(player.world)) { return false; } - return player.world.canMineBlockBody(player, dc.getPos()); + return player.world.canPlayerModifyAt(player, dc.getPos()); } public static boolean checkPermissions(final PlayerEntity player, final Object accessInterface, @@ -251,8 +238,8 @@ public class Platform { final ISecurityGrid sg = g.getCache(ISecurityGrid.class); if (!sg.hasPermission(player, requiredPermission)) { - player.sendMessage(new TranslatableText("appliedenergistics2.permission_denied") - .applyTextStyle(TextFormatting.RED)); + player.sendSystemMessage(new TranslatableText("appliedenergistics2.permission_denied") + .formatted(Formatting.RED), Util.NIL_UUID); // FIXME trace logging? return false; } @@ -275,7 +262,7 @@ public class Platform { final BlockState state = w.getBlockState(pos); final BlockEntity tileEntity = w.getBlockEntity(pos); - List out = Block.getDrops(state, serverWorld, pos, tileEntity); + List out = Block.getDroppedStacks(state, serverWorld, pos, tileEntity); return out.toArray(new ItemStack[0]); } @@ -294,7 +281,7 @@ public class Platform { final double offset_z = (getRandomInt() % 32 - 16) / 82; final ItemEntity ei = new ItemEntity(w, 0.5 + offset_x + pos.getX(), 0.5 + offset_y + pos.getY(), 0.2 + offset_z + pos.getZ(), i.copy()); - w.addEntity(ei); + w.spawnEntity(ei); } } } @@ -305,7 +292,7 @@ public class Platform { * returns true if the code is on the server. */ public static boolean isServer() { - return Thread.currentThread().getThreadGroup() == SidedThreadGroups.SERVER; + return !isClient(); } public static int getRandomInt() { @@ -329,9 +316,9 @@ public class Platform { } try { - TooltipContext.TooltipFlags tooltipFlag = MinecraftClient.getInstance().gameSettings.advancedItemTooltips - ? TooltipContext.TooltipFlags.ADVANCED - : TooltipContext.TooltipFlags.NORMAL; + TooltipContext tooltipFlag = MinecraftClient.getInstance().options.advancedItemTooltips + ? TooltipContext.Default.ADVANCED + : TooltipContext.Default.NORMAL; return itemStack.getTooltip(MinecraftClient.getInstance().player, tooltipFlag); } catch (final Exception errB) { return Collections.emptyList(); @@ -352,13 +339,13 @@ public class Platform { return "** Null"; } - final Identifier n = ForgeRegistries.FLUIDS.getKey(fs.getFluidStack().getFluid()); - return n == null ? "** Null" : n.getNamespace(); + final Identifier n = Registry.FLUID.getId(fs.getFluidStack().getRawFluid()); + return n == Registry.FLUID.getDefaultId() ? "** Null" : n.getNamespace(); } public static String getModName(String modId) { - return "" + TextFormatting.BLUE + TextFormatting.ITALIC - + ModList.get().getModContainerById(modId).map(mc -> mc.getModInfo().getDisplayName()).orElse(null); + return "" + Formatting.BLUE + Formatting.ITALIC + + FABRIC.getModContainer(modId).map(mc -> mc.getMetadata().getName()).orElse(null); } public static Text getItemDisplayName(final Object o) { @@ -399,11 +386,7 @@ public class Platform { } else { return new LiteralText("**Invalid Object"); } - Text n = fluidStack.getName(); - if (n == null) { - n = new TranslatableText(fluidStack.getTranslationKey()); - } - return n; + return fluidStack.getName(); } public static boolean isWrench(final PlayerEntity player, final ItemStack eq, final BlockPos pos) { @@ -443,19 +426,6 @@ public class Platform { return false; } - public static PlayerEntity getPlayer(final ServerWorld w) { - Objects.requireNonNull(w); - - final PlayerEntity wrp = FAKE_PLAYERS.get(w); - if (wrp != null) { - return wrp; - } - - final PlayerEntity p = FakePlayerFactory.getMinecraft(w); - FAKE_PLAYERS.put(w, p); - return p; - } - /** * Returns a random element from the given collection. * @@ -664,17 +634,18 @@ public class Platform { } public static LookDirection getPlayerRay(final PlayerEntity playerIn) { - double reachDistance = playerIn.getAttribute(PlayerEntity.REACH_DISTANCE).getValue(); + // FIXME this currently cant be modded in Fabric, see net.minecraft.server.network.ServerPlayerInteractionManager.processBlockBreakingAction + double reachDistance = 36.0D; return getPlayerRay(playerIn, reachDistance); } public static LookDirection getPlayerRay(final PlayerEntity playerIn, double reachDistance) { - final double x = playerIn.prevPosX + (playerIn.getPosX() - playerIn.prevPosX); - final double y = playerIn.prevPosY + (playerIn.getPosY() - playerIn.prevPosY) + playerIn.getEyeHeight(); - final double z = playerIn.prevPosZ + (playerIn.getPosZ() - playerIn.prevPosZ); + final double x = playerIn.prevX + (playerIn.getX() - playerIn.prevX); + final double y = playerIn.prevY + (playerIn.getY() - playerIn.prevY) + playerIn.getEyeHeight(playerIn.getPose()); + final double z = playerIn.prevZ + (playerIn.getZ() - playerIn.prevZ); - final float playerPitch = playerIn.prevRotationPitch + (playerIn.pitch - playerIn.prevRotationPitch); - final float playerYaw = playerIn.prevRotationYaw + (playerIn.rotationYaw - playerIn.prevRotationYaw); + final float playerPitch = playerIn.prevPitch + (playerIn.pitch - playerIn.prevPitch); + final float playerYaw = playerIn.prevYaw + (playerIn.yaw - playerIn.prevYaw); final float yawRayX = MathHelper.sin(-playerYaw * 0.017453292f - (float) Math.PI); final float yawRayZ = MathHelper.cos(-playerYaw * 0.017453292f - (float) Math.PI); @@ -694,11 +665,11 @@ public class Platform { final World w = p.getEntityWorld(); final float f = 1.0F; - float f1 = p.prevRotationPitch + (p.pitch - p.prevRotationPitch) * f; - final float f2 = p.prevRotationYaw + (p.rotationYaw - p.prevRotationYaw) * f; - final double d0 = p.prevPosX + (p.getPosX() - p.prevPosX) * f; - final double d1 = p.prevPosY + (p.getPosY() - p.prevPosY) * f + 1.62D - p.getOffsetY(); - final double d2 = p.prevPosZ + (p.getPosZ() - p.prevPosZ) * f; + float f1 = p.prevPitch + (p.pitch - p.prevPitch) * f; + final float f2 = p.prevYaw + (p.yaw - p.prevYaw) * f; + final double d0 = p.prevX + (p.getX() - p.prevX) * f; + final double d1 = p.prevY + (p.getY() - p.prevY) * f + 1.62D - p.getHeightOffset(); + final double d2 = p.prevZ + (p.getZ() - p.prevZ) * f; final Vec3d vec3 = new Vec3d(d0, d1, d2); final float f3 = MathHelper.cos(-f2 * 0.017453292F - (float) Math.PI); final float f4 = MathHelper.sin(-f2 * 0.017453292F - (float) Math.PI); @@ -712,27 +683,27 @@ public class Platform { final Box bb = new Box(Math.min(vec3.x, vec31.x), Math.min(vec3.y, vec31.y), Math.min(vec3.z, vec31.z), Math.max(vec3.x, vec31.x), Math.max(vec3.y, vec31.y), - Math.max(vec3.z, vec31.z)).grow(16, 16, 16); + Math.max(vec3.z, vec31.z)).expand(16, 16, 16); Entity entity = null; double closest = 9999999.0D; if (hitEntities) { - final List list = w.getEntitiesWithinAABBExcludingEntity(p, bb); + final List list = w.getEntities(p, bb); for (final Entity entity1 : list) { if (entity1.isAlive() && entity1 != p && !(entity1 instanceof ItemEntity)) { // prevent killing / flying of mounts. - if (entity1.isRidingOrBeingRiddenBy(p)) { + if (entity1.isConnectedThroughVehicle(p)) { continue; } f1 = 0.3F; // FIXME: Three different bounding boxes available, should double-check - final Box boundingBox = entity1.getBoundingBox().grow(f1, f1, f1); + final Box boundingBox = entity1.getBoundingBox().expand(f1, f1, f1); final Vec3d rtResult = boundingBox.rayTrace(vec3, vec31).orElse(null); if (rtResult != null) { - final double nd = vec3.squareDistanceTo(rtResult); + final double nd = vec3.squaredDistanceTo(rtResult); if (nd < closest) { entity = entity1; @@ -749,14 +720,14 @@ public class Platform { if (hitBlocks) { vec = new Vec3d(d0, d1, d2); // FIXME: passing p as entity here might be incorrect - pos = w.rayTraceBlocks(new RayTraceContext(vec3, vec31, RayTraceContext.BlockMode.COLLIDER, - RayTraceContext.FluidMode.ANY, p)); + pos = w.rayTrace(new RayTraceContext(vec3, vec31, RayTraceContext.ShapeType.COLLIDER, + RayTraceContext.FluidHandling.ANY, p)); } - if (entity != null && pos != null && pos.getHitVec().squareDistanceTo(vec) > closest) { - pos = new EntityRayTraceResult(entity); + if (entity != null && pos != null && pos.getPos().squaredDistanceTo(vec) > closest) { + pos = new EntityHitResult(entity); } else if (entity != null && pos == null) { - pos = new EntityRayTraceResult(entity); + pos = new EntityHitResult(entity); } return pos; @@ -1009,7 +980,7 @@ public class Platform { break; } - player.setLocationAndAngles(tile.getPos().getX() + 0.5, tile.getPos().getY() + 0.5, tile.getPos().getZ() + 0.5, + player.refreshPositionAndAngles(tile.getPos().getX() + 0.5, tile.getPos().getY() + 0.5, tile.getPos().getZ() + 0.5, yaw, pitch); } @@ -1035,7 +1006,7 @@ public class Platform { } public static ItemStack extractItemsByRecipe(final IEnergySource energySrc, final IActionSource mySrc, - final IMEMonitor src, final World w, final IRecipe r, + final IMEMonitor src, final World w, final Recipe r, final ItemStack output, final CraftingInventory ci, final ItemStack providedTemplate, final int slot, final IItemList items, final Actionable realForFake, final IPartitionList filter) { @@ -1073,8 +1044,8 @@ public class Platform { // ) final ItemStack cp = sh.copy(); cp.setCount(1); - ci.setInventorySlotContents(slot, cp); - if (r.matches(ci, w) && ItemStack.areItemsEqual(r.getCraftingResult(ci), output)) { + ci.setStack(slot, cp); + if (r.matches(ci, w) && ItemStack.areItemsEqual(r.craft(ci), output)) { final IAEItemStack ax = x.copy(); ax.setStackSize(1); if (filter == null || filter.isListed(ax)) { @@ -1085,7 +1056,7 @@ public class Platform { } } } - ci.setInventorySlotContents(slot, providedTemplate); + ci.setStack(slot, providedTemplate); } } } @@ -1098,13 +1069,13 @@ public class Platform { * remains when the item is used for crafting, i.E. the empty bucket for a * bucket of water. */ - public static ItemStack getContainerItem(final ItemStack stackInSlot) { + public static ItemStack getRecipeRemainder(final ItemStack stackInSlot) { if (stackInSlot == null) { return ItemStack.EMPTY; } final Item i = stackInSlot.getItem(); - if (i == null || !i.hasContainerItem(stackInSlot)) { + if (i == null || !i.hasRecipeRemainder()) { if (stackInSlot.getCount() > 1) { stackInSlot.setCount(stackInSlot.getCount() - 1); return stackInSlot; @@ -1112,7 +1083,7 @@ public class Platform { return ItemStack.EMPTY; } - ItemStack ci = i.getContainerItem(stackInSlot.copy()); + ItemStack ci = new ItemStack(i.getRecipeRemainder()); if (!ci.isEmpty() && ci.isDamageable() && ci.getDamage() == ci.getMaxDamage()) { ci = ItemStack.EMPTY; } @@ -1148,7 +1119,7 @@ public class Platform { public static float getEyeOffset(final PlayerEntity player) { assert player.world.isClient : "Valid only on client"; // FIXME: The entire premise of this seems broken - return (float) (player.getPosY() + player.getEyeHeight() - /* FIXME player.getDefaultEyeHeight() */ 1.62F); + return (float) player.getEyeY() - 1.62F; } public static boolean isRecipePrioritized(final ItemStack what) { @@ -1172,4 +1143,13 @@ public class Platform { return true; } + public static ItemStack copyStackWithSize(ItemStack stack, int size) { + if (!stack.isEmpty() && size > 0) { + ItemStack copy = stack.copy(); + copy.setCount(size); + return copy; + } + return ItemStack.EMPTY; + } + } diff --git a/src/main/java/appeng/util/helpers/ItemHandlerUtil.java b/src/main/java/appeng/util/helpers/ItemHandlerUtil.java index 67c0fac47..3132b2313 100644 --- a/src/main/java/appeng/util/helpers/ItemHandlerUtil.java +++ b/src/main/java/appeng/util/helpers/ItemHandlerUtil.java @@ -18,48 +18,42 @@ package appeng.util.helpers; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.inventory.CraftingInventory; import net.minecraft.item.ItemStack; -import net.minecraftforge.items.IItemHandlerModifiable; public class ItemHandlerUtil { private ItemHandlerUtil() { } - public static void setStackInSlot(final ItemTransferable inv, final int slot, final ItemStack stack) { - if (inv instanceof IItemHandlerModifiable) { - ((IItemHandlerModifiable) inv).setStackInSlot(slot, stack); - } else { - inv.extractItem(slot, Integer.MAX_VALUE, false); - inv.insertItem(slot, stack, false); - } + public static void setStackInSlot(final FixedItemInv inv, final int slot, final ItemStack stack) { + inv.forceSetInvStack(slot, stack); } - public static void clear(final ItemTransferable inv) { - for (int x = 0; x < inv.getSlots(); x++) { + public static void clear(final FixedItemInv inv) { + for (int x = 0; x < inv.getSlotCount(); x++) { setStackInSlot(inv, x, ItemStack.EMPTY); } } - public static boolean isEmpty(final ItemTransferable inv) { - for (int x = 0; x < inv.getSlots(); x++) { - if (!inv.getStackInSlot(x).isEmpty()) { + public static boolean isEmpty(final FixedItemInv inv) { + for (int x = 0; x < inv.getSlotCount(); x++) { + if (!inv.getInvStack(x).isEmpty()) { return false; } } return true; } - public static void copy(final ItemTransferable from, final ItemTransferable to, boolean deepCopy) { - for (int i = 0; i < Math.min(from.getSlots(), to.getSlots()); ++i) { - setStackInSlot(to, i, deepCopy ? from.getStackInSlot(i).copy() : from.getStackInSlot(i)); + public static void copy(final FixedItemInv from, final FixedItemInv to, boolean deepCopy) { + for (int i = 0; i < Math.min(from.getSlotCount(), to.getSlotCount()); ++i) { + setStackInSlot(to, i, deepCopy ? from.getInvStack(i).copy() : from.getInvStack(i)); } } - public static void copy(final CraftingInventory from, final ItemTransferable to, boolean deepCopy) { - for (int i = 0; i < Math.min(from.getSizeInventory(), to.getSlots()); ++i) { - setStackInSlot(to, i, deepCopy ? from.getStackInSlot(i).copy() : from.getStackInSlot(i)); + public static void copy(final CraftingInventory from, final FixedItemInv to, boolean deepCopy) { + for (int i = 0; i < Math.min(from.size(), to.getSlotCount()); ++i) { + setStackInSlot(to, i, deepCopy ? from.getStack(i).copy() : from.getStack(i)); } } } diff --git a/src/main/java/appeng/util/inv/AdaptorFixedInv.java b/src/main/java/appeng/util/inv/AdaptorFixedInv.java new file mode 100644 index 000000000..03f04bb4f --- /dev/null +++ b/src/main/java/appeng/util/inv/AdaptorFixedInv.java @@ -0,0 +1,134 @@ +/* + * This file is part of Applied Energistics 2. + * Copyright (c) 2013 - 2014, AlgorithmX2, All rights reserved. + * + * Applied Energistics 2 is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Applied Energistics 2 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Applied Energistics 2. If not, see . + */ + +package appeng.util.inv; + +import alexiil.mc.lib.attributes.Simulation; +import alexiil.mc.lib.attributes.item.FixedItemInv; +import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.filter.ItemFilter; +import appeng.api.config.FuzzyMode; +import appeng.util.InventoryAdaptor; +import appeng.util.Platform; +import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; + +import java.util.Iterator; + +public class AdaptorFixedInv extends InventoryAdaptor { + protected final FixedItemInv itemHandler; + protected final ItemTransferable transferable; + + public AdaptorFixedInv(FixedItemInv itemHandler) { + this.itemHandler = itemHandler; + this.transferable = itemHandler.getTransferable(); + } + + @Override + public boolean hasSlots() { + return this.itemHandler.getSlotCount() > 0; + } + + @Override + public ItemStack removeItems(int amount, ItemStack filter, IInventoryDestination destination) { + ItemFilter itemFilter = createExactFilter(filter, destination); + + return this.transferable.attemptExtraction(itemFilter, amount, Simulation.ACTION); + } + + @Override + public ItemStack simulateRemove(int amount, ItemStack filter, IInventoryDestination destination) { + ItemFilter itemFilter = createExactFilter(filter, destination); + + return this.transferable.attemptExtraction(itemFilter, amount, Simulation.SIMULATE); + } + + @NotNull + private ItemFilter createExactFilter(ItemStack filter, IInventoryDestination destination) { + ItemFilter itemFilter = destination != null ? destination::canInsert : stack -> true; + if (!filter.isEmpty()) { + if (destination != null) { + itemFilter = stack -> Platform.itemComparisons().isSameItem(stack, filter) && destination.canInsert(stack); + } else { + itemFilter = stack -> Platform.itemComparisons().isSameItem(stack, filter); + } + } + return itemFilter; + } + + @NotNull + private ItemFilter createFuzzyFilter(ItemStack filter, FuzzyMode fuzzyMode, IInventoryDestination destination) { + ItemFilter itemFilter = destination != null ? destination::canInsert : stack -> true; + if (!filter.isEmpty()) { + if (destination != null) { + itemFilter = stack -> Platform.itemComparisons().isFuzzyEqualItem(stack, filter, fuzzyMode) && destination.canInsert(stack); + } else { + itemFilter = stack -> Platform.itemComparisons().isFuzzyEqualItem(stack, filter, fuzzyMode); + } + } + return itemFilter; + } + + /** + * For fuzzy extract, we will only ever extract one slot, since we're afraid of + * merging two item stacks with different damage values. + */ + @Override + public ItemStack removeSimilarItems(int amount, ItemStack filter, FuzzyMode fuzzyMode, + IInventoryDestination destination) { + ItemFilter itemFilter = createFuzzyFilter(filter, fuzzyMode, destination); + + return this.transferable.attemptExtraction(itemFilter, amount, Simulation.ACTION); + } + + @Override + public ItemStack simulateSimilarRemove(int amount, ItemStack filter, FuzzyMode fuzzyMode, + IInventoryDestination destination) { + ItemFilter itemFilter = createFuzzyFilter(filter, fuzzyMode, destination); + + return this.transferable.attemptExtraction(itemFilter, amount, Simulation.SIMULATE); + } + + @Override + public ItemStack addItems(ItemStack toBeAdded) { + return this.addItems(toBeAdded, false); + } + + @Override + public ItemStack simulateAdd(ItemStack toBeSimulated) { + return this.addItems(toBeSimulated, true); + } + + protected ItemStack addItems(final ItemStack itemsToAdd, final boolean simulate) { + if (itemsToAdd.isEmpty()) { + return ItemStack.EMPTY; + } + + return this.transferable.attemptInsertion(itemsToAdd, simulate ? Simulation.SIMULATE : Simulation.ACTION); + } + + @Override + public boolean containsItems() { + return !transferable.attemptAnyExtraction(1, Simulation.SIMULATE).isEmpty(); + } + + @Override + public Iterator iterator() { + return new ItemHandlerIterator(this.itemHandler); + } +} diff --git a/src/main/java/appeng/util/inv/AdaptorItemHandler.java b/src/main/java/appeng/util/inv/AdaptorItemHandler.java deleted file mode 100644 index 23bc87317..000000000 --- a/src/main/java/appeng/util/inv/AdaptorItemHandler.java +++ /dev/null @@ -1,226 +0,0 @@ -/* - * This file is part of Applied Energistics 2. - * Copyright (c) 2013 - 2014, AlgorithmX2, All rights reserved. - * - * Applied Energistics 2 is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Applied Energistics 2 is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Applied Energistics 2. If not, see . - */ - -package appeng.util.inv; - -import java.util.Iterator; - -import net.minecraft.item.ItemStack; -import alexiil.mc.lib.attributes.item.ItemTransferable; - -import appeng.api.config.FuzzyMode; -import appeng.util.InventoryAdaptor; -import appeng.util.Platform; - -public class AdaptorItemHandler extends InventoryAdaptor { - protected final ItemTransferable itemHandler; - - public AdaptorItemHandler(ItemTransferable itemHandler) { - this.itemHandler = itemHandler; - } - - @Override - public boolean hasSlots() { - return this.itemHandler.getSlots() > 0; - } - - @Override - public ItemStack removeItems(int amount, ItemStack filter, IInventoryDestination destination) { - int slots = this.itemHandler.getSlots(); - ItemStack rv = ItemStack.EMPTY; - - for (int slot = 0; slot < slots && amount > 0; slot++) { - final ItemStack is = this.itemHandler.getStackInSlot(slot); - if (is.isEmpty() || (!filter.isEmpty() && !Platform.itemComparisons().isSameItem(is, filter))) { - continue; - } - - if (destination != null) { - ItemStack extracted = this.itemHandler.extractItem(slot, amount, true); - if (extracted.isEmpty()) { - continue; - } - - if (!destination.canInsert(extracted)) { - continue; - } - } - - // Attempt extracting it - ItemStack extracted = this.itemHandler.extractItem(slot, amount, false); - - if (extracted.isEmpty()) { - continue; - } - - if (rv.isEmpty()) { - // Use the first stack as a template for the result - rv = extracted; - filter = extracted; - amount -= extracted.getCount(); - } else { - // Subsequent stacks will just increase the extracted size - rv.grow(extracted.getCount()); - amount -= extracted.getCount(); - } - } - - return rv; - } - - @Override - public ItemStack simulateRemove(int amount, ItemStack filter, IInventoryDestination destination) { - int slots = this.itemHandler.getSlots(); - ItemStack rv = ItemStack.EMPTY; - - for (int slot = 0; slot < slots && amount > 0; slot++) { - final ItemStack is = this.itemHandler.getStackInSlot(slot); - if (!is.isEmpty() && (filter.isEmpty() || Platform.itemComparisons().isSameItem(is, filter))) { - ItemStack extracted = this.itemHandler.extractItem(slot, amount, true); - - if (extracted.isEmpty()) { - continue; - } - - if (destination != null) { - if (!destination.canInsert(extracted)) { - continue; - } - } - - if (rv.isEmpty()) { - // Use the first stack as a template for the result - rv = extracted.copy(); - filter = extracted; - amount -= extracted.getCount(); - } else { - // Subsequent stacks will just increase the extracted size - rv.grow(extracted.getCount()); - amount -= extracted.getCount(); - } - } - } - - return rv; - } - - /** - * For fuzzy extract, we will only ever extract one slot, since we're afraid of - * merging two item stacks with different damage values. - */ - @Override - public ItemStack removeSimilarItems(int amount, ItemStack filter, FuzzyMode fuzzyMode, - IInventoryDestination destination) { - int slots = this.itemHandler.getSlots(); - ItemStack extracted = ItemStack.EMPTY; - - for (int slot = 0; slot < slots && extracted.isEmpty(); slot++) { - final ItemStack is = this.itemHandler.getStackInSlot(slot); - if (is.isEmpty() - || (!filter.isEmpty() && !Platform.itemComparisons().isFuzzyEqualItem(is, filter, fuzzyMode))) { - continue; - } - - if (destination != null) { - ItemStack simulated = this.itemHandler.extractItem(slot, amount, true); - if (simulated.isEmpty()) { - continue; - } - - if (!destination.canInsert(simulated)) { - continue; - } - } - - // Attempt extracting it - extracted = this.itemHandler.extractItem(slot, amount, false); - } - - return extracted; - } - - @Override - public ItemStack simulateSimilarRemove(int amount, ItemStack filter, FuzzyMode fuzzyMode, - IInventoryDestination destination) { - int slots = this.itemHandler.getSlots(); - ItemStack extracted = ItemStack.EMPTY; - - for (int slot = 0; slot < slots && extracted.isEmpty(); slot++) { - final ItemStack is = this.itemHandler.getStackInSlot(slot); - if (is.isEmpty() - || (!filter.isEmpty() && !Platform.itemComparisons().isFuzzyEqualItem(is, filter, fuzzyMode))) { - continue; - } - - // Attempt extracting it - extracted = this.itemHandler.extractItem(slot, amount, true); - - if (!extracted.isEmpty() && destination != null) { - if (!destination.canInsert(extracted)) { - extracted = ItemStack.EMPTY; // Keep on looking... - } - } - } - - return extracted; - } - - @Override - public ItemStack addItems(ItemStack toBeAdded) { - return this.addItems(toBeAdded, false); - } - - @Override - public ItemStack simulateAdd(ItemStack toBeSimulated) { - return this.addItems(toBeSimulated, true); - } - - protected ItemStack addItems(final ItemStack itemsToAdd, final boolean simulate) { - if (itemsToAdd.isEmpty()) { - return ItemStack.EMPTY; - } - - ItemStack left = itemsToAdd.copy(); - - for (int slot = 0; slot < this.itemHandler.getSlots(); slot++) { - left = this.itemHandler.insertItem(slot, left, simulate); - - if (left.isEmpty()) { - return ItemStack.EMPTY; - } - } - - return left; - } - - @Override - public boolean containsItems() { - int slots = this.itemHandler.getSlots(); - for (int slot = 0; slot < slots; slot++) { - if (!this.itemHandler.getStackInSlot(slot).isEmpty()) { - return true; - } - } - return false; - } - - @Override - public Iterator iterator() { - return new ItemHandlerIterator(this.itemHandler); - } -} diff --git a/src/main/java/appeng/util/inv/AdaptorItemHandlerPlayerInv.java b/src/main/java/appeng/util/inv/AdaptorItemHandlerPlayerInv.java index 79593c371..566f82c06 100644 --- a/src/main/java/appeng/util/inv/AdaptorItemHandlerPlayerInv.java +++ b/src/main/java/appeng/util/inv/AdaptorItemHandlerPlayerInv.java @@ -18,15 +18,16 @@ package appeng.util.inv; +import alexiil.mc.lib.attributes.Simulation; +import alexiil.mc.lib.attributes.item.compat.FixedInventoryVanillaWrapper; +import appeng.util.Platform; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; -import net.minecraftforge.items.wrapper.PlayerMainInvWrapper; -import appeng.util.Platform; +public class AdaptorItemHandlerPlayerInv extends AdaptorFixedInv { -public class AdaptorItemHandlerPlayerInv extends AdaptorItemHandler { public AdaptorItemHandlerPlayerInv(final PlayerEntity playerInv) { - super(new PlayerMainInvWrapper(playerInv.inventory)); + super(new FixedInventoryVanillaWrapper(playerInv.inventory)); } /** @@ -38,27 +39,23 @@ public class AdaptorItemHandlerPlayerInv extends AdaptorItemHandler { return ItemStack.EMPTY; } + Simulation sim = simulate ? Simulation.SIMULATE : Simulation.ACTION; + ItemStack left = itemsToAdd.copy(); - for (int slot = 0; slot < this.itemHandler.getSlots(); slot++) { - ItemStack is = this.itemHandler.getStackInSlot(slot); + // First try filling slots + for (int slot = 0; slot < this.itemHandler.getSlotCount(); slot++) { + ItemStack is = this.itemHandler.getInvStack(slot); if (Platform.itemComparisons().isSameItem(is, left)) { - left = this.itemHandler.insertItem(slot, left, simulate); + left = itemHandler.getSlot(slot).attemptInsertion(left, sim); } if (left.isEmpty()) { return ItemStack.EMPTY; } } - for (int slot = 0; slot < this.itemHandler.getSlots(); slot++) { - left = this.itemHandler.insertItem(slot, left, simulate); - if (left.isEmpty()) { - return ItemStack.EMPTY; - } - } - - return left; + return transferable.attemptInsertion(left, sim); } } diff --git a/src/main/java/appeng/util/inv/AdaptorList.java b/src/main/java/appeng/util/inv/AdaptorList.java index b38023994..939c68c0b 100644 --- a/src/main/java/appeng/util/inv/AdaptorList.java +++ b/src/main/java/appeng/util/inv/AdaptorList.java @@ -57,7 +57,7 @@ public class AdaptorList extends InventoryAdaptor { if (amount > 0) { final ItemStack rv = is.copy(); rv.setCount(amount); - is.grow(-amount); + is.increment(-amount); // remove it.. if (is.getCount() <= 0) { @@ -110,7 +110,7 @@ public class AdaptorList extends InventoryAdaptor { if (amount > 0) { final ItemStack rv = is.copy(); rv.setCount(amount); - is.grow(-amount); + is.increment(-amount); // remove it.. if (is.getCount() <= 0) { @@ -160,7 +160,7 @@ public class AdaptorList extends InventoryAdaptor { for (final ItemStack is : this.i) { if (ItemStack.areItemsEqual(is, left)) { - is.grow(left.getCount()); + is.increment(left.getCount()); return ItemStack.EMPTY; } } diff --git a/src/main/java/appeng/util/inv/IAEAppEngInventory.java b/src/main/java/appeng/util/inv/IAEAppEngInventory.java index b90dfe095..a4afe24b5 100644 --- a/src/main/java/appeng/util/inv/IAEAppEngInventory.java +++ b/src/main/java/appeng/util/inv/IAEAppEngInventory.java @@ -18,11 +18,11 @@ package appeng.util.inv; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.item.ItemStack; public interface IAEAppEngInventory { void saveChanges(); - void onChangeInventory(ItemTransferable inv, int slot, InvOperation mc, ItemStack removedStack, ItemStack newStack); + void onChangeInventory(FixedItemInv inv, int slot, InvOperation mc, ItemStack removedStack, ItemStack newStack); } diff --git a/src/main/java/appeng/util/inv/ItemHandlerIterator.java b/src/main/java/appeng/util/inv/ItemHandlerIterator.java index e73293174..eca263123 100644 --- a/src/main/java/appeng/util/inv/ItemHandlerIterator.java +++ b/src/main/java/appeng/util/inv/ItemHandlerIterator.java @@ -21,32 +21,33 @@ package appeng.util.inv; import java.util.Iterator; import java.util.NoSuchElementException; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.Simulation; +import alexiil.mc.lib.attributes.item.FixedItemInv; class ItemHandlerIterator implements Iterator { - private final ItemTransferable itemHandler; + private final FixedItemInv itemHandler; private final ItemSlot itemSlot = new ItemSlot(); private int slot = 0; - ItemHandlerIterator(ItemTransferable itemHandler) { + ItemHandlerIterator(FixedItemInv itemHandler) { this.itemHandler = itemHandler; } @Override public boolean hasNext() { - return this.slot < this.itemHandler.getSlots(); + return this.slot < this.itemHandler.getSlotCount(); } @Override public ItemSlot next() { - if (this.slot >= this.itemHandler.getSlots()) { + if (this.slot >= this.itemHandler.getSlotCount()) { throw new NoSuchElementException(); } - this.itemSlot.setExtractable(!this.itemHandler.extractItem(this.slot, 1, true).isEmpty()); - this.itemSlot.setItemStack(this.itemHandler.getStackInSlot(this.slot)); + this.itemSlot.setExtractable(!this.itemHandler.getSlot(this.slot).attemptAnyExtraction(1, Simulation.SIMULATE).isEmpty()); + this.itemSlot.setItemStack(this.itemHandler.getInvStack(this.slot)); this.itemSlot.setSlot(this.slot); this.slot++; return this.itemSlot; diff --git a/src/main/java/appeng/util/inv/WrapperChainedItemHandler.java b/src/main/java/appeng/util/inv/WrapperChainedItemHandler.java index 1a5487665..05ac1d3b0 100644 --- a/src/main/java/appeng/util/inv/WrapperChainedItemHandler.java +++ b/src/main/java/appeng/util/inv/WrapperChainedItemHandler.java @@ -18,129 +18,17 @@ package appeng.util.inv; -import java.util.ArrayList; +import alexiil.mc.lib.attributes.item.FixedItemInv; +import alexiil.mc.lib.attributes.item.impl.CombinedFixedItemInv; +import alexiil.mc.lib.attributes.item.impl.DelegatingFixedItemInv; -import javax.annotation.Nonnull; +import java.util.Arrays; -import alexiil.mc.lib.attributes.item.ItemTransferable; -import net.minecraft.item.ItemStack; -import net.minecraftforge.items.IItemHandlerModifiable; -import alexiil.mc.lib.attributes.item.impl.EmptyFixedItemInv; +// FIXME could be replaced by CombinedFixedItemInv directly +public class WrapperChainedItemHandler extends DelegatingFixedItemInv { -import appeng.util.helpers.ItemHandlerUtil; - -public class WrapperChainedItemHandler implements IItemHandlerModifiable { - private ItemTransferable[] itemHandler; // the handlers - private int[] baseIndex; // index-offsets of the different handlers - private int slotCount; // number of total slots - - public WrapperChainedItemHandler(ItemTransferable... itemHandler) { - this.setItemHandlers(itemHandler); + public WrapperChainedItemHandler(FixedItemInv... itemHandler) { + super(CombinedFixedItemInv.create(Arrays.asList(itemHandler))); } - private void setItemHandlers(ItemTransferable[] handlers) { - this.itemHandler = handlers; - this.baseIndex = new int[this.itemHandler.length]; - int index = 0; - for (int i = 0; i < this.itemHandler.length; i++) { - index += this.itemHandler[i].getSlots(); - this.baseIndex[i] = index; - } - this.slotCount = index; - } - - // returns the handler index for the slot - private int getIndexForSlot(int slot) { - if (slot < 0) { - return -1; - } - - for (int i = 0; i < this.baseIndex.length; i++) { - if (slot - this.baseIndex[i] < 0) { - return i; - } - } - return -1; - } - - private ItemTransferable getHandlerFromIndex(int index) { - if (index < 0 || index >= this.itemHandler.length) { - return EmptyFixedItemInv.INSTANCE; - } - return this.itemHandler[index]; - } - - private int getSlotFromIndex(int slot, int index) { - if (index <= 0 || index >= this.baseIndex.length) { - return slot; - } - return slot - this.baseIndex[index - 1]; - } - - public void cycleOrder() { - if (this.itemHandler.length > 1) { - ArrayList newOrder = new ArrayList<>(); - newOrder.add(this.itemHandler[this.itemHandler.length - 1]); - for (int i = 0; i < this.itemHandler.length - 1; ++i) { - newOrder.add(this.itemHandler[i]); - } - this.setItemHandlers(newOrder.toArray(new ItemTransferable[this.itemHandler.length])); - } - } - - @Override - public int getSlots() { - return this.slotCount; - } - - @Override - @Nonnull - public ItemStack getStackInSlot(final int slot) { - int index = this.getIndexForSlot(slot); - ItemTransferable handler = this.getHandlerFromIndex(index); - int targetSlot = this.getSlotFromIndex(slot, index); - return handler.getStackInSlot(targetSlot); - } - - @Override - @Nonnull - public ItemStack insertItem(final int slot, @Nonnull ItemStack stack, boolean simulate) { - int index = this.getIndexForSlot(slot); - ItemTransferable handler = this.getHandlerFromIndex(index); - int targetSlot = this.getSlotFromIndex(slot, index); - return handler.insertItem(targetSlot, stack, simulate); - } - - @Override - @Nonnull - public ItemStack extractItem(int slot, int amount, boolean simulate) { - int index = this.getIndexForSlot(slot); - ItemTransferable handler = this.getHandlerFromIndex(index); - int targetSlot = this.getSlotFromIndex(slot, index); - return handler.extractItem(targetSlot, amount, simulate); - } - - @Override - public int getSlotLimit(int slot) { - int index = this.getIndexForSlot(slot); - ItemTransferable handler = this.getHandlerFromIndex(index); - int localSlot = this.getSlotFromIndex(slot, index); - return handler.getSlotLimit(localSlot); - } - - @Override - public void setStackInSlot(int slot, ItemStack stack) { - int index = this.getIndexForSlot(slot); - ItemTransferable handler = this.getHandlerFromIndex(index); - int targetSlot = this.getSlotFromIndex(slot, index); - ItemHandlerUtil.setStackInSlot(handler, targetSlot, stack); - } - - @Override - public boolean isItemValid(int slot, ItemStack stack) { - int index = this.getIndexForSlot(slot); - ItemTransferable handler = this.getHandlerFromIndex(index); - int targetSlot = this.getSlotFromIndex(slot, index); - return handler.isItemValid(targetSlot, stack); - } } diff --git a/src/main/java/appeng/util/inv/WrapperCursorItemHandler.java b/src/main/java/appeng/util/inv/WrapperCursorItemHandler.java index 7b457c52b..c488e72d9 100644 --- a/src/main/java/appeng/util/inv/WrapperCursorItemHandler.java +++ b/src/main/java/appeng/util/inv/WrapperCursorItemHandler.java @@ -18,21 +18,14 @@ package appeng.util.inv; +import alexiil.mc.lib.attributes.item.compat.FixedInventoryVanillaWrapper; +import alexiil.mc.lib.attributes.item.impl.DelegatingFixedItemInv; import net.minecraft.entity.player.PlayerInventory; -import net.minecraftforge.items.ItemStackHandler; -public class WrapperCursorItemHandler extends ItemStackHandler { - private final PlayerInventory inv; +public class WrapperCursorItemHandler extends DelegatingFixedItemInv { - public WrapperCursorItemHandler(PlayerInventory PlayerInventory) { - super(1); - - this.inv = PlayerInventory; - this.setStackInSlot(0, PlayerInventory.getItemStack()); + public WrapperCursorItemHandler(PlayerInventory inventory) { + super(new FixedInventoryVanillaWrapper(inventory).getSubInv(0, 1)); } - @Override - protected void onContentsChanged(int slot) { - this.inv.setItemStack(this.getStackInSlot(slot)); - } } diff --git a/src/main/java/appeng/util/inv/WrapperFilteredItemHandler.java b/src/main/java/appeng/util/inv/WrapperFilteredItemHandler.java index 129528bb2..180f4cd19 100644 --- a/src/main/java/appeng/util/inv/WrapperFilteredItemHandler.java +++ b/src/main/java/appeng/util/inv/WrapperFilteredItemHandler.java @@ -19,66 +19,62 @@ package appeng.util.inv; import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import alexiil.mc.lib.attributes.ListenerRemovalToken; +import alexiil.mc.lib.attributes.ListenerToken; +import alexiil.mc.lib.attributes.Simulation; +import alexiil.mc.lib.attributes.item.InvMarkDirtyListener; +import alexiil.mc.lib.attributes.item.filter.ItemFilter; import net.minecraft.item.ItemStack; -import alexiil.mc.lib.attributes.item.ItemTransferable; -import net.minecraftforge.items.IItemHandlerModifiable; +import alexiil.mc.lib.attributes.item.FixedItemInv; -import appeng.util.helpers.ItemHandlerUtil; import appeng.util.inv.filter.IAEItemFilter; -public class WrapperFilteredItemHandler implements IItemHandlerModifiable { - private final ItemTransferable handler; +// FIXME: Needs to be double checked, LBA has better ways of doing this +public class WrapperFilteredItemHandler implements FixedItemInv { + private final FixedItemInv handler; private final IAEItemFilter filter; - public WrapperFilteredItemHandler(@Nonnull ItemTransferable handler, @Nonnull IAEItemFilter filter) { + public WrapperFilteredItemHandler(@Nonnull FixedItemInv handler, @Nonnull IAEItemFilter filter) { this.handler = handler; this.filter = filter; } @Override - public void setStackInSlot(int slot, ItemStack stack) { - ItemHandlerUtil.setStackInSlot(this.handler, slot, stack); + public ItemStack getInvStack(int slot) { + return this.handler.getInvStack(slot); } @Override - public int getSlots() { - return this.handler.getSlots(); + public boolean setInvStack(int slot, ItemStack to, Simulation simulation) { + return this.handler.setInvStack(slot, to, simulation); } @Override - public ItemStack getStackInSlot(int slot) { - return this.handler.getStackInSlot(slot); + public int getSlotCount() { + return this.handler.getSlotCount(); } @Override - public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) { - if (!this.filter.allowInsert(this.handler, slot, stack)) { - return stack; - } - - return this.handler.insertItem(slot, stack, simulate); + public boolean isItemValidForSlot(int slot, ItemStack stack) { + return filter.allowInsert(handler, slot, stack); } @Override - public ItemStack extractItem(int slot, int amount, boolean simulate) { - if (!this.filter.allowExtract(this.handler, slot, amount)) { - return ItemStack.EMPTY; - } - - return this.handler.extractItem(slot, amount, simulate); + public ItemFilter getFilterForSlot(int slot) { + return stack -> filter.allowInsert(handler, slot, stack); } @Override - public int getSlotLimit(int slot) { - return this.handler.getSlotLimit(slot); + public int getChangeValue() { + return this.handler.getChangeValue(); } + @Nullable @Override - public boolean isItemValid(int slot, ItemStack stack) { - if (!this.filter.allowInsert(this.handler, slot, stack)) { - return false; - } - return this.handler.isItemValid(slot, stack); + public ListenerToken addListener(InvMarkDirtyListener listener, ListenerRemovalToken removalToken) { + return this.handler.addListener(listener, removalToken); } + } diff --git a/src/main/java/appeng/util/inv/WrapperInvItemHandler.java b/src/main/java/appeng/util/inv/WrapperInvItemHandler.java index ff304b28c..9cfb5bee7 100644 --- a/src/main/java/appeng/util/inv/WrapperInvItemHandler.java +++ b/src/main/java/appeng/util/inv/WrapperInvItemHandler.java @@ -18,87 +18,19 @@ package appeng.util.inv; +import alexiil.mc.lib.attributes.item.FixedItemInv; +import alexiil.mc.lib.attributes.item.compat.InventoryFixedWrapper; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import alexiil.mc.lib.attributes.item.ItemTransferable; -import appeng.util.helpers.ItemHandlerUtil; +public class WrapperInvItemHandler extends InventoryFixedWrapper { -public class WrapperInvItemHandler implements IInventory { - private final ItemTransferable inv; - - public WrapperInvItemHandler(final ItemTransferable inv) { - this.inv = inv; + public WrapperInvItemHandler(final FixedItemInv inv) { + super(inv); } @Override - public int getSizeInventory() { - return this.inv.getSlots(); - } - - @Override - public boolean isEmpty() { - return ItemHandlerUtil.isEmpty(this.inv); - } - - @Override - public ItemStack getStackInSlot(int index) { - return this.inv.getStackInSlot(index); - } - - @Override - public ItemStack decrStackSize(int index, int count) { - return this.inv.extractItem(index, count, false); - } - - @Override - public ItemStack removeStackFromSlot(int index) { - return this.inv.extractItem(index, this.inv.getSlotLimit(index), false); - } - - @Override - public void setInventorySlotContents(int index, ItemStack stack) { - ItemHandlerUtil.setStackInSlot(this.inv, index, stack); - } - - @Override - public int getInventoryStackLimit() { - int max = 0; - for (int i = 0; i < this.inv.getSlots(); ++i) { - max = Math.max(max, this.inv.getSlotLimit(i)); - } - return max; - } - - @Override - public void markDirty() { - // NOP - } - - @Override - public boolean isUsableByPlayer(PlayerEntity player) { + public boolean canPlayerUse(PlayerEntity player) { return false; } - @Override - public void openInventory(PlayerEntity player) { - // NOP - } - - @Override - public void closeInventory(PlayerEntity player) { - // NOP - } - - @Override - public boolean isItemValidForSlot(int index, ItemStack stack) { - return this.inv.isItemValid(index, stack); - } - - @Override - public void clear() { - ItemHandlerUtil.clear(this.inv); - } - } diff --git a/src/main/java/appeng/util/inv/WrapperRangeItemHandler.java b/src/main/java/appeng/util/inv/WrapperRangeItemHandler.java deleted file mode 100644 index 555fcaac3..000000000 --- a/src/main/java/appeng/util/inv/WrapperRangeItemHandler.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * This file is part of Applied Energistics 2. - * Copyright (c) 2013 - 2017, AlgorithmX2, All rights reserved. - * - * Applied Energistics 2 is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Applied Energistics 2 is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Applied Energistics 2. If not, see . - */ - -package appeng.util.inv; - -import javax.annotation.Nonnull; - -import alexiil.mc.lib.attributes.item.ItemTransferable; -import net.minecraft.item.ItemStack; -import net.minecraftforge.items.IItemHandlerModifiable; - -import appeng.util.helpers.ItemHandlerUtil; - -public class WrapperRangeItemHandler implements IItemHandlerModifiable { - private final ItemTransferable compose; - private final int minSlot; - private final int maxSlot; - - public WrapperRangeItemHandler(ItemTransferable compose, int minSlot, int maxSlotExclusive) { - this.compose = compose; - this.minSlot = minSlot; - this.maxSlot = maxSlotExclusive; - } - - @Override - public int getSlots() { - return this.maxSlot - this.minSlot; - } - - @Override - @Nonnull - public ItemStack getStackInSlot(int slot) { - if (this.checkSlot(slot)) { - return this.compose.getStackInSlot(slot + this.minSlot); - } - - return ItemStack.EMPTY; - } - - @Override - @Nonnull - public ItemStack insertItem(int slot, @Nonnull ItemStack stack, boolean simulate) { - if (this.checkSlot(slot)) { - return this.compose.insertItem(slot + this.minSlot, stack, simulate); - } - - return stack; - } - - @Override - @Nonnull - public ItemStack extractItem(int slot, int amount, boolean simulate) { - if (this.checkSlot(slot)) { - return this.compose.extractItem(slot + this.minSlot, amount, simulate); - } - - return ItemStack.EMPTY; - } - - @Override - public void setStackInSlot(int slot, @Nonnull ItemStack stack) { - if (this.checkSlot(slot)) { - ItemHandlerUtil.setStackInSlot(this.compose, slot + this.minSlot, stack); - } - } - - @Override - public int getSlotLimit(int slot) { - if (this.checkSlot(slot)) { - return this.compose.getSlotLimit(slot + this.minSlot); - } - - return 0; - } - - private boolean checkSlot(int localSlot) { - return localSlot + this.minSlot < this.maxSlot; - } - - @Override - public boolean isItemValid(int slot, ItemStack stack) { - if (this.checkSlot(slot)) { - return this.compose.isItemValid(slot + this.minSlot, stack); - } - return false; - } -} diff --git a/src/main/java/appeng/util/inv/WrapperSupplierItemHandler.java b/src/main/java/appeng/util/inv/WrapperSupplierItemHandler.java index 5c9a525a8..de60ee373 100644 --- a/src/main/java/appeng/util/inv/WrapperSupplierItemHandler.java +++ b/src/main/java/appeng/util/inv/WrapperSupplierItemHandler.java @@ -20,51 +20,58 @@ package appeng.util.inv; import java.util.function.Supplier; +import alexiil.mc.lib.attributes.ListenerRemovalToken; +import alexiil.mc.lib.attributes.ListenerToken; +import alexiil.mc.lib.attributes.Simulation; +import alexiil.mc.lib.attributes.item.GroupedItemInv; +import alexiil.mc.lib.attributes.item.InvMarkDirtyListener; +import alexiil.mc.lib.attributes.item.impl.DelegatingGroupedItemInv; import net.minecraft.item.ItemStack; -import alexiil.mc.lib.attributes.item.ItemTransferable; -import net.minecraftforge.items.IItemHandlerModifiable; +import alexiil.mc.lib.attributes.item.FixedItemInv; -import appeng.util.helpers.ItemHandlerUtil; +import javax.annotation.Nullable; -public class WrapperSupplierItemHandler implements IItemHandlerModifiable { - private final Supplier sourceHandler; +public class WrapperSupplierItemHandler implements FixedItemInv { + private final Supplier sourceHandler; - public WrapperSupplierItemHandler(Supplier source) { + public WrapperSupplierItemHandler(Supplier source) { this.sourceHandler = source; } @Override - public int getSlots() { - return this.sourceHandler.get().getSlots(); + public GroupedItemInv getGroupedInv() { + return new DelegatingGroupedItemInv(this.sourceHandler.get().getGroupedInv()); } @Override - public ItemStack getStackInSlot(int slot) { - return this.sourceHandler.get().getStackInSlot(slot); + public ItemStack getInvStack(int slot) { + return this.sourceHandler.get().getInvStack(slot); } @Override - public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) { - return this.sourceHandler.get().insertItem(slot, stack, simulate); + public boolean setInvStack(int slot, ItemStack to, Simulation simulation) { + return this.sourceHandler.get().setInvStack(slot, to, simulation); } @Override - public ItemStack extractItem(int slot, int amount, boolean simulate) { - return this.sourceHandler.get().extractItem(slot, amount, simulate); + public int getSlotCount() { + return this.sourceHandler.get().getSlotCount(); } @Override - public int getSlotLimit(int slot) { - return this.sourceHandler.get().getSlotLimit(slot); + public boolean isItemValidForSlot(int slot, ItemStack stack) { + return this.sourceHandler.get().isItemValidForSlot(slot, stack); } @Override - public void setStackInSlot(int slot, ItemStack stack) { - ItemHandlerUtil.setStackInSlot(this.sourceHandler.get(), slot, stack); + public int getChangeValue() { + return this.sourceHandler.get().getChangeValue(); } + @Nullable @Override - public boolean isItemValid(int slot, ItemStack stack) { - return this.sourceHandler.get().isItemValid(slot, stack); + public ListenerToken addListener(InvMarkDirtyListener listener, ListenerRemovalToken removalToken) { + return this.sourceHandler.get().addListener(listener, removalToken); } + } diff --git a/src/main/java/appeng/util/inv/filter/AEItemDefinitionFilter.java b/src/main/java/appeng/util/inv/filter/AEItemDefinitionFilter.java index 274e7934b..5196dd101 100644 --- a/src/main/java/appeng/util/inv/filter/AEItemDefinitionFilter.java +++ b/src/main/java/appeng/util/inv/filter/AEItemDefinitionFilter.java @@ -18,7 +18,7 @@ package appeng.util.inv.filter; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.item.ItemStack; import appeng.api.definitions.IItemDefinition; @@ -31,12 +31,12 @@ public class AEItemDefinitionFilter implements IAEItemFilter { } @Override - public boolean allowExtract(ItemTransferable inv, int slot, int amount) { + public boolean allowExtract(FixedItemInv inv, int slot, int amount) { return true; } @Override - public boolean allowInsert(ItemTransferable inv, int slot, ItemStack stack) { + public boolean allowInsert(FixedItemInv inv, int slot, ItemStack stack) { return this.definition.isSameAs(stack); } diff --git a/src/main/java/appeng/util/inv/filter/AEItemFilters.java b/src/main/java/appeng/util/inv/filter/AEItemFilters.java index 9888324ee..0320d1ec6 100644 --- a/src/main/java/appeng/util/inv/filter/AEItemFilters.java +++ b/src/main/java/appeng/util/inv/filter/AEItemFilters.java @@ -18,7 +18,7 @@ package appeng.util.inv.filter; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.item.ItemStack; public class AEItemFilters { @@ -30,24 +30,24 @@ public class AEItemFilters { private static class InsertOnlyFilter implements IAEItemFilter { @Override - public boolean allowExtract(ItemTransferable inv, int slot, int amount) { + public boolean allowExtract(FixedItemInv inv, int slot, int amount) { return false; } @Override - public boolean allowInsert(ItemTransferable inv, int slot, ItemStack stack) { + public boolean allowInsert(FixedItemInv inv, int slot, ItemStack stack) { return true; } } private static class ExtractOnlyFilter implements IAEItemFilter { @Override - public boolean allowExtract(ItemTransferable inv, int slot, int amount) { + public boolean allowExtract(FixedItemInv inv, int slot, int amount) { return true; } @Override - public boolean allowInsert(ItemTransferable inv, int slot, ItemStack stack) { + public boolean allowInsert(FixedItemInv inv, int slot, ItemStack stack) { return false; } } diff --git a/src/main/java/appeng/util/inv/filter/IAEItemFilter.java b/src/main/java/appeng/util/inv/filter/IAEItemFilter.java index cd30ddb9a..eeba8334f 100644 --- a/src/main/java/appeng/util/inv/filter/IAEItemFilter.java +++ b/src/main/java/appeng/util/inv/filter/IAEItemFilter.java @@ -18,11 +18,11 @@ package appeng.util.inv.filter; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.item.ItemStack; public interface IAEItemFilter { - boolean allowExtract(ItemTransferable inv, int slot, int amount); + boolean allowExtract(FixedItemInv inv, int slot, int amount); - boolean allowInsert(ItemTransferable inv, int slot, ItemStack stack); + boolean allowInsert(FixedItemInv inv, int slot, ItemStack stack); } diff --git a/src/main/java/appeng/util/item/AEItemStack.java b/src/main/java/appeng/util/item/AEItemStack.java index f30b97ef3..3fc7fa749 100644 --- a/src/main/java/appeng/util/item/AEItemStack.java +++ b/src/main/java/appeng/util/item/AEItemStack.java @@ -31,7 +31,6 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.network.PacketByteBuf; import net.minecraft.text.Text; import net.fabricmc.api.EnvType; -import net.minecraftforge.items.ItemHandlerHelper; import appeng.api.AEApi; import appeng.api.config.FuzzyMode; @@ -39,6 +38,7 @@ import appeng.api.storage.IStorageChannel; import appeng.api.storage.channels.IItemStorageChannel; import appeng.api.storage.data.IAEItemStack; import appeng.util.Platform; +import net.minecraft.util.registry.Registry; public final class AEItemStack extends AEStack implements IAEItemStack { private static final String NBT_STACKSIZE = "cnt"; @@ -81,7 +81,7 @@ public final class AEItemStack extends AEStack implements IAEItemS return null; } - final ItemStack itemstack = ItemStack.read(i.getCompound(NBT_ITEMSTACK)); + final ItemStack itemstack = ItemStack.fromTag(i.getCompound(NBT_ITEMSTACK)); if (itemstack.isEmpty()) { return null; } @@ -96,7 +96,7 @@ public final class AEItemStack extends AEStack implements IAEItemS @Override public void writeToNBT(final CompoundTag i) { final CompoundTag itemStack = new CompoundTag(); - this.getDefinition().write(itemStack); + this.getDefinition().toTag(itemStack); i.put(NBT_ITEMSTACK, itemStack); i.putLong(NBT_STACKSIZE, this.getStackSize()); @@ -169,7 +169,7 @@ public final class AEItemStack extends AEStack implements IAEItemS @Override public ItemStack createItemStack() { - return ItemHandlerHelper.copyStackWithSize(this.getDefinition(), + return Platform.copyStackWithSize(this.getDefinition(), (int) Math.min(Integer.MAX_VALUE, this.getStackSize())); } @@ -200,7 +200,7 @@ public final class AEItemStack extends AEStack implements IAEItemS int oldSize = otherStack.getCount(); otherStack.setCount(1); - boolean ret = ItemStack.areItemStacksEqual(this.getDefinition(), otherStack); + boolean ret = ItemStack.areEqual(this.getDefinition(), otherStack); otherStack.setCount(oldSize); return ret; @@ -223,7 +223,7 @@ public final class AEItemStack extends AEStack implements IAEItemS @Override public String toString() { - return this.getStackSize() + "x" + this.getDefinition().getItem().getRegistryName(); + return this.getStackSize() + "x" + Registry.ITEM.getId(this.getDefinition().getItem()); } @Environment(EnvType.CLIENT) @@ -244,7 +244,7 @@ public final class AEItemStack extends AEStack implements IAEItemS @Environment(EnvType.CLIENT) public String getModID() { - return this.getDefinition().getItem().getRegistryName().getNamespace(); + return Registry.ITEM.getId(this.getDefinition().getItem()).getNamespace(); } @Override diff --git a/src/main/java/appeng/util/item/AESharedItemStack.java b/src/main/java/appeng/util/item/AESharedItemStack.java index 9ed512eaa..1cbbda73b 100644 --- a/src/main/java/appeng/util/item/AESharedItemStack.java +++ b/src/main/java/appeng/util/item/AESharedItemStack.java @@ -36,7 +36,7 @@ final class AESharedItemStack implements Comparable { public AESharedItemStack(final ItemStack itemStack) { this.itemStack = itemStack; - this.itemId = Item.getIdFromItem(itemStack.getItem()); + this.itemId = Item.getRawId(itemStack.getItem()); this.itemDamage = itemStack.getDamage(); this.hashCode = this.makeHashCode(); } @@ -73,7 +73,7 @@ final class AESharedItemStack implements Comparable { if (this.itemStack == other.itemStack) { return true; } - return ItemStack.areItemStacksEqual(this.itemStack, other.itemStack); + return ItemStack.areEqual(this.itemStack, other.itemStack); } return false; } diff --git a/src/main/java/appeng/util/iterators/InvIterator.java b/src/main/java/appeng/util/iterators/InvIterator.java index b7c7f4e00..ab618046c 100644 --- a/src/main/java/appeng/util/iterators/InvIterator.java +++ b/src/main/java/appeng/util/iterators/InvIterator.java @@ -20,18 +20,18 @@ package appeng.util.iterators; import java.util.Iterator; -import alexiil.mc.lib.attributes.item.ItemTransferable; +import alexiil.mc.lib.attributes.item.FixedItemInv; import net.minecraft.item.ItemStack; public final class InvIterator implements Iterator { - private final ItemTransferable inventory; + private final FixedItemInv inventory; private final int size; private int counter = 0; - public InvIterator(final ItemTransferable inventory) { + public InvIterator(final FixedItemInv inventory) { this.inventory = inventory; - this.size = this.inventory.getSlots(); + this.size = this.inventory.getSlotCount(); } @Override @@ -41,7 +41,7 @@ public final class InvIterator implements Iterator { @Override public ItemStack next() { - final ItemStack result = this.inventory.getStackInSlot(this.counter); + final ItemStack result = this.inventory.getInvStack(this.counter); this.counter++; return result; diff --git a/src/main/java/appeng/worldgen/meteorite/MeteoritePlacer.java b/src/main/java/appeng/worldgen/meteorite/MeteoritePlacer.java index 3eef7bf96..540932f4d 100644 --- a/src/main/java/appeng/worldgen/meteorite/MeteoritePlacer.java +++ b/src/main/java/appeng/worldgen/meteorite/MeteoritePlacer.java @@ -26,7 +26,7 @@ import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.block.entity.BlockEntity; import net.minecraft.entity.Entity; -import net.minecraft.entity.item.ItemEntity; +import net.minecraft.entity.ItemEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.math.Box; diff --git a/src/main/resources/META-INF/accesstransformer.cfg b/src/main/resources/META-INF/accesstransformer.cfg index 69da5a62b..39b45726b 100644 --- a/src/main/resources/META-INF/accesstransformer.cfg +++ b/src/main/resources/META-INF/accesstransformer.cfg @@ -16,4 +16,4 @@ public-f net.minecraft.inventory.container.Slot field_75221_f # yPos public net.minecraft.item.crafting.RecipeManager func_215366_a(Lnet/minecraft/item/crafting/IRecipeType;)Ljava/util/Map; # getRecipes # To disable water-bobbing of item entities (for growing crystals) -protected net.minecraft.entity.item.ItemEntity func_203043_v()V # applyFloatMotion +protected net.minecraft.entity.ItemEntity func_203043_v()V # applyFloatMotion