Skip to content
Merged
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
15 changes: 4 additions & 11 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -65,20 +65,15 @@ allprojects {

modImplementation("babric:fabric-loader:${project.properties["loader_version"]}")

implementation("io.github.llamalad7:mixinextras-fabric:${project.properties["mixinextras_version"]}")
annotationProcessor("io.github.llamalad7:mixinextras-fabric:${project.properties["mixinextras_version"]}")

"transitiveImplementation"("org.apache.commons:commons-lang3:3.12.0")
"transitiveImplementation"("commons-io:commons-io:2.11.0")
"transitiveImplementation"("net.jodah:typetools:${project.properties["typetools_version"]}")
"transitiveImplementation"("com.github.mineLdiver:expressions:${project.properties["expressions_version"]}")
"transitiveImplementation"("com.github.mineLdiver:UnsafeEvents:${project.properties["unsafeevents_version"]}")
"transitiveImplementation"("it.unimi.dsi:fastutil:${project.properties["fastutil_version"]}")
//noinspection GradlePackageUpdate
"transitiveImplementation"("com.github.ben-manes.caffeine:caffeine:${project.properties["caffeine_version"]}")
"transitiveImplementation"("com.mojang:datafixerupper:${project.properties["dfu_version"]}")
"transitiveImplementation"("maven.modrinth:spasm:${project.properties["spasm_version"]}")
"transitiveImplementation"("com.oath.cyclops:cyclops:${project.properties["cyclops_version"]}")

// convenience stuff
// adds some useful annotations for data classes. does not add any dependencies
Expand All @@ -95,6 +90,10 @@ allprojects {
}

implementation("blue.endless:jankson:1.2.1")
implementation("me.carleslc:Simple-Yaml:1.8.4")
modLocalRuntime("net.glasslauncher.mods:glass-networking:1.0.2") {
isTransitive = false
}
modLocalRuntime("net.glasslauncher.mods:GlassConfigAPI:${project.properties["gcapi_version"]}") {
isTransitive = false
}
Expand Down Expand Up @@ -261,18 +260,12 @@ subprojects {
}

dependencies {
include("com.github.llamalad7.mixinextras:mixinextras-fabric:${project.properties["mixinextras_version"]}")
include("net.jodah:typetools:${project.properties["typetools_version"]}")
include("com.github.mineLdiver:expressions:${project.properties["expressions_version"]}")
include("com.github.mineLdiver:UnsafeEvents:${project.properties["unsafeevents_version"]}")
include("it.unimi.dsi:fastutil:${project.properties["fastutil_version"]}")
include("com.github.ben-manes.caffeine:caffeine:${project.properties["caffeine_version"]}")
include("com.mojang:datafixerupper:${project.properties["dfu_version"]}")
include("maven.modrinth:spasm:${project.properties["spasm_version"]}")
include("com.oath.cyclops:cyclops:${project.properties["cyclops_version"]}")
include("org.reactivestreams:reactive-streams:${project.properties["reactivestreams_version"]}")
include("io.kindedj:kindedj:${project.properties["kindedj_version"]}")
include("org.agrona:Agrona:${project.properties["agrona_version"]}")
}

// Makes java shut up
Expand Down
10 changes: 2 additions & 8 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -15,25 +15,19 @@ fabric.loom.multiProjectOptimisation=true

# Library Properties
typetools_version = 0.8.3
expressions_version = f676bbe
unsafeevents_version = 17ac2971
fastutil_version = 8.5.8
caffeine_version = 3.0.5
dfu_version = 6.0.6
spasm_version = 0.2.2
cyclops_version = 10.4.1
reactivestreams_version = 1.0.0
kindedj_version = 1.1.0
agrona_version = 0.9.1
mixinextras_version = 0.2.2

# Mod Properties
mod_version = 2.0-alpha.2.4
mod_version = 2.0-alpha.3
maven_group = net.modificationstation
archives_base_name = StationAPI

# Test properties
gcapi_version = 1.3.1
gcapi_version = 3.0.0
hmi_version = 5.2.1
modmenu_version = v1.8.5-beta.3
mojangfix_version = 0.5.2
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

public enum Blocks {

TEST_BLOCK("test_block", "testBlock", id -> new TemplateBlock(id, Material.CLAY).setHardness(1)),
TEST_BLOCK("test_block", "testBlock", id -> new TemplateBlock(id, Material.STONE).setHardness(1)),
TEST_ANIMATED_BLOCK("test_animated_block", "testAnimatedBlock", id -> new ModdedMetaBlock(id, Material.NETHER_PORTAL)),
CUSTOM_MODEL_BLOCK("farlands_block", "farlands_block", id -> new ModdedModelBlock(id, Material.SOIL).setHardness(1)),
FREEZER("freezer", "freezer", id -> new BlockFreezer(id).setHardness(2.5F).setSoundGroup(TemplateBlock.DEFAULT_SOUND_GROUP)),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,19 @@
import net.minecraft.inventory.Inventory;
import net.modificationstation.sltest.SLTest;
import net.modificationstation.sltest.tileentity.TileEntityFreezer;
import net.modificationstation.stationapi.api.client.gui.screen.GuiHandler;
import net.modificationstation.stationapi.api.client.registry.GuiHandlerRegistry;
import net.modificationstation.stationapi.api.event.registry.GuiHandlerRegistryEvent;
import net.modificationstation.stationapi.api.registry.GuiHandlerRegistry;
import net.modificationstation.stationapi.api.registry.Registry;
import net.modificationstation.stationapi.api.util.Identifier;
import uk.co.benjiweber.expressions.tuple.BiTuple;

public class GuiListener {

@Environment(EnvType.CLIENT)
@EventListener
public void registerGuiHandlers(GuiHandlerRegistryEvent event) {
GuiHandlerRegistry registry = event.registry;
registry.registerValueNoMessage(Identifier.of(SLTest.NAMESPACE, "freezer"), BiTuple.of(this::openFreezer, TileEntityFreezer::new));
Registry.register(registry, Identifier.of(SLTest.NAMESPACE, "freezer"), new GuiHandler((GuiHandler.ScreenFactoryNoMessage) this::openFreezer, TileEntityFreezer::new));
}

@Environment(EnvType.CLIENT)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,13 @@
import net.modificationstation.sltest.block.Blocks;
import net.modificationstation.sltest.block.VariationBlock;
import net.modificationstation.stationapi.api.event.registry.ItemRegistryEvent;
import net.modificationstation.stationapi.api.item.tool.TagToolLevel;
import net.modificationstation.stationapi.api.item.tool.ToolLevel;
import net.modificationstation.stationapi.api.item.tool.ToolMaterialFactory;
import net.modificationstation.stationapi.api.registry.BlockRegistry;
import net.modificationstation.stationapi.api.registry.ItemRegistry;
import net.modificationstation.stationapi.api.registry.Registry;
import net.modificationstation.stationapi.api.tag.TagKey;
import net.modificationstation.stationapi.api.template.item.BlockStateItem;

import static net.modificationstation.sltest.SLTest.NAMESPACE;
Expand All @@ -17,8 +21,16 @@ public class ItemListener {

@EventListener
public void registerItems(ItemRegistryEvent event) {
ToolLevel moddedNode = new TagToolLevel(TagKey.of(BlockRegistry.KEY, NAMESPACE.id("needs_tool_level_modded")));
ToolLevel.GRAPH.putEdge(ToolMaterial.STONE.getToolLevel(), moddedNode);
ToolLevel.GRAPH.putEdge(moddedNode, ToolMaterial.IRON.getToolLevel());
ToolLevel siblingNode = new TagToolLevel(TagKey.of(BlockRegistry.KEY, NAMESPACE.id("needs_tool_level_sibling"))).equivalentToImmediateSiblings();
ToolLevel.GRAPH.putEdge(ToolMaterial.STONE.getToolLevel(), siblingNode);
ToolLevel.GRAPH.putEdge(siblingNode, ToolMaterial.IRON.getToolLevel());
ToolLevel.GRAPH.removeEdge(ToolMaterial.STONE.getToolLevel(), ToolMaterial.IRON.getToolLevel());

testItem = new ModdedItem(NAMESPACE.id("test_item")).setTranslationKey(NAMESPACE, "testItem"); //8475
testMaterial = ToolMaterialFactory.create("testMaterial", 3, Integer.MAX_VALUE, Float.MAX_VALUE, Integer.MAX_VALUE - 2);
testMaterial = ToolMaterialFactory.create("testMaterial", 3, Integer.MAX_VALUE, Float.MAX_VALUE, Integer.MAX_VALUE - 2).toolLevel(siblingNode);
testPickaxe = new ModdedPickaxeItem(NAMESPACE.id("test_pickaxe"), testMaterial).setTranslationKey(NAMESPACE, "testPickaxe"); //8476
testNBTItem = new NBTItem(NAMESPACE.id("nbt_item")).setTranslationKey(NAMESPACE, "nbt_item"); //8477
testModelItem = new ModelItem(NAMESPACE.id("model_item")).setMaxCount(1).setTranslationKey(NAMESPACE, "idkSomething");
Expand All @@ -30,6 +42,8 @@ public void registerItems(ItemRegistryEvent event) {
testShears = new TestShearsItem(NAMESPACE.id("test_shears")).setTranslationKey(NAMESPACE, "test_shears");
pacifistSword = new PacifistSwordItem(NAMESPACE.id("pacifist_sword")).setTranslationKey(NAMESPACE, "pacifist_sword");
dullPickaxe = new DullPickaxeItem(NAMESPACE.id("dull_pickaxe")).setTranslationKey(NAMESPACE, "dull_pickaxe");


}

public static Item testItem;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"values": [
"sltest:test_block"
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"values": [
"sltest:test_block"
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import net.minecraft.achievement.Achievement;
import net.modificationstation.stationapi.api.util.Identifier;
import net.modificationstation.stationapi.api.util.Namespace;
import uk.co.benjiweber.expressions.property.Named;

import java.util.ArrayList;
import java.util.Collections;
Expand All @@ -17,7 +16,7 @@
* Instantiates and adds an achievement page to the achievement page list.
* @author calmilamsy
*/
public class AchievementPage implements Named<AchievementPage> {
public class AchievementPage {
private static final List<AchievementPage> PAGES = new ArrayList<>();
private static int currentPage = 0;

Expand Down Expand Up @@ -75,7 +74,6 @@ public int getBackgroundTexture(Random random, int column, int row, int randomiz
return currentTexture;
}

@Override
public String name() {
return translationKey;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package net.modificationstation.stationapi.api.client.gui.screen;

import net.minecraft.client.gui.screen.Screen;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.inventory.Inventory;
import net.modificationstation.stationapi.api.network.packet.MessagePacket;

public record GuiHandler(ScreenFactory screenFactory, InventoryFactory inventoryFactory) {
@FunctionalInterface
public interface ScreenFactory {
Screen create(PlayerEntity player, Inventory inventory, MessagePacket packet);
}

@FunctionalInterface
public interface ScreenFactoryNoMessage extends ScreenFactory {
@Override
default Screen create(PlayerEntity player, Inventory inventory, MessagePacket packet) {
return create(player, inventory);
}

Screen create(PlayerEntity player, Inventory inventory);
}

@FunctionalInterface
public interface InventoryFactory {
Inventory create();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package net.modificationstation.stationapi.api.client.registry;

import com.mojang.serialization.Lifecycle;
import net.modificationstation.stationapi.api.StationAPI;
import net.modificationstation.stationapi.api.client.gui.screen.GuiHandler;
import net.modificationstation.stationapi.api.registry.Registries;
import net.modificationstation.stationapi.api.registry.RegistryKey;
import net.modificationstation.stationapi.api.registry.SimpleRegistry;
import net.modificationstation.stationapi.api.util.Identifier;

public final class GuiHandlerRegistry extends SimpleRegistry<GuiHandler> {
private static final GuiHandler EMPTY = new GuiHandler((player, inventory, packet) -> null, () -> null);
public static final RegistryKey<GuiHandlerRegistry> KEY = RegistryKey.ofRegistry(Identifier.of(StationAPI.NAMESPACE, "gui_handlers"));
public static final GuiHandlerRegistry INSTANCE = Registries.create(KEY, new GuiHandlerRegistry(), registry -> EMPTY, Lifecycle.experimental());

private GuiHandlerRegistry() {
super(KEY, Lifecycle.experimental(), false);
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package net.modificationstation.stationapi.api.event.registry;

import net.modificationstation.stationapi.api.registry.GuiHandlerRegistry;
import net.modificationstation.stationapi.api.client.registry.GuiHandlerRegistry;

public class GuiHandlerRegistryEvent extends RegistryEvent<GuiHandlerRegistry> {
public GuiHandlerRegistryEvent() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import net.minecraft.screen.ScreenHandler;
import net.modificationstation.stationapi.api.event.registry.GuiHandlerRegistryEvent;
import net.modificationstation.stationapi.api.network.packet.MessagePacket;
import net.modificationstation.stationapi.api.registry.GuiHandlerRegistry;
import net.modificationstation.stationapi.api.client.registry.GuiHandlerRegistry;
import net.modificationstation.stationapi.api.util.API;
import net.modificationstation.stationapi.api.util.Identifier;
import net.modificationstation.stationapi.api.util.SideUtil;
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,18 @@
import net.fabricmc.loader.api.FabricLoader;
import net.mine_diver.unsafeevents.listener.EventListener;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.inventory.Inventory;
import net.modificationstation.stationapi.api.StationAPI;
import net.modificationstation.stationapi.api.client.gui.screen.GuiHandler;
import net.modificationstation.stationapi.api.client.registry.GuiHandlerRegistry;
import net.modificationstation.stationapi.api.event.registry.GuiHandlerRegistryEvent;
import net.modificationstation.stationapi.api.event.registry.MessageListenerRegistryEvent;
import net.modificationstation.stationapi.api.mod.entrypoint.Entrypoint;
import net.modificationstation.stationapi.api.mod.entrypoint.EventBusPolicy;
import net.modificationstation.stationapi.api.network.packet.MessagePacket;
import net.modificationstation.stationapi.api.registry.GuiHandlerRegistry;
import net.modificationstation.stationapi.api.util.Identifier;
import net.modificationstation.stationapi.api.registry.Registry;
import uk.co.benjiweber.expressions.function.TriFunction;
import uk.co.benjiweber.expressions.tuple.BiTuple;

import java.util.function.Supplier;

import static net.modificationstation.stationapi.api.StationAPI.NAMESPACE;

Expand All @@ -34,10 +30,10 @@ private static void registerMessageListeners(MessageListenerRegistryEvent event)

private static void handleGui(PlayerEntity player, MessagePacket message) {
boolean isClient = player.world.isRemote;
BiTuple<TriFunction<PlayerEntity, Inventory, MessagePacket, Screen>, Supplier<Inventory>> guiHandler = GuiHandlerRegistry.INSTANCE.get(Identifier.of(message.strings[0]));
GuiHandler guiHandler = GuiHandlerRegistry.INSTANCE.get(Identifier.of(message.strings[0]));
if (guiHandler != null)
//noinspection deprecation
((Minecraft) FabricLoader.getInstance().getGameInstance()).setScreen(guiHandler.one().apply(player, isClient ? guiHandler.two().get() : (Inventory) message.objects[0], message));
((Minecraft) FabricLoader.getInstance().getGameInstance()).setScreen(guiHandler.screenFactory().create(player, isClient ? guiHandler.inventoryFactory().create() : (Inventory) message.objects[0], message));
if (isClient)
player.container.syncId = message.ints[0];
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package net.modificationstation.stationapi.api.client.entity.factory;

import net.minecraft.entity.Entity;
import net.minecraft.world.World;

public interface EntityWorldAndPosFactory {
Entity create(World world, double x, double y, double z);
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
package net.modificationstation.stationapi.api.registry;
package net.modificationstation.stationapi.api.client.registry;

import com.mojang.serialization.Lifecycle;
import net.minecraft.entity.Entity;
import net.minecraft.world.World;
import uk.co.benjiweber.expressions.function.QuadFunction;
import net.modificationstation.stationapi.api.client.entity.factory.EntityWorldAndPosFactory;
import net.modificationstation.stationapi.api.registry.Registries;
import net.modificationstation.stationapi.api.registry.RegistryKey;
import net.modificationstation.stationapi.api.registry.SimpleRegistry;

import static net.modificationstation.stationapi.api.StationAPI.NAMESPACE;

public final class EntityHandlerRegistry extends SimpleRegistry<QuadFunction<World, Double, Double, Double, Entity>> {

private static final QuadFunction<World, Double, Double, Double, Entity> EMPTY = (world, x, y, z) -> null;
public final class EntityHandlerRegistry extends SimpleRegistry<EntityWorldAndPosFactory> {
private static final EntityWorldAndPosFactory EMPTY = (world, x, y, z) -> null;
public static final RegistryKey<EntityHandlerRegistry> KEY = RegistryKey.ofRegistry(NAMESPACE.id("entity_handlers"));
public static final EntityHandlerRegistry INSTANCE = Registries.create(KEY, new EntityHandlerRegistry(), registry -> EMPTY, Lifecycle.experimental());

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package net.modificationstation.stationapi.api.registry;
package net.modificationstation.stationapi.api.client.registry;

import com.mojang.serialization.Lifecycle;
import net.minecraft.entity.LivingEntity;
import net.minecraft.world.World;
import net.modificationstation.stationapi.api.registry.Registries;
import net.modificationstation.stationapi.api.registry.RegistryKey;
import net.modificationstation.stationapi.api.registry.SimpleRegistry;

import java.util.function.Function;

Expand Down
Loading