mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2025-07-04 02:52:56 +00:00

- Separate FileMount into separate FileMount and WritableFileMount classes. This separates the (relatively simple) read-only code from the (soon to be even more complex) read/write code. It also allows you to create read-only mounts which don't bother with filesystem accounting, which is nice. - Make openForWrite/openForAppend always return a SeekableFileHandle. Appendable files still cannot be seeked within, but that check is now done on the FS side. - Refactor the various mount tests to live in test contract interfaces, allowing us to reuse them between mounts. - Clean up our error handling a little better. (Most) file-specific code has been moved to FileMount, and ArchiveMount-derived classes now throw correct path-localised exceptions.
38 lines
1.4 KiB
Java
38 lines
1.4 KiB
Java
/*
|
|
* This file is part of ComputerCraft - http://www.computercraft.info
|
|
* Copyright Daniel Ratcliffe, 2011-2022. Do not distribute without permission.
|
|
* Send enquiries to dratcliffe@gmail.com
|
|
*/
|
|
package dan200.computercraft.impl;
|
|
|
|
import com.google.auto.service.AutoService;
|
|
import dan200.computercraft.api.ComputerCraftAPI;
|
|
import dan200.computercraft.api.detail.DetailRegistry;
|
|
import dan200.computercraft.impl.detail.DetailRegistryImpl;
|
|
import dan200.computercraft.shared.details.FluidDetails;
|
|
import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant;
|
|
import net.fabricmc.fabric.api.transfer.v1.storage.StorageView;
|
|
import net.fabricmc.loader.api.FabricLoader;
|
|
|
|
import javax.annotation.Nullable;
|
|
|
|
@AutoService(ComputerCraftAPIService.class)
|
|
public final class ComputerCraftAPIImpl extends AbstractComputerCraftAPI implements ComputerCraftAPIFabricService {
|
|
private final DetailRegistry<StorageView<FluidVariant>> fluidDetails = new DetailRegistryImpl<>(FluidDetails::fillBasic);
|
|
|
|
private @Nullable String version;
|
|
|
|
@Override
|
|
public String getInstalledVersion() {
|
|
if (version != null) return version;
|
|
return version = FabricLoader.getInstance().getModContainer(ComputerCraftAPI.MOD_ID)
|
|
.map(x -> x.getMetadata().getVersion().toString())
|
|
.orElse("unknown");
|
|
}
|
|
|
|
@Override
|
|
public DetailRegistry<StorageView<FluidVariant>> getFluidDetailRegistry() {
|
|
return fluidDetails;
|
|
}
|
|
}
|