Merge remote-tracking branch 'origin/master' into fabric-1.16

# Conflicts:
#	build.gradle
#	gradle.properties
#	src/api/java/appeng/api/config/Upgrades.java
#	src/api/java/appeng/api/recipes/ResolverResult.java
#	src/main/java/appeng/block/AEBaseBlockItemChargeable.java
#	src/main/java/appeng/block/crafting/CraftingStorageItem.java
#	src/main/java/appeng/block/misc/ChargerBlock.java
#	src/main/java/appeng/block/networking/CableBusBlock.java
#	src/main/java/appeng/block/storage/ChestBlock.java
#	src/main/java/appeng/block/storage/DriveSlotCellType.java
#	src/main/java/appeng/capabilities/Capabilities.java
#	src/main/java/appeng/client/me/ItemRepo.java
#	src/main/java/appeng/client/render/cablebus/FacadeBuilder.java
#	src/main/java/appeng/client/render/effects/ChargedOreFX.java
#	src/main/java/appeng/client/render/effects/CraftingFx.java
#	src/main/java/appeng/client/render/effects/EnergyFx.java
#	src/main/java/appeng/client/render/effects/LightningArcFX.java
#	src/main/java/appeng/client/render/effects/LightningFX.java
#	src/main/java/appeng/client/render/effects/MatterCannonFX.java
#	src/main/java/appeng/client/render/effects/VibrantFX.java
#	src/main/java/appeng/client/render/spatial/SpatialPylonRendering.java
#	src/main/java/appeng/client/render/tesr/DriveLedTileEntityRenderer.java
#	src/main/java/appeng/container/AEBaseContainer.java
#	src/main/java/appeng/container/implementations/CellWorkbenchContainer.java
#	src/main/java/appeng/container/implementations/MolecularAssemblerContainer.java
#	src/main/java/appeng/container/implementations/PatternTermContainer.java
#	src/main/java/appeng/container/implementations/QuartzKnifeContainer.java
#	src/main/java/appeng/core/AEConfig.java
#	src/main/java/appeng/core/AEItemGroup.java
#	src/main/java/appeng/core/Api.java
#	src/main/java/appeng/core/AppEng.java
#	src/main/java/appeng/core/Registration.java
#	src/main/java/appeng/core/api/definitions/ApiBlocks.java
#	src/main/java/appeng/core/api/definitions/ApiParts.java
#	src/main/java/appeng/core/features/registries/MovableTileRegistry.java
#	src/main/java/appeng/core/features/registries/P2PTunnelRegistry.java
#	src/main/java/appeng/core/features/registries/WirelessRegistry.java
#	src/main/java/appeng/core/features/registries/WorldGenRegistry.java
#	src/main/java/appeng/core/features/registries/cell/BasicItemCellGuiHandler.java
#	src/main/java/appeng/core/sync/BasePacketHandler.java
#	src/main/java/appeng/core/sync/packets/ClickPacket.java
#	src/main/java/appeng/core/sync/packets/PatternSlotPacket.java
#	src/main/java/appeng/crafting/CraftingTreeProcess.java
#	src/main/java/appeng/debug/ReplicatorCardItem.java
#	src/main/java/appeng/entity/ChargedQuartzEntity.java
#	src/main/java/appeng/entity/SingularityEntity.java
#	src/main/java/appeng/entity/TinyTNTPrimedEntity.java
#	src/main/java/appeng/fluids/helper/DualityFluidInterface.java
#	src/main/java/appeng/fluids/helper/FluidCellConfig.java
#	src/main/java/appeng/fluids/parts/FluidFormationPlanePart.java
#	src/main/java/appeng/fluids/parts/FluidHandlerAdapter.java
#	src/main/java/appeng/forge/data/providers/IAE2DataProvider.java
#	src/main/java/appeng/forge/data/providers/recipes/SlabStairRecipes.java
#	src/main/java/appeng/helpers/CraftingPatternDetails.java
#	src/main/java/appeng/helpers/DualityInterface.java
#	src/main/java/appeng/helpers/WirelessTerminalGuiObject.java
#	src/main/java/appeng/hooks/IBlockTool.java
#	src/main/java/appeng/hooks/TickHandler.java
#	src/main/java/appeng/integration/modules/jei/CondenserCategory.java
#	src/main/java/appeng/integration/modules/jei/JEIPlugin.java
#	src/main/java/appeng/items/misc/EncodedPatternItem.java
#	src/main/java/appeng/items/parts/FacadeItem.java
#	src/main/java/appeng/items/parts/PartItem.java
#	src/main/java/appeng/items/storage/AbstractStorageCell.java
#	src/main/java/appeng/items/storage/CreativeStorageCellItem.java
#	src/main/java/appeng/items/tools/powered/ColorApplicatorItem.java
#	src/main/java/appeng/items/tools/powered/EntropyManipulatorItem.java
#	src/main/java/appeng/items/tools/powered/MatterCannonItem.java
#	src/main/java/appeng/items/tools/powered/WirelessTerminalItem.java
#	src/main/java/appeng/me/cluster/implementations/CraftingCPUCluster.java
#	src/main/java/appeng/me/storage/MEMonitorIFluidHandler.java
#	src/main/java/appeng/parts/PartPlacement.java
#	src/main/java/appeng/parts/automation/FormationPlanePart.java
#	src/main/java/appeng/parts/p2p/FluidP2PTunnelPart.java
#	src/main/java/appeng/parts/reporting/PatternTerminalPart.java
#	src/main/java/appeng/spatial/CachedPlane.java
#	src/main/java/appeng/spatial/StorageChunkGenerator.java
#	src/main/java/appeng/spatial/StorageHelper.java
#	src/main/java/appeng/tile/crafting/CraftingBlockEntity.java
#	src/main/java/appeng/tile/crafting/CraftingStorageBlockEntity.java
#	src/main/java/appeng/tile/crafting/MolecularAssemblerBlockEntity.java
#	src/main/java/appeng/tile/inventory/AppEngInternalAEInventory.java
#	src/main/java/appeng/tile/misc/ChargerBlockEntity.java
#	src/main/java/appeng/tile/misc/CondenserBlockEntity.java
#	src/main/java/appeng/tile/misc/InscriberBlockEntity.java
#	src/main/java/appeng/tile/misc/InscriberRecipes.java
#	src/main/java/appeng/tile/qnb/QuantumBridgeBlockEntity.java
#	src/main/java/appeng/tile/storage/ChestBlockEntity.java
#	src/main/java/appeng/tile/storage/DriveBlockEntity.java
#	src/main/java/appeng/util/Platform.java
#	src/main/java/team/chisel/ctm/api/IFacade.java
#	src/main/resources/assets/appliedenergistics2/models/block/chest/base.json
#	src/unported/java/appeng/client/render/FacadeItemModel.java
#	src/unported/java/appeng/client/render/model/DriveBakedModel.java
#	src/unported/java/appeng/client/render/model/DriveModel.java
#	src/unported/java/appeng/core/PluginLoader.java
This commit is contained in:
Sebastian Hartte
2020-07-18 01:45:43 +02:00
233 changed files with 2321 additions and 1937 deletions
@@ -21,7 +21,6 @@ package appeng.items.contents;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundTag;
import appeng.api.AEApi;
import appeng.api.config.Actionable;
import appeng.api.config.PowerMultiplier;
import appeng.api.config.Settings;
@@ -37,6 +36,7 @@ import appeng.api.storage.data.IAEItemStack;
import appeng.api.storage.data.IAEStack;
import appeng.api.util.IConfigManager;
import appeng.container.interfaces.IInventorySlotAware;
import appeng.core.Api;
import appeng.me.helpers.MEMonitorHandler;
import appeng.util.ConfigManager;
@@ -47,8 +47,8 @@ public class PortableCellViewer extends MEMonitorHandler<IAEItemStack> implement
private final int inventorySlot;
public PortableCellViewer(final ItemStack is, final int slot) {
super(AEApi.instance().registries().cell().getCellInventory(is, null,
AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class)));
super(Api.instance().registries().cell().getCellInventory(is, null,
Api.instance().storage().getStorageChannel(IItemStorageChannel.class)));
this.ips = (IAEItemPowerStorage) is.getItem();
this.target = is;
this.inventorySlot = slot;
@@ -77,7 +77,7 @@ public class PortableCellViewer extends MEMonitorHandler<IAEItemStack> implement
@Override
public <T extends IAEStack<T>> IMEMonitor<T> getInventory(IStorageChannel<T> channel) {
if (channel == AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class)) {
if (channel == Api.instance().storage().getStorageChannel(IItemStorageChannel.class)) {
return (IMEMonitor<T>) this;
}
return null;
@@ -18,12 +18,16 @@
package appeng.items.misc;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.WeakHashMap;
import appeng.hooks.AEToolItem;
import net.minecraft.client.item.TooltipContext;
import com.google.common.base.Preconditions;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.item.ItemStack;
@@ -31,25 +35,34 @@ import net.minecraft.item.ItemUsageContext;
import net.minecraft.text.LiteralText;
import net.minecraft.text.MutableText;
import net.minecraft.util.TypedActionResult;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.nbt.INBT;
import net.minecraft.nbt.ListNBT;
import net.minecraft.util.ActionResult;
import net.minecraft.util.Hand;
import net.minecraft.util.ResourceLocation;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import net.minecraft.world.World;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraftforge.common.util.Constants;
import appeng.api.AEApi;
import appeng.api.implementations.ICraftingPatternItem;
import appeng.api.networking.crafting.ICraftingPatternDetails;
import appeng.api.storage.channels.IItemStorageChannel;
import appeng.api.storage.data.IAEItemStack;
import appeng.core.localization.GuiText;
import appeng.helpers.InvalidPatternHelper;
import appeng.helpers.PatternHelper;
import appeng.items.AEBaseItem;
import appeng.util.Platform;
public class EncodedPatternItem extends AEBaseItem implements ICraftingPatternItem, AEToolItem {
public class EncodedPatternItem extends AEBaseItem, AEToolItem {
public static final String NBT_INGREDIENTS = "in";
public static final String NBT_PRODUCTS = "out";
public static final String NBT_SUBSITUTE = "substitute";
public static final String NBT_RECIPE_ID = "recipe";
// rather simple client side caching.
private static final Map<ItemStack, ItemStack> SIMPLE_CACHE = new WeakHashMap<>();
@@ -77,7 +90,7 @@ public class EncodedPatternItem extends AEBaseItem implements ICraftingPatternIt
final PlayerInventory inv = player.inventory;
ItemStack is = AEApi.instance().definitions().materials().blankPattern().maybeStack(stack.getCount())
ItemStack is = Api.instance().definitions().materials().blankPattern().maybeStack(stack.getCount())
.orElse(ItemStack.EMPTY);
if (!is.isEmpty()) {
for (int s = 0; s < player.inventory.size(); s++) {
@@ -96,7 +109,7 @@ public class EncodedPatternItem extends AEBaseItem implements ICraftingPatternIt
@Environment(EnvType.CLIENT)
public void appendTooltip(final ItemStack stack, final World world, final List<Text> lines,
final TooltipContext advancedTooltips) {
final ICraftingPatternDetails details = this.getPatternForItem(stack, world);
final ICraftingPatternDetails details = Api.instance().crafting().decodePattern(stack, world);
if (details == null) {
if (!stack.hasTag()) {
@@ -182,15 +195,6 @@ public class EncodedPatternItem extends AEBaseItem implements ICraftingPatternIt
}
}
@Override
public ICraftingPatternDetails getPatternForItem(final ItemStack is, final World w) {
try {
return new PatternHelper(is, w);
} catch (final Throwable t) {
return null;
}
}
public ItemStack getOutput(World w, final ItemStack item) {
ItemStack out = SIMPLE_CACHE.get(item);
@@ -198,11 +202,127 @@ public class EncodedPatternItem extends AEBaseItem implements ICraftingPatternIt
return out;
}
final ICraftingPatternDetails details = this.getPatternForItem(item, w);
final ICraftingPatternDetails details = Api.instance().crafting().decodePattern(item, w);
out = details != null ? details.getOutputs()[0].createItemStack() : ItemStack.EMPTY;
SIMPLE_CACHE.put(item, out);
return out;
}
public boolean isEncodedPattern(ItemStack itemStack) {
return itemStack != null && !itemStack.isEmpty() && itemStack.getItem() == this && itemStack.getTag() != null
&& itemStack.getTag().contains(NBT_INGREDIENTS, Constants.NBT.TAG_LIST)
&& itemStack.getTag().contains(NBT_PRODUCTS, Constants.NBT.TAG_LIST);
}
public ResourceLocation getCraftingRecipeId(ItemStack itemStack) {
Preconditions.checkArgument(itemStack.getItem() == this, "Given item stack %s is not an encoded pattern.",
itemStack);
final CompoundNBT tag = itemStack.getTag();
Preconditions.checkArgument(tag != null, "itemStack missing a NBT tag");
return new ResourceLocation(tag.getString(NBT_RECIPE_ID));
}
public List<IAEItemStack> getIngredients(ItemStack itemStack) {
Preconditions.checkArgument(itemStack.getItem() == this, "Given item stack %s is not an encoded pattern.",
itemStack);
final CompoundNBT tag = itemStack.getTag();
Preconditions.checkArgument(tag != null, "itemStack missing a NBT tag");
final ListNBT inTag = tag.getList(NBT_INGREDIENTS, 10);
Preconditions.checkArgument(inTag.size() < 10, "Cannot use more than 9 ingredients");
final List<IAEItemStack> in = new ArrayList<>(inTag.size());
for (int x = 0; x < inTag.size(); x++) {
CompoundNBT ingredient = inTag.getCompound(x);
final ItemStack gs = ItemStack.read(ingredient);
Preconditions.checkArgument(!(!ingredient.isEmpty() && gs.isEmpty()), "invalid itemStack in slot", x);
in.add(Api.instance().storage().getStorageChannel(IItemStorageChannel.class).createStack(gs));
}
return in;
}
public List<IAEItemStack> getProducts(ItemStack itemStack) {
Preconditions.checkArgument(itemStack.getItem() == this, "Given item stack %s is not an encoded pattern.",
itemStack);
final CompoundNBT tag = itemStack.getTag();
Preconditions.checkArgument(tag != null, "itemStack missing a NBT tag");
final ListNBT outTag = tag.getList(NBT_PRODUCTS, 10);
Preconditions.checkArgument(outTag.size() < 4, "Cannot use more than 3 ingredients");
final List<IAEItemStack> out = new ArrayList<>(outTag.size());
for (int x = 0; x < outTag.size(); x++) {
CompoundNBT ingredient = outTag.getCompound(x);
final ItemStack gs = ItemStack.read(ingredient);
Preconditions.checkArgument(!(!ingredient.isEmpty() && gs.isEmpty()), "invalid itemStack in slot", x);
out.add(Api.instance().storage().getStorageChannel(IItemStorageChannel.class).createStack(gs));
}
return out;
}
public boolean allowsSubstitution(ItemStack itemStack) {
final CompoundNBT tag = itemStack.getTag();
Preconditions.checkArgument(tag != null, "itemStack missing a NBT tag");
return getCraftingRecipeId(itemStack) == null && tag.getBoolean(NBT_SUBSITUTE);
}
/**
* Use the public API instead {@link appeng.core.api.ApiCrafting}
*/
public static void encodeCraftingPattern(ItemStack stack, ItemStack[] in, ItemStack[] out,
ResourceLocation recipeId, boolean allowSubstitutes) {
CompoundNBT encodedValue = encodeInputsAndOutputs(in, out);
encodedValue.putString(EncodedPatternItem.NBT_RECIPE_ID, recipeId.toString());
encodedValue.putBoolean(EncodedPatternItem.NBT_SUBSITUTE, allowSubstitutes);
stack.setTag(encodedValue);
}
/**
* Use the public API instead {@link appeng.core.api.ApiCrafting}
*/
public static void encodeProcessingPattern(ItemStack stack, ItemStack[] in, ItemStack[] out) {
stack.setTag(encodeInputsAndOutputs(in, out));
}
private static CompoundNBT encodeInputsAndOutputs(ItemStack[] in, ItemStack[] out) {
final CompoundNBT encodedValue = new CompoundNBT();
final ListNBT tagIn = new ListNBT();
final ListNBT tagOut = new ListNBT();
for (final ItemStack i : in) {
tagIn.add(createItemTag(i));
}
for (final ItemStack i : out) {
tagOut.add(createItemTag(i));
}
encodedValue.put(EncodedPatternItem.NBT_INGREDIENTS, tagIn);
encodedValue.put(EncodedPatternItem.NBT_PRODUCTS, tagOut);
return encodedValue;
}
private static INBT createItemTag(final ItemStack i) {
final CompoundNBT c = new CompoundNBT();
if (!i.isEmpty()) {
i.write(c);
}
return c;
}
}
@@ -28,7 +28,12 @@ import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.client.render.RenderLayers;
import net.minecraft.item.*;
import net.minecraft.item.BlockItem;
import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemUseContext;
import net.minecraft.item.Items;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.tag.BlockTags;
import net.minecraft.tag.Tag;
@@ -40,12 +45,12 @@ import net.minecraft.util.registry.Registry;
import net.minecraft.text.Text;
import net.minecraft.world.EmptyBlockView;
import appeng.api.AEApi;
import appeng.api.exceptions.MissingDefinitionException;
import appeng.api.features.AEFeature;
import appeng.api.parts.IAlphaPassItem;
import appeng.api.util.AEPartLocation;
import appeng.core.AEConfig;
import appeng.core.Api;
import appeng.core.AppEng;
import appeng.facade.FacadePart;
import appeng.facade.IFacadeItem;
@@ -67,7 +72,7 @@ public class FacadeItem extends AEBaseItem implements IFacadeItem, IAlphaPassIte
@Override
public ActionResult onItemUseFirst(ItemStack stack, ItemUsageContext context) {
return AEApi.instance().partHelper().placeBus(stack, context.getBlockPos(), context.getSide(), context.getPlayer(),
return Api.instance().partHelper().placeBus(stack, context.getBlockPos(), context.getSide(), context.getPlayer(),
context.getHand(), context.getWorld());
}
@@ -176,7 +181,7 @@ public class FacadeItem extends AEBaseItem implements IFacadeItem, IAlphaPassIte
}
public ItemStack createFromID(final int id) {
ItemStack facadeStack = AEApi.instance().definitions().items().facade().maybeStack(1).orElseThrow(
ItemStack facadeStack = Api.instance().definitions().items().facade().maybeStack(1).orElseThrow(
() -> new MissingDefinitionException("Tried to create a facade, while facades are being deactivated."));
// Convert back to a registry name...
@@ -25,9 +25,9 @@ import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemUsageContext;
import net.minecraft.util.ActionResult;
import appeng.api.AEApi;
import appeng.api.parts.IPart;
import appeng.api.parts.IPartItem;
import appeng.core.Api;
import appeng.items.AEBaseItem;
public class PartItem<T extends IPart> extends AEBaseItem implements IPartItem<T> {
@@ -47,7 +47,7 @@ public class PartItem<T extends IPart> extends AEBaseItem implements IPartItem<T
return ActionResult.PASS;
}
return AEApi.instance().partHelper().placeBus(held, context.getBlockPos(), context.getSide(), player,
return Api.instance().partHelper().placeBus(held, context.getBlockPos(), context.getSide(), player,
context.getHand(), context.getWorld());
}
@@ -19,7 +19,6 @@
package appeng.items.storage;
import java.util.List;
import java.util.Set;
import alexiil.mc.lib.attributes.item.FixedItemInv;
import appeng.hooks.AEToolItem;
@@ -36,7 +35,6 @@ import net.minecraft.text.Text;
import net.minecraft.world.World;
import net.fabricmc.api.Environment;
import appeng.api.AEApi;
import appeng.api.config.FuzzyMode;
import appeng.api.exceptions.MissingDefinitionException;
import appeng.api.features.AEFeature;
@@ -47,7 +45,7 @@ import appeng.api.storage.data.IAEItemStack;
import appeng.api.storage.data.IAEStack;
import appeng.api.storage.data.IItemList;
import appeng.core.AEConfig;
import appeng.core.localization.GuiText;
import appeng.core.Api;
import appeng.items.AEBaseItem;
import appeng.items.contents.CellConfig;
import appeng.items.contents.CellUpgrades;
@@ -74,8 +72,8 @@ public abstract class AbstractStorageCell<T extends IAEStack<T>> extends AEBaseI
@Override
public void appendTooltip(final ItemStack stack, final World world, final List<Text> lines,
final TooltipContext advancedTooltips) {
AEApi.instance().client().addCellInformation(
AEApi.instance().registries().cell().getCellInventory(stack, null, this.getChannel()), lines);
Api.instance().client().addCellInformation(
Api.instance().registries().cell().getCellInventory(stack, null, this.getChannel()), lines);
}
@Override
@@ -121,6 +119,9 @@ public abstract class AbstractStorageCell<T extends IAEStack<T>> extends AEBaseI
@Override
public FuzzyMode getFuzzyMode(final ItemStack is) {
final String fz = is.getOrCreateTag().getString("FuzzyMode");
if (fz.isEmpty()) {
return FuzzyMode.IGNORE_ALL;
}
try {
return FuzzyMode.valueOf(fz);
} catch (final Throwable t) {
@@ -146,7 +147,7 @@ public abstract class AbstractStorageCell<T extends IAEStack<T>> extends AEBaseI
}
final PlayerInventory playerInventory = player.inventory;
final IMEInventoryHandler inv = AEApi.instance().registries().cell().getCellInventory(stack, null,
final IMEInventoryHandler inv = Api.instance().registries().cell().getCellInventory(stack, null,
this.getChannel());
if (inv != null && playerInventory.getMainHandStack() == stack) {
final InventoryAdaptor ia = InventoryAdaptor.getAdaptor(player);
@@ -195,7 +196,7 @@ public abstract class AbstractStorageCell<T extends IAEStack<T>> extends AEBaseI
// FIXME FABRIC: Handle this in the disassemble recipe
// FIXME FABRIC @Override
// FIXME FABRIC public ItemStack getRecipeRemainder(final ItemStack itemStack) {
// FIXME FABRIC return AEApi.instance().definitions().materials().emptyStorageCell().maybeStack(1)
// FIXME FABRIC return Api.instance().definitions().materials().emptyStorageCell().maybeStack(1)
// FIXME FABRIC .orElseThrow(() -> new MissingDefinitionException(
// FIXME FABRIC "Tried to use empty storage cells while basic storage cells are defined."));
// FIXME FABRIC }
@@ -21,10 +21,10 @@ package appeng.items.storage;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import appeng.api.AEApi;
import appeng.api.storage.IStorageChannel;
import appeng.api.storage.channels.IItemStorageChannel;
import appeng.api.storage.data.IAEItemStack;
import appeng.core.Api;
import appeng.items.materials.MaterialType;
import appeng.util.InventoryAdaptor;
@@ -71,12 +71,12 @@ public final class BasicStorageCellItem extends AbstractStorageCell<IAEItemStack
@Override
public IStorageChannel<IAEItemStack> getChannel() {
return AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class);
return Api.instance().storage().getStorageChannel(IItemStorageChannel.class);
}
@Override
protected void dropEmptyStorageCellCase(final InventoryAdaptor ia, final PlayerEntity player) {
AEApi.instance().definitions().materials().emptyStorageCell().maybeStack(1).ifPresent(is -> {
Api.instance().definitions().materials().emptyStorageCell().maybeStack(1).ifPresent(is -> {
final ItemStack extraA = ia.addItems(is);
if (!extraA.isEmpty()) {
player.dropItem(extraA, false);
@@ -28,12 +28,12 @@ import net.minecraft.item.ItemStack;
import net.minecraft.text.Text;
import net.minecraft.world.World;
import appeng.api.AEApi;
import appeng.api.config.FuzzyMode;
import appeng.api.storage.IMEInventoryHandler;
import appeng.api.storage.cells.ICellInventoryHandler;
import appeng.api.storage.cells.ICellWorkbenchItem;
import appeng.api.storage.channels.IItemStorageChannel;
import appeng.core.Api;
import appeng.items.AEBaseItem;
import appeng.items.contents.CellConfig;
@@ -72,8 +72,8 @@ public class CreativeStorageCellItem extends AEBaseItem implements ICellWorkbenc
@Override
public void appendTooltip(final ItemStack stack, final World world, final List<Text> lines,
final TooltipContext advancedTooltips) {
final IMEInventoryHandler<?> inventory = AEApi.instance().registries().cell().getCellInventory(stack, null,
AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class));
final IMEInventoryHandler<?> inventory = Api.instance().registries().cell().getCellInventory(stack, null,
Api.instance().storage().getStorageChannel(IItemStorageChannel.class));
if (inventory instanceof ICellInventoryHandler) {
final CellConfig cc = new CellConfig(stack);
@@ -21,7 +21,6 @@ package appeng.items.storage;
import alexiil.mc.lib.attributes.item.FixedItemInv;
import net.minecraft.item.ItemStack;
import appeng.api.AEApi;
import appeng.api.config.FuzzyMode;
import appeng.api.config.Upgrades;
import appeng.api.implementations.items.IUpgradeModule;
@@ -29,6 +28,7 @@ import appeng.api.storage.cells.ICellWorkbenchItem;
import appeng.api.storage.channels.IItemStorageChannel;
import appeng.api.storage.data.IAEItemStack;
import appeng.api.storage.data.IItemList;
import appeng.core.Api;
import appeng.items.AEBaseItem;
import appeng.items.contents.CellConfig;
import appeng.items.contents.CellUpgrades;
@@ -55,7 +55,7 @@ public class ViewCellItem extends AEBaseItem implements ICellWorkbenchItem {
}
if ((currentViewCell.getItem() instanceof ViewCellItem)) {
final IItemList<IAEItemStack> priorityList = AEApi.instance().storage()
final IItemList<IAEItemStack> priorityList = Api.instance().storage()
.getStorageChannel(IItemStorageChannel.class).createList();
final ICellWorkbenchItem vc = (ICellWorkbenchItem) currentViewCell.getItem();
@@ -35,6 +35,7 @@ import appeng.api.util.DimensionalCoord;
import appeng.block.networking.CableBusBlock;
import appeng.block.paint.PaintSplotchesBlock;
import appeng.core.AEConfig;
import appeng.core.Api;
import appeng.core.AppEng;
import appeng.core.localization.GuiText;
import appeng.helpers.IMouseWheelItem;
@@ -131,8 +132,8 @@ public class ColorApplicatorItem extends AEBasePoweredItem
ItemStack paintBall = this.getColor(is);
final IMEInventory<IAEItemStack> inv = AEApi.instance().registries().cell().getCellInventory(is, null,
AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class));
final IMEInventory<IAEItemStack> inv = Api.instance().registries().cell().getCellInventory(is, null,
Api.instance().storage().getStorageChannel(IItemStorageChannel.class));
if (inv != null) {
final IAEItemStack option = inv.extractItems(AEItemStack.fromItemStack(paintBall), Actionable.SIMULATE,
new BaseActionSource());
@@ -252,11 +253,11 @@ public class ColorApplicatorItem extends AEBasePoweredItem
private ItemStack findNextColor(final ItemStack is, final ItemStack anchor, final int scrollOffset) {
ItemStack newColor = ItemStack.EMPTY;
final IMEInventory<IAEItemStack> inv = AEApi.instance().registries().cell().getCellInventory(is, null,
AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class));
final IMEInventory<IAEItemStack> inv = Api.instance().registries().cell().getCellInventory(is, null,
Api.instance().storage().getStorageChannel(IItemStorageChannel.class));
if (inv != null) {
final IItemList<IAEItemStack> itemList = inv.getAvailableItems(
AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class).createList());
Api.instance().storage().getStorageChannel(IItemStorageChannel.class).createList());
if (anchor.isEmpty()) {
final IAEItemStack firstItem = itemList.getFirstItem();
if (firstItem != null) {
@@ -373,10 +374,10 @@ public class ColorApplicatorItem extends AEBasePoweredItem
final TooltipContext advancedTooltips) {
super.appendTooltip(stack, world, lines, advancedTooltips);
final ICellInventoryHandler<IAEItemStack> cdi = AEApi.instance().registries().cell().getCellInventory(stack,
null, AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class));
final ICellInventoryHandler<IAEItemStack> cdi = Api.instance().registries().cell().getCellInventory(stack, null,
Api.instance().storage().getStorageChannel(IItemStorageChannel.class));
AEApi.instance().client().addCellInformation(cdi, lines);
Api.instance().client().addCellInformation(cdi, lines);
}
@Override
@@ -419,7 +420,7 @@ public class ColorApplicatorItem extends AEBasePoweredItem
@Override
public IStorageChannel<IAEItemStack> getChannel() {
return AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class);
return Api.instance().storage().getStorageChannel(IItemStorageChannel.class);
}
@Override
@@ -18,7 +18,12 @@
package appeng.items.tools.powered;
import java.util.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import appeng.mixins.TntAccessor;
import appeng.util.FakePlayer;
@@ -28,14 +33,23 @@ import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.fluid.Fluid;
import net.minecraft.fluid.Fluids;
import net.minecraft.inventory.CraftingInventory;
import net.minecraft.item.*;
import net.minecraft.item.BlockItem;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemUseContext;
import net.minecraft.item.Items;
import net.minecraft.recipe.RecipeType;
import net.minecraft.particle.ParticleTypes;
import net.minecraft.recipe.SmeltingRecipe;
import net.minecraft.sound.SoundCategory;
import net.minecraft.sound.SoundEvents;
import net.minecraft.state.property.Properties;
import net.minecraft.util.*;
import net.minecraft.util.ActionResult;
import net.minecraft.util.ActionResultType;
import net.minecraft.util.Direction;
import net.minecraft.util.Hand;
import net.minecraft.util.SoundCategory;
import net.minecraft.util.SoundEvents;
import net.minecraft.util.hit.BlockHitResult;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction;
@@ -52,7 +52,6 @@ import net.minecraft.text.Text;
import net.minecraft.world.World;
import net.fabricmc.api.Environment;
import appeng.api.AEApi;
import appeng.api.config.Actionable;
import appeng.api.config.FuzzyMode;
import appeng.api.config.Upgrades;
@@ -67,6 +66,7 @@ import appeng.api.util.AEColor;
import appeng.api.util.DimensionalCoord;
import appeng.core.AEConfig;
import appeng.core.AELog;
import appeng.core.Api;
import appeng.core.AppEng;
import appeng.core.localization.PlayerMessages;
import appeng.core.sync.network.NetworkHandler;
@@ -99,10 +99,10 @@ public class MatterCannonItem extends AEBasePoweredItem implements IStorageCell<
final TooltipContext advancedTooltips) {
super.appendTooltip(stack, world, lines, advancedTooltips);
final ICellInventoryHandler<IAEItemStack> cdi = AEApi.instance().registries().cell().getCellInventory(stack,
null, AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class));
final ICellInventoryHandler<IAEItemStack> cdi = Api.instance().registries().cell().getCellInventory(stack, null,
Api.instance().storage().getStorageChannel(IItemStorageChannel.class));
AEApi.instance().client().addCellInformation(cdi, lines);
Api.instance().client().addCellInformation(cdi, lines);
}
@Override
@@ -115,11 +115,11 @@ public class MatterCannonItem extends AEBasePoweredItem implements IStorageCell<
shots += cu.getInstalledUpgrades(Upgrades.SPEED);
}
final ICellInventoryHandler<IAEItemStack> inv = AEApi.instance().registries().cell().getCellInventory(
p.getStackInHand(hand), null, AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class));
final ICellInventoryHandler<IAEItemStack> inv = Api.instance().registries().cell().getCellInventory(
p.getStackInHand(hand), null, Api.instance().storage().getStorageChannel(IItemStorageChannel.class));
if (inv != null) {
final IItemList<IAEItemStack> itemList = inv.getAvailableItems(
AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class).createList());
Api.instance().storage().getStorageChannel(IItemStorageChannel.class).createList());
IAEItemStack req = itemList.getFirstItem();
if (req instanceof IAEItemStack) {
shots = Math.min(shots, (int) req.getStackSize());
@@ -153,7 +153,7 @@ public class MatterCannonItem extends AEBasePoweredItem implements IStorageCell<
final double d1 = rayFrom.y;
final double d2 = rayFrom.z;
final float penetration = AEApi.instance().registries().matterCannon().getPenetration(ammo); // 196.96655f;
final float penetration = Api.instance().registries().matterCannon().getPenetration(ammo); // 196.96655f;
if (penetration <= 0) {
final ItemStack type = aeAmmo.asItemStackRepresentation();
if (type.getItem() instanceof PaintBallItem) {
@@ -189,26 +189,24 @@ public class MatterCannonItem extends AEBasePoweredItem implements IStorageCell<
for (int l = 0; l < list.size(); ++l) {
final Entity entity1 = (Entity) list.get(l);
if (!entity1.isAlive() && entity1 != p && !(entity1 instanceof ItemEntity)) {
if (entity1.isAlive()) {
// prevent killing / flying of mounts.
if (entity1.isConnectedThroughVehicle(p)) {
continue;
}
if (entity1.isAlive() && entity1 != p && !(entity1 instanceof ItemEntity)) {
// prevent killing / flying of mounts.
if (entity1.isConnectedThroughVehicle(p)) {
continue;
}
final float f1 = 0.3F;
final float f1 = 0.3F;
final Box boundingBox = entity1.getBoundingBox().expand(f1, f1, f1);
final Vec3d intersection = boundingBox.rayTrace(Vec3d, Vec3d1).orElse(null);
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.squaredDistanceTo(intersection);
if (intersection != null) {
final double nd = Vec3d.squaredDistanceTo(intersection);
if (nd < closest) {
entity = entity1;
entityIntersection = intersection;
closest = nd;
}
if (nd < closest) {
entity = entity1;
entityIntersection = intersection;
closest = nd;
}
}
}
@@ -267,7 +265,7 @@ public class MatterCannonItem extends AEBasePoweredItem implements IStorageCell<
final BlockState whatsThere = w.getBlockState(hitPos);
if (whatsThere.getMaterial().isReplaceable() && w.isAir(hitPos)) {
AEApi.instance().definitions().blocks().paint().maybeBlock().ifPresent(paintBlock -> {
Api.instance().definitions().blocks().paint().maybeBlock().ifPresent(paintBlock -> {
w.setBlockState(hitPos, paintBlock.getDefaultState(), 3);
});
}
@@ -438,7 +436,7 @@ public class MatterCannonItem extends AEBasePoweredItem implements IStorageCell<
@Override
public boolean isBlackListed(final ItemStack cellItem, final IAEItemStack requestedAddition) {
final float pen = AEApi.instance().registries().matterCannon()
final float pen = Api.instance().registries().matterCannon()
.getPenetration(requestedAddition.createItemStack());
if (pen > 0) {
return false;
@@ -468,6 +466,6 @@ public class MatterCannonItem extends AEBasePoweredItem implements IStorageCell<
@Override
public IStorageChannel<IAEItemStack> getChannel() {
return AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class);
return Api.instance().storage().getStorageChannel(IItemStorageChannel.class);
}
}
@@ -19,7 +19,6 @@
package appeng.items.tools.powered;
import java.util.List;
import java.util.Set;
import net.minecraft.client.item.TooltipContext;
import net.minecraft.entity.player.PlayerEntity;
@@ -35,7 +34,6 @@ import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import alexiil.mc.lib.attributes.item.FixedItemInv;
import appeng.api.AEApi;
import appeng.api.config.FuzzyMode;
import appeng.api.implementations.guiobjects.IGuiItem;
import appeng.api.implementations.guiobjects.IGuiItemObject;
@@ -48,7 +46,7 @@ import appeng.container.ContainerLocator;
import appeng.container.ContainerOpener;
import appeng.container.implementations.MEPortableCellContainer;
import appeng.core.AEConfig;
import appeng.core.localization.GuiText;
import appeng.core.Api;
import appeng.items.contents.CellConfig;
import appeng.items.contents.CellUpgrades;
import appeng.items.contents.PortableCellViewer;
@@ -71,10 +69,10 @@ public class PortableCellItem extends AEBasePoweredItem implements IStorageCell<
final TooltipContext advancedTooltips) {
super.appendTooltip(stack, world, lines, advancedTooltips);
final ICellInventoryHandler<IAEItemStack> cdi = AEApi.instance().registries().cell().getCellInventory(stack,
null, AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class));
final ICellInventoryHandler<IAEItemStack> cdi = Api.instance().registries().cell().getCellInventory(stack, null,
Api.instance().storage().getStorageChannel(IItemStorageChannel.class));
AEApi.instance().client().addCellInformation(cdi, lines);
Api.instance().client().addCellInformation(cdi, lines);
}
@Override
@@ -114,7 +112,7 @@ public class PortableCellItem extends AEBasePoweredItem implements IStorageCell<
@Override
public IStorageChannel<IAEItemStack> getChannel() {
return AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class);
return Api.instance().storage().getStorageChannel(IItemStorageChannel.class);
}
@Override
@@ -36,9 +36,15 @@ import net.minecraft.text.Text;
import net.minecraft.world.World;
import appeng.api.AEApi;
import appeng.api.config.Actionable;
import appeng.api.config.Settings;
import appeng.api.config.SortDir;
import appeng.api.config.SortOrder;
import appeng.api.config.ViewItems;
import appeng.api.features.IWirelessTermHandler;
import appeng.api.util.IConfigManager;
import appeng.core.AEConfig;
import appeng.core.Api;
import appeng.core.localization.GuiText;
import appeng.items.tools.powered.powersink.AEBasePoweredItem;
import appeng.util.ConfigManager;
@@ -51,7 +57,7 @@ public class WirelessTerminalItem extends AEBasePoweredItem implements IWireless
@Override
public TypedActionResult<ItemStack> use(final World w, final PlayerEntity player, final Hand hand) {
AEApi.instance().registries().wireless().openWirelessTerminalGui(player.getStackInHand(hand), w, player, hand);
Api.instance().registries().wireless().openWirelessTerminalGui(player.getStackInHand(hand), w, player, hand);
return new TypedActionResult<>(ActionResult.SUCCESS, player.getStackInHand(hand));
}
@@ -79,7 +85,7 @@ public class WirelessTerminalItem extends AEBasePoweredItem implements IWireless
@Override
public boolean canHandle(final ItemStack is) {
return AEApi.instance().definitions().items().wirelessTerminal().isSameAs(is);
return Api.instance().definitions().items().wirelessTerminal().isSameAs(is);
}
@Override