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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user