Skip to content
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.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 51 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,48 @@ version = buildString {
println("Galacticraft: $version")
base.archivesName.set(modName)

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

main {
compileClasspath += api.get().output
runtimeClasspath += api.get().output
java {
srcDir("src/api/java")
}
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 +167,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 +252,11 @@ configurations {
include {
extendsFrom(core)
}

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

dependencies {
Expand Down Expand Up @@ -256,6 +295,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