Skip to content

Commit

Permalink
Add in more support for Curios again
Browse files Browse the repository at this point in the history
Closes #603
  • Loading branch information
robotgryphon committed Jan 19, 2025
1 parent 451c707 commit 198efe6
Show file tree
Hide file tree
Showing 10 changed files with 148 additions and 83 deletions.
4 changes: 4 additions & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,7 @@ parchment = "2024.07.28"
[libraries.jnanoid]
module = "com.aventrix.jnanoid:jnanoid"
version.ref = "jnanoid"

[libraries.curios]
module = "top.theillusivec4.curios:curios-neoforge"
version = "9.2.2+1.21.1"
9 changes: 9 additions & 0 deletions neoforge-datagen/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -55,11 +55,20 @@ repositories {
password = project.findProperty("gpr.token") as String? ?: System.getenv("GITHUB_TOKEN")
}
}

maven("https://maven.theillusivec4.top/") {
name = "Illusive Soulworks maven (Curios API)"
content {
includeGroup("top.theillusivec4.curios")
}
}
}

dependencies {
compileOnly(coreApi)
compileOnly(mainProject)

implementation(libs.curios)
}

tasks.compileJava {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package dev.compactmods.machines.datagen.base;

import dev.compactmods.machines.datagen.base.curios.CurioEntityGenerator;
import dev.compactmods.machines.datagen.base.curios.CurioSlotGenerator;
import dev.compactmods.machines.datagen.base.compat.PSDCuriosProvider;
import dev.compactmods.machines.datagen.base.lang.EnglishLangGenerator;
import dev.compactmods.machines.datagen.base.loot.BlockLootGenerator;
import dev.compactmods.machines.datagen.base.tags.BlockTagGenerator;
Expand Down Expand Up @@ -46,8 +45,7 @@ public static BaseDatapackGenerationResults generatePack(GatherDataEvent event)
generator.addProvider(server, new ItemTagGenerator(basePackOutput, blocks, holderLookup));

// CURIOS Integration
generator.addProvider(server, new CurioSlotGenerator(basePackOutput, holderLookup, fileHelper));
generator.addProvider(server, new CurioEntityGenerator(basePackOutput, holderLookup, fileHelper));
generator.addProvider(server, new PSDCuriosProvider(basePackOutput, holderLookup, fileHelper));

generator.addProvider(server, new PointOfInterestTagGenerator(basePackOutput, holderLookup, fileHelper));

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package dev.compactmods.machines.datagen.base.compat;

import dev.compactmods.machines.api.CompactMachines;
import dev.compactmods.machines.compat.curios.CuriosCompat;
import net.minecraft.core.HolderLookup;
import net.minecraft.data.PackOutput;
import net.neoforged.neoforge.common.data.ExistingFileHelper;
import top.theillusivec4.curios.api.CuriosDataProvider;

import java.util.concurrent.CompletableFuture;

public class PSDCuriosProvider extends CuriosDataProvider {

public PSDCuriosProvider(PackOutput output, CompletableFuture<HolderLookup.Provider> lookupProvider, ExistingFileHelper existingFileHelper) {
super(CompactMachines.MOD_ID, output, existingFileHelper, lookupProvider);
}

@Override
public void generate(HolderLookup.Provider registries, ExistingFileHelper fileHelper) {
this.createSlot("psd")
.icon(CompactMachines.modRL("slot/empty_psd"))
.size(1)
.addValidator(CuriosCompat.PSD_VALIDATOR);

this.createEntities("psd")
.addPlayer()
.addSlots("psd");
}
}

This file was deleted.

This file was deleted.

10 changes: 10 additions & 0 deletions neoforge-main/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,13 @@ repositories {
// location of a maven mirror for JEI files, as a fallback
name = "ModMaven"
}

maven("https://maven.theillusivec4.top/") {
name = "Illusive Soulworks maven (Curios API)"
content {
includeGroup("top.theillusivec4.curios")
}
}
}

dependencies {
Expand Down Expand Up @@ -215,6 +222,9 @@ dependencies {
implementation(compactmods.bundles.gander)
accessTransformers(compactmods.ganderRendering)
jarJar(compactmods.bundles.gander)

// Curios API
compileOnly(libs.curios)
}

tasks.withType<Test> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,28 @@

import dev.compactmods.gander.render.geometry.BakedLevel;
import dev.compactmods.gander.ui.widget.SpatialRenderer;
import dev.compactmods.machines.CommonConfig;
import dev.compactmods.machines.api.CompactMachines;
import dev.compactmods.machines.api.shrinking.PSDTags;
import dev.compactmods.machines.client.widget.ImageButtonBuilder;
import dev.compactmods.machines.compat.curios.CuriosCompat;
import dev.compactmods.machines.feature.CMFeatureFlags;
import dev.compactmods.machines.network.room.PlayerRequestedTeleportPacket;
import dev.compactmods.machines.network.room.PlayerRequestedUpgradeUIPacket;
import dev.compactmods.machines.network.room.PlayerStartedRoomTrackingPacket;
import dev.compactmods.machines.shrinking.Shrinking;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.components.ImageButton;
import net.minecraft.client.gui.components.WidgetSprites;
import net.minecraft.client.gui.navigation.ScreenRectangle;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.core.GlobalPos;
import net.minecraft.network.chat.Component;
import net.minecraft.util.CommonColors;
import net.minecraft.util.FastColor;
import net.minecraft.world.phys.AABB;
import net.neoforged.fml.ModList;
import net.neoforged.neoforge.network.PacketDistributor;

public class MachineRoomScreen extends Screen {
Expand Down Expand Up @@ -47,7 +55,7 @@ protected void init() {
CompactMachines.modRL("personal_shrinking_device_highlighted"),
CompactMachines.modRL("personal_shrinking_device_disabled"));

this.screenArea = new ScreenRectangle((height / 2) - 120, (width / 2) - 130,
this.screenArea = new ScreenRectangle((width / 2) - 130, (height / 2) - 120,
260, 240);

this.psdButton = ImageButtonBuilder.button(psdBtnSprites)
Expand All @@ -63,6 +71,32 @@ protected void init() {
roomUpgradesButton();
}

@Override
public void tick() {
super.tick();
psdButton.active = checkForShrinkingDevice();
}

private static boolean checkForShrinkingDevice() {
final var player = Minecraft.getInstance().player;
if(player == null)
return false;

if(player.isCreative()) return true;

final var hasPsdInInv = player.getInventory()
.contains(slotItem -> slotItem.has(Shrinking.DataComponents.SHRINKING_CONFIG) || slotItem.is(PSDTags.ITEM));

if(hasPsdInInv)
return true;

if(ModList.get().isLoaded("curios")) {
return CuriosCompat.hasPsdCurio(player);
}

return false;
}

private void roomUpgradesButton() {
if(this.minecraft == null || this.minecraft.getConnection() == null) return;
if(CMFeatureFlags.ROOM_UPGRADES.isSubsetOf(minecraft.getConnection().enabledFeatures()))
Expand All @@ -83,6 +117,19 @@ private void roomUpgradesButton() {
}
}

@Override
public void renderBackground(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) {
super.renderBackground(guiGraphics, mouseX, mouseY, partialTick);

// TODO: Re-enable once Gander scissors itself properly
// guiGraphics.fill(screenArea.left(), screenArea.top(), screenArea.right(), screenArea.bottom(),
// FastColor.ARGB32.color(180, CommonColors.WHITE));
//
// guiGraphics.fill(screenArea.left() + 2, screenArea.top() + 2,
// screenArea.right() - 2, screenArea.bottom() - 2,
// FastColor.ARGB32.color(255, CommonColors.BLACK));
}

@Override
public void render(GuiGraphics graphics, int pMouseX, int pMouseY, float pPartialTick) {
super.render(graphics, pMouseX, pMouseY, pPartialTick);
Expand All @@ -99,16 +146,6 @@ public void render(GuiGraphics graphics, int pMouseX, int pMouseY, float pPartia
graphics.drawCenteredString(font, rt, 0, font.lineHeight + 7, 0xFFDEDEDE);
}
pose.popPose();

pose.pushPose();
{
pose.translate(screenArea.left(), screenArea.top(), 0);
pose.translate(screenArea.width() / 2f, 0, 0);

// graphics.drawCenteredString(font, Component.literal("Room preview broken for a bit"),
// 0, 100, 0xFFCCCCCC);
}
pose.popPose();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package dev.compactmods.machines.compat;

import dev.compactmods.machines.compat.curios.CuriosCompat;
import net.neoforged.fml.ModList;
import net.neoforged.fml.event.lifecycle.InterModEnqueueEvent;

public class InterModCompat {
Expand All @@ -10,5 +12,8 @@ public static void enqueueCompatMessages(final InterModEnqueueEvent evt) {
//
// if(ModList.get().isLoaded("carryon"))
// CarryOnCompat.sendIMC();

if(ModList.get().isLoaded("curios"))
CuriosCompat.register();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package dev.compactmods.machines.compat.curios;

import dev.compactmods.machines.api.CompactMachines;
import dev.compactmods.machines.api.shrinking.PSDTags;
import dev.compactmods.machines.shrinking.Shrinking;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.LivingEntity;
import top.theillusivec4.curios.api.CuriosApi;

import javax.annotation.Nonnull;

public class CuriosCompat {

public static final ResourceLocation PSD_VALIDATOR = CompactMachines.modRL("has_shrinking_config");

public static void register() {

CuriosApi.registerCurioPredicate(PSD_VALIDATOR, result -> {
final var stack = result.stack();
return stack.is(PSDTags.ITEM) || stack.has(Shrinking.DataComponents.SHRINKING_CONFIG);
});
}

public static boolean hasPsdCurio(@Nonnull LivingEntity ent) {
final var inv = CuriosApi.getCuriosInventory(ent)
.flatMap(handler -> handler.getStacksHandler("psd"))
.orElse(null);

if(inv == null) return false;

for(var slot = 0; slot < inv.getSlots(); slot++) {
var slotItem = inv.getStacks().getStackInSlot(slot);
if(slotItem.isEmpty()) continue;

if(slotItem.has(Shrinking.DataComponents.SHRINKING_CONFIG) || slotItem.is(PSDTags.ITEM))
return true;
}

return false;
}
}

0 comments on commit 198efe6

Please sign in to comment.