Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use an interface instead of method reflection to call the API #523

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
19 changes: 0 additions & 19 deletions src/main/java/dan200/computercraft/ComputerCraft.java
Expand Up @@ -422,11 +422,6 @@ public void onServerStopped( FMLServerStoppedEvent event )
}
}

public static String getVersion()
{
return "${version}";
}

public static boolean isClient()
{
return proxy.isClient();
Expand Down Expand Up @@ -665,15 +660,6 @@ public static IPeripheral getPeripheralAt( World world, BlockPos pos, EnumFacing
return null;
}

public static int getDefaultBundledRedstoneOutput( World world, BlockPos pos, EnumFacing side )
{
if( WorldUtil.isBlockInWorld( world, pos ) )
{
return DefaultBundledRedstoneProvider.getDefaultBundledRedstoneOutput( world, pos, side );
}
return -1;
}

public static int getBundledRedstoneOutput( World world, BlockPos pos, EnumFacing side )
{
int y = pos.getY();
Expand Down Expand Up @@ -766,11 +752,6 @@ public static Iterable<IPocketUpgrade> getVanillaPocketUpgrades() {
return upgrades;
}

public static IPacketNetwork getWirelessNetwork()
{
return WirelessNetwork.getUniversal();
}

public static int createUniqueNumberedSaveDir( World world, String parentSubPath )
{
return IDAssigner.getNextIDFromDirectory(new File(getWorldDir(world), parentSubPath));
Expand Down
109 changes: 109 additions & 0 deletions src/main/java/dan200/computercraft/ComputerCraftAPIImpl.java
@@ -0,0 +1,109 @@
package dan200.computercraft;

import dan200.computercraft.api.ComputerCraftAPI.IComputerCraftAPI;
import dan200.computercraft.api.filesystem.IMount;
import dan200.computercraft.api.filesystem.IWritableMount;
import dan200.computercraft.api.media.IMediaProvider;
import dan200.computercraft.api.network.IPacketNetwork;
import dan200.computercraft.api.peripheral.IPeripheralProvider;
import dan200.computercraft.api.permissions.ITurtlePermissionProvider;
import dan200.computercraft.api.pocket.IPocketUpgrade;
import dan200.computercraft.api.redstone.IBundledRedstoneProvider;
import dan200.computercraft.api.turtle.ITurtleUpgrade;
import dan200.computercraft.shared.common.DefaultBundledRedstoneProvider;
import dan200.computercraft.shared.peripheral.modem.WirelessNetwork;
import dan200.computercraft.shared.util.WorldUtil;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;

public final class ComputerCraftAPIImpl implements IComputerCraftAPI
{
public static final IComputerCraftAPI INSTANCE = new ComputerCraftAPIImpl();

private ComputerCraftAPIImpl()
{
}

@Nonnull
@Override
public String getInstalledVersion()
{
return "${version}";
}

@Override
public int createUniqueNumberedSaveDir( @Nonnull World world, @Nonnull String parentSubPath )
{
return ComputerCraft.createUniqueNumberedSaveDir( world, parentSubPath );
}

@Nullable
@Override
public IWritableMount createSaveDirMount( @Nonnull World world, @Nonnull String subPath, long capacity )
{
return ComputerCraft.createSaveDirMount( world, subPath, capacity );
}

@Nullable
@Override
public IMount createResourceMount( @Nonnull Class<?> modClass, @Nonnull String domain, @Nonnull String subPath )
{
return ComputerCraft.createResourceMount( modClass, domain, subPath );
}

@Override
public void registerPeripheralProvider( @Nonnull IPeripheralProvider handler )
{
ComputerCraft.registerPeripheralProvider( handler );
}

@Override
public void registerTurtleUpgrade( @Nonnull ITurtleUpgrade upgrade )
{
ComputerCraft.registerTurtleUpgrade( upgrade );
}

@Override
public void registerBundledRedstoneProvider( @Nonnull IBundledRedstoneProvider handler )
{
ComputerCraft.registerBundledRedstoneProvider( handler );
}

@Override
public int getBundledRedstoneOutput( @Nonnull World world, @Nonnull BlockPos pos, @Nonnull EnumFacing side )
{
if( WorldUtil.isBlockInWorld( world, pos ) )
{
return DefaultBundledRedstoneProvider.getDefaultBundledRedstoneOutput( world, pos, side );
}
return -1;
}

@Override
public void registerMediaProvider( @Nonnull IMediaProvider handler )
{
ComputerCraft.registerMediaProvider( handler );
}

@Override
public void registerPermissionProvider( @Nonnull ITurtlePermissionProvider handler )
{
ComputerCraft.registerPermissionProvider( handler );
}

@Override
public void registerPocketUpgrade( @Nonnull IPocketUpgrade upgrade )
{
ComputerCraft.registerPocketUpgrade( upgrade );
}

@Override
public IPacketNetwork getWirelessNetwork()
{
return WirelessNetwork.getUniversal();
}
}