Skip to content
Open
58 changes: 48 additions & 10 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ val objVersion = project.property("obj.version").toString()
plugins {
java
`maven-publish`
id("fabric-loom") version("1.10-SNAPSHOT")
id("fabric-loom") version("1.11-SNAPSHOT")
id("com.diffplug.spotless") version("7.0.4")
id("org.ajoberstar.grgit") version("5.3.2")
id("dev.galacticraft.mojarn") version("0.6.1+19")
Expand All @@ -69,15 +69,6 @@ java {
withJavadocJar()
}

sourceSets {
main {
resources {
srcDir("src/main/generated")
exclude(".cache/")
}
}
}

group = modGroup
version = buildString {
append(modVersion)
Expand All @@ -103,11 +94,45 @@ version = buildString {
println("Galacticraft: $version")
base.archivesName.set(modName)

sourceSets {
val api = register("api");

main {
compileClasspath += api.get().output
runtimeClasspath += api.get().output
resources {
srcDir("src/main/generated")
exclude(".cache/")
}
}

test {
compileClasspath += api.get().output
runtimeClasspath += api.get().output
}
}

loom {
accessWidenerPath.set(project.file("src/main/resources/galacticraft.accesswidener"))
mixin.add(sourceSets.main.get(), "galacticraft.refmap.json")
mixin.add(sourceSets.test.get(), "galacticraft-test.refmap.json")

val apiSourceSet = sourceSets["api"]

mods {
register("galacticraft") {
// Source sets we want to include in the mod jar
sourceSet(sourceSets.main.get())
sourceSet(apiSourceSet)
}

register("galacticraft-api") {
sourceSet(apiSourceSet)
}
}

createRemapConfigurations(apiSourceSet)

runs {
getByName("client") {
name("Minecraft Client")
Expand Down Expand Up @@ -139,6 +164,12 @@ loom {
}

afterEvaluate {
sourceSets {
getByName("api") {
compileClasspath += configurations.getByName("minecraftNamedCompile")
}
}

val mixinJarFile = configurations.runtimeClasspath.get().incoming.artifactView {
componentFilter {
it is ModuleComponentIdentifier
Expand Down Expand Up @@ -218,6 +249,11 @@ configurations {
include {
extendsFrom(core)
}

getByName("modApiImplementation") {
extendsFrom(configurations.modImplementation.get())
extendsFrom(configurations.implementation.get())
}
}

dependencies {
Expand Down Expand Up @@ -256,6 +292,8 @@ dependencies {
modLocalRuntime("mezz.jei:jei-$minecraftVersion-fabric:$jeiVersion")
}

"apiCompileOnly"("org.jetbrains:annotations:26.0.2")

testImplementation("net.fabricmc:fabric-loader-junit:$loaderVersion")
}

Expand Down
1 change: 1 addition & 0 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ pluginManagement {
content {
includeGroup("net.fabricmc")
includeGroup("net.fabricmc.fabric-api")
includeGroup("net.fabricmc.unpick")
includeGroup("fabric-loom")
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,34 @@
* SOFTWARE.
*/

package dev.galacticraft.impl.rocket.part;
package dev.galacticraft.api;

import dev.galacticraft.api.rocket.part.RocketCone;
import dev.galacticraft.api.rocket.part.config.RocketConeConfig;
import dev.galacticraft.api.rocket.part.type.RocketConeType;
import net.minecraft.core.Registry;
import net.minecraft.core.registries.Registries;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.material.Fluid;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;

public record RocketConeImpl<C extends RocketConeConfig, T extends RocketConeType<C>>(@NotNull C config, @NotNull T type) implements RocketCone<C, T> {
}
public interface APIConstants {
String MOD_ID = "galacticraft";
String COMMON_NAMESPACE = "c";
Logger LOGGER = LogManager.getLogger("Galacticraft-API");

@Contract(value = "_ -> new", pure = true)
static @NotNull ResourceLocation id(String id) {
return ResourceLocation.fromNamespaceAndPath(MOD_ID, id);
}

@Contract(value = "_, _ -> new", pure = true)
static @NotNull <T> ResourceKey<T> key(ResourceKey<Registry<T>> registry, String id) {
return ResourceKey.create(registry, APIConstants.id(id));
}

interface Gases {
ResourceKey<Fluid> OXYGEN = key(Registries.FLUID, "oxygen");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,18 @@
* SOFTWARE.
*/

package dev.galacticraft.impl.rocket.part;
package dev.galacticraft.api;

import dev.galacticraft.api.rocket.part.RocketFin;
import dev.galacticraft.api.rocket.part.config.RocketFinConfig;
import dev.galacticraft.api.rocket.part.type.RocketFinType;
import org.jetbrains.annotations.NotNull;
import dev.galacticraft.impl.GalacticraftAPIImpl;
import org.jetbrains.annotations.ApiStatus;

public record RocketFinImpl<C extends RocketFinConfig, T extends RocketFinType<C>>(@NotNull C config, @NotNull T type) implements RocketFin<C, T> {
}
@ApiStatus.NonExtendable
public interface GalacticraftAPI {
static GalacticraftAPI get() {
return GalacticraftAPIImpl.getActiveAPI();
}

static void register(GalacticraftAPI api) {
GalacticraftAPIImpl.registerAPI(api);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
* SOFTWARE.
*/

package dev.galacticraft.mod.accessor;
package dev.galacticraft.api.accessor;

public interface CryogenicAccessor {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,15 @@
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState;

/**
* Can be implemented on top of blocks to provide oxygen for various things
*/
public interface OxygenProvidingBlock {
/**
* @param level The level
* @param pos position of this block
* @param state state of this block
* @return typically a value between 0-1
*/
float getOxygen(Level level, BlockPos pos, BlockState state);
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,18 @@
* SOFTWARE.
*/

package dev.galacticraft.mod.api.block.entity;
package dev.galacticraft.api.block.entity;

import dev.galacticraft.mod.api.entity.Dockable;
import dev.galacticraft.api.APIConstants;
import dev.galacticraft.api.entity.Dockable;
import net.fabricmc.fabric.api.lookup.v1.block.BlockApiLookup;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import org.jetbrains.annotations.Nullable;

public interface FuelDock {
BlockApiLookup<FuelDock, @Nullable Direction> SIDED = BlockApiLookup.get(APIConstants.id("fuel_dock_sided"), FuelDock.class, Direction.class);

/**
* Gets the docked entity.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@

package dev.galacticraft.api.client.tabs;

import dev.galacticraft.impl.internal.client.tabs.InventoryTabRegistryImpl;
import dev.galacticraft.impl.client.tabs.InventoryTabRegistryImpl;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.AbstractContainerMenu;
import net.minecraft.world.item.ItemStack;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
* SOFTWARE.
*/

package dev.galacticraft.api.universe.display;
package dev.galacticraft.api.client.universe.display;

import com.mojang.serialization.Codec;
import dev.galacticraft.api.registry.BuiltInAddonRegistries;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
* SOFTWARE.
*/

package dev.galacticraft.api.universe.display;
package dev.galacticraft.api.client.universe.display;

public interface CelestialDisplayConfig {
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
* SOFTWARE.
*/

package dev.galacticraft.api.universe.display;
package dev.galacticraft.api.client.universe.display;

import com.mojang.serialization.Codec;
import com.mojang.serialization.MapCodec;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
* SOFTWARE.
*/

package dev.galacticraft.api.universe.display.ring;
package dev.galacticraft.api.client.universe.display.ring;

import com.mojang.serialization.Codec;
import dev.galacticraft.api.registry.BuiltInAddonRegistries;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
* SOFTWARE.
*/

package dev.galacticraft.api.universe.display.ring;
package dev.galacticraft.api.client.universe.display.ring;

public interface CelestialRingDisplayConfig {
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
* SOFTWARE.
*/

package dev.galacticraft.api.universe.display.ring;
package dev.galacticraft.api.client.universe.display.ring;

import com.mojang.serialization.Codec;
import com.mojang.serialization.MapCodec;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@

import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import dev.galacticraft.api.APIConstants;
import dev.galacticraft.api.rocket.RocketData;
import dev.galacticraft.mod.Constant;
import dev.galacticraft.mod.util.StreamCodecs;
import dev.galacticraft.api.util.StreamCodecs;
import net.minecraft.core.Registry;
import net.minecraft.core.component.DataComponentType;
import net.minecraft.core.registries.BuiltInRegistries;
Expand Down Expand Up @@ -65,7 +65,7 @@ public class GCDataComponents {
)));

private static <T> DataComponentType<T> register(String id, UnaryOperator<DataComponentType.Builder<T>> op) {
return Registry.register(BuiltInRegistries.DATA_COMPONENT_TYPE, Constant.id(id), op.apply(DataComponentType.builder()).build());
return Registry.register(BuiltInRegistries.DATA_COMPONENT_TYPE, APIConstants.id(id), op.apply(DataComponentType.builder()).build());
}

public static void init() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
* SOFTWARE.
*/

package dev.galacticraft.mod.api.entity;
package dev.galacticraft.api.entity;

import net.minecraft.world.item.ItemStack;
import org.jetbrains.annotations.NotNull;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,21 @@
* SOFTWARE.
*/

package dev.galacticraft.mod.api.entity;
package dev.galacticraft.api.entity;

import dev.galacticraft.mod.api.block.entity.FuelDock;
import dev.galacticraft.api.APIConstants;
import dev.galacticraft.api.block.entity.FuelDock;
import net.fabricmc.fabric.api.lookup.v1.entity.EntityApiLookup;
import net.minecraft.world.entity.Entity;
import org.jetbrains.annotations.Nullable;

/**
* Implement into entities that are placed on fuel docks to load with cargo and
* fuel
*/
public interface Dockable extends Fuelable {
EntityApiLookup<Dockable, @Nullable Void> ENTITY = EntityApiLookup.get(APIConstants.id("dockable_entity"), Dockable.class, Void.class);

/**
* Sets the current fuel dock for this entity
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
* SOFTWARE.
*/

package dev.galacticraft.mod.api.entity;
package dev.galacticraft.api.entity;

import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant;
import net.fabricmc.fabric.api.transfer.v1.storage.Storage;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,15 @@

package dev.galacticraft.api.entity.attribute;

import dev.galacticraft.mod.Constant;
import dev.galacticraft.api.APIConstants;
import net.minecraft.core.Holder;
import net.minecraft.core.Registry;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.world.entity.ai.attributes.Attribute;
import net.minecraft.world.entity.ai.attributes.RangedAttribute;

public final class GcApiEntityAttributes {
public static final Holder.Reference<Attribute> CAN_BREATHE_IN_SPACE = Registry.registerForHolder(BuiltInRegistries.ATTRIBUTE, Constant.id("can_breathe_in_space"), (new RangedAttribute("galacticraft.attribute.name.generic.can_breathe_in_space", 0.0D, 0.0D, 1.0D)).setSyncable(true));
public static final Holder.Reference<Attribute> CAN_BREATHE_IN_SPACE = Registry.registerForHolder(BuiltInRegistries.ATTRIBUTE, APIConstants.id("can_breathe_in_space"), (new RangedAttribute("galacticraft.attribute.name.generic.can_breathe_in_space", 0.0D, 0.0D, 1.0D)).setSyncable(true));

private GcApiEntityAttributes() {
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@

package dev.galacticraft.api.gas;

import net.minecraft.network.chat.Component;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;

Expand All @@ -31,16 +30,7 @@
* Not yet stable API - use is not recommended.
*/
@ApiStatus.Experimental
@Deprecated // TODO: better gas implementation - typechecking feels like the wrong way to go about this
// may want an external registry or something
public interface Gas {
/**
* The name of the gas
*
* @return the name of the gas
*/
@NotNull Component getName();

/**
* The gas' symbol
*
Expand Down
Loading