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
@@ -52,6 +52,7 @@ import appeng.api.storage.data.IAEStack;
import appeng.api.util.AEColor;
import appeng.api.util.IConfigManager;
import appeng.container.implementations.MEMonitorableContainer;
import appeng.core.Api;
import appeng.fluids.util.AEFluidStack;
import appeng.helpers.IPriorityHost;
import appeng.me.GridAccessException;
@@ -112,6 +113,10 @@ public class ChestBlockEntity extends AENetworkPowerBlockEntity
private ChestMonitorHandler cellHandler;
private Accessor accessor;
private FluidInsertable fluidInsertable;
// This is only used on the client to display the right cell model without
// synchronizing the entire
// cell's inventory when a chest comes into view.
private Item cellItem = Items.AIR;
public ChestBlockEntity(BlockEntityType<?> tileEntityTypeIn) {
super(tileEntityTypeIn);
@@ -188,11 +193,11 @@ public class ChestBlockEntity extends AENetworkPowerBlockEntity
final ItemStack is = this.getCell();
if (!is.isEmpty()) {
this.isCached = true;
ICellHandler cellHandler = AEApi.instance().registries().cell().getHandler(is);
ICellHandler cellHandler = Api.instance().registries().cell().getHandler(is);
if (cellHandler != null) {
double power = 1.0;
for (IStorageChannel channel : AEApi.instance().storage().storageChannels()) {
for (IStorageChannel channel : Api.instance().storage().storageChannels()) {
final ICellInventoryHandler<IAEItemStack> newCell = cellHandler.getCellInventory(is, this,
channel);
if (newCell != null) {
@@ -205,7 +210,7 @@ public class ChestBlockEntity extends AENetworkPowerBlockEntity
this.getProxy().setIdlePowerUsage(power);
this.accessor = new Accessor();
if (this.cellHandler != null && this.cellHandler.getChannel() == AEApi.instance().storage()
if (this.cellHandler != null && this.cellHandler.getChannel() == Api.instance().storage()
.getStorageChannel(IFluidStorageChannel.class)) {
this.fluidInsertable = new FluidHandler();
}
@@ -237,7 +242,7 @@ public class ChestBlockEntity extends AENetworkPowerBlockEntity
this.updateHandler();
final ItemStack cell = this.getCell();
final ICellHandler ch = AEApi.instance().registries().cell().getHandler(cell);
final ICellHandler ch = Api.instance().registries().cell().getHandler(cell);
if (this.cellHandler != null && ch != null) {
return ch.getStatusForCell(cell, this.cellHandler.getInternalHandler());
@@ -252,6 +257,10 @@ public class ChestBlockEntity extends AENetworkPowerBlockEntity
if (slot != 0) {
return null;
}
// Client-side we'll need to actually use the synced state
if (world == null || world.isRemote) {
return cellItem;
}
ItemStack cell = getCell();
return cell.isEmpty() ? null : cell.getItem();
}
@@ -343,6 +352,12 @@ public class ChestBlockEntity extends AENetworkPowerBlockEntity
data.writeByte(this.state);
data.writeByte(this.paintedColor.ordinal());
// Note that we trust that the change detection in recalculateDisplay will trip
// when it changes from
// empty->non-empty, so when the cell is changed, it should re-send the state
// because of that
data.writeRegistryIdUnsafe(ForgeRegistries.ITEMS, getCell().getItem().getRegistryName());
}
@Override
@@ -354,6 +369,7 @@ public class ChestBlockEntity extends AENetworkPowerBlockEntity
this.state = data.readByte();
final AEColor oldPaintedColor = this.paintedColor;
this.paintedColor = AEColor.values()[data.readByte()];
this.cellItem = data.readRegistryIdUnsafe(ForgeRegistries.ITEMS);
this.lastStateChange = this.world.getTime();
@@ -444,7 +460,7 @@ public class ChestBlockEntity extends AENetworkPowerBlockEntity
if (!ItemHandlerUtil.isEmpty(this.inputInventory)) {
this.updateHandler();
if (this.cellHandler != null && this.cellHandler.getChannel() == AEApi.instance().storage()
if (this.cellHandler != null && this.cellHandler.getChannel() == Api.instance().storage()
.getStorageChannel(IItemStorageChannel.class)) {
final IAEItemStack returns = Platform.poweredInsert(this, this.cellHandler,
AEItemStack.fromItemStack(this.inputInventory.getInvStack(0)), this.mySrc);
@@ -514,10 +530,10 @@ public class ChestBlockEntity extends AENetworkPowerBlockEntity
public boolean openGui(final PlayerEntity p) {
this.updateHandler();
if (this.cellHandler != null) {
final ICellHandler ch = AEApi.instance().registries().cell().getHandler(this.getCell());
final ICellHandler ch = Api.instance().registries().cell().getHandler(this.getCell());
if (ch != null) {
final ICellGuiHandler chg = AEApi.instance().registries().cell()
final ICellGuiHandler chg = Api.instance().registries().cell()
.getGuiHandler(this.cellHandler.getChannel(), this.getCell());
if (chg != null) {
chg.openChestGui(p, this, ch, this.cellHandler, this.getCell(), this.cellHandler.getChannel());
@@ -679,7 +695,7 @@ public class ChestBlockEntity extends AENetworkPowerBlockEntity
private class FluidHandler implements FluidInsertable {
private boolean canAcceptLiquids() {
return ChestBlockEntity.this.cellHandler != null && ChestBlockEntity.this.cellHandler.getChannel() == AEApi
return ChestBlockEntity.this.cellHandler != null && ChestBlockEntity.this.cellHandler.getChannel() == Api
.instance().storage().getStorageChannel(IFluidStorageChannel.class);
}
@@ -729,8 +745,8 @@ public class ChestBlockEntity extends AENetworkPowerBlockEntity
public boolean allowInsert(FixedItemInv inv, int slot, ItemStack stack) {
if (ChestBlockEntity.this.isPowered()) {
ChestBlockEntity.this.updateHandler();
return ChestBlockEntity.this.cellHandler != null && ChestBlockEntity.this.cellHandler
.getChannel() == AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class);
return ChestBlockEntity.this.cellHandler != null && ChestBlockEntity.this.cellHandler.getChannel() == Api
.instance().storage().getStorageChannel(IItemStorageChannel.class);
}
return false;
}
@@ -745,25 +761,25 @@ public class ChestBlockEntity extends AENetworkPowerBlockEntity
@Override
public boolean allowInsert(FixedItemInv inv, int slot, ItemStack stack) {
return AEApi.instance().registries().cell().getHandler(stack) != null;
return Api.instance().registries().cell().getHandler(stack) != null;
}
}
@Override
public ItemStack getItemStackRepresentation() {
return AEApi.instance().definitions().blocks().chest().maybeStack(1).orElse(ItemStack.EMPTY);
return Api.instance().definitions().blocks().chest().maybeStack(1).orElse(ItemStack.EMPTY);
}
@Override
public ScreenHandlerType<?> getContainerType() {
this.updateHandler();
if (this.cellHandler != null) {
if (this.cellHandler.getChannel() == AEApi.instance().storage()
if (this.cellHandler.getChannel() == Api.instance().storage()
.getStorageChannel(IItemStorageChannel.class)) {
return MEMonitorableContainer.TYPE;
}
if (this.cellHandler.getChannel() == AEApi.instance().storage()
if (this.cellHandler.getChannel() == Api.instance().storage()
.getStorageChannel(IFluidStorageChannel.class)) {
throw new IllegalStateException();
// FIXME FABRIC return FluidTerminalContainer.TYPE;