Skip to content

Commit

Permalink
add resource chickens compat
Browse files Browse the repository at this point in the history
  • Loading branch information
deirn committed Apr 28, 2024
1 parent 10ed7f3 commit db5bf8c
Show file tree
Hide file tree
Showing 22 changed files with 656 additions and 5 deletions.
2 changes: 2 additions & 0 deletions buildSrc/src/main/kotlin/Dependencies.kt
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ object deps {
val techReborn by json()
val wirelessNet by json()
val lapisReserve by json()
val resourceChickens by json()

const val trEnergy = "teamreborn:energy:2.2.0"
const val libgui = "io.github.cottonmc:LibGui:6.0.1+1.19"
Expand Down Expand Up @@ -82,6 +83,7 @@ object deps {
val rs by json()
val jei by json()
val lapisReserve by json()
val resourceChickens by json()

object mekanism : DependencyPath {
override val prefix = "forge.mekanism"
Expand Down
2 changes: 2 additions & 0 deletions buildSrc/src/main/kotlin/FetchLatestVersionsTask.kt
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ abstract class FetchLatestVersionsTask : DefaultTask() {
fetch(fabric::techReborn, cfIds.techReborn) { "TechReborn:TechReborn-1.19:${it.download.fileName.removePrefix("TechReborn-")}" }
fetch(fabric::wirelessNet, cfIds.wirelessNet, "1.19") { it.maven }
fetch(fabric::lapisReserve, cfIds.lapisReserve, "1.19.2") { it.maven }
fetch(fabric::resourceChickens, cfIds.resourceChickens, "1.19.2") { it.api }
}

fetcher(ModrinthVersionFetcher, "forge", forge.wthit) {
Expand Down Expand Up @@ -116,6 +117,7 @@ abstract class FetchLatestVersionsTask : DefaultTask() {

fetcher(CurseForgeVersionFetcher, "forge", forge) {
fetch(forge::lapisReserve, cfIds.lapisReserve, "1.19.2") { it.maven }
fetch(forge::resourceChickens, cfIds.resourceChickens, "1.19.2") { it.api }
}

mapper
Expand Down
15 changes: 15 additions & 0 deletions buildSrc/src/main/kotlin/Repositories.kt
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import org.gradle.kotlin.dsl.ivy
import org.gradle.kotlin.dsl.maven
import org.gradle.api.artifacts.dsl.RepositoryHandler as Repo

Expand Down Expand Up @@ -28,3 +29,17 @@ fun Repo.modrinth() = maven("https://api.modrinth.com/maven") {
includeGroup("maven.modrinth")
}
}

fun Repo.curseApi() = ivy("https://www.curseforge.com/api/v1/mods") {
patternLayout {
artifact("[module]/files/[revision]/download")
}

metadataSources {
artifact()
}

content {
includeGroup("curse.api")
}
}
2 changes: 2 additions & 0 deletions buildSrc/src/main/kotlin/Uploads.kt
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ object cfIds {
val techReborn = "233564"
val wirelessNet = "461316"
val lapisReserve = "399679"
val resourceChickens = "632145"
}

object cfSlugs {
Expand All @@ -34,6 +35,7 @@ object cfSlugs {
val techReborn = "techreborn"
val wirelessNet = "wireless-networks"
val lapisReserve = "lapis-reserve"
val resourceChickens = "resource-chickens"
}

object mrIds {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ object CurseForgeVersionFetcher : VersionFetcher<CurseForgeVersionFetcher.Mod> {
val download by nested(::Downlaod)

val maven get() = "curse.maven:cursemod-${id}:${download.id}"
val api get() = "curse.api:${id}:${download.id}"
}

class Downlaod(json: ObjectNode) : JsonFacade(json) {
Expand Down
4 changes: 3 additions & 1 deletion dependencies.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
"fabric.techReborn" : "TechReborn:TechReborn-1.19:5.4.0",
"fabric.wirelessNet" : "curse.maven:cursemod-461316:3876132",
"fabric.lapisReserve" : "curse.maven:cursemod-399679:3345208",
"fabric.resourceChickens" : "curse.api:632145:4985700",
"forge.wthit.api" : "mcp.mobius.waila:wthit-api:forge-5.25.0",
"forge.wthit.runtime" : "mcp.mobius.waila:wthit:forge-5.25.0",
"forge.badpackets" : "lol.bai:badpackets:forge-0.2.3",
Expand All @@ -38,5 +39,6 @@
"forge.thermal.cofhCore" : "maven.modrinth:OWSRM4vD:ssRHxD6e",
"forge.thermal.foundation" : "maven.modrinth:Xvg6q5Wp:kaIOIjDc",
"forge.thermal.expansion" : "maven.modrinth:hmD6rrUJ:W9opx6mY",
"forge.lapisReserve" : "curse.maven:cursemod-399679:3787247"
"forge.lapisReserve" : "curse.maven:cursemod-399679:3787247",
"forge.resourceChickens" : "curse.api:632145:5088913"
}
1 change: 1 addition & 0 deletions modules/fabric/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ publishMods {
cfSlugs.techReborn,
cfSlugs.wirelessNet,
cfSlugs.lapisReserve,
cfSlugs.resourceChickens,
)
}

Expand Down
1 change: 1 addition & 0 deletions modules/fabric/curseforge.html
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ <h2>Supported Mods</h2>
<li><a href="https://www.curseforge.com/minecraft/mc-mods/modern-dynamics">Modern Dynamics</a></li>
<li><a href="https://www.curseforge.com/minecraft/mc-mods/powah-rearchitected">Powah!</a></li>
<li><a href="https://www.curseforge.com/minecraft/mc-mods/reborncore">Reborn Core</a></li>
<li><a href="https://www.curseforge.com/minecraft/mc-mods/resource-chickens">Resource Chickens</a></li>
<li><a href="https://www.curseforge.com/minecraft/mc-mods/techreborn">Tech Reborn</a></li>
<li><a href="https://www.curseforge.com/minecraft/mc-mods/wireless-networks">Wireless Networks</a></li>
</ul>
Expand Down
1 change: 1 addition & 0 deletions modules/fabric/modrinth.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ Megane is a collection of [WTHIT](https://modrinth.com/mod/wthit) plugins that a
- [Modern Dynamics](https://modrinth.com/mod/fMpvLrnF)
- [Powah!](https://modrinth.com/mod/KZO4S4DO)
- [Reborn Core](https://www.curseforge.com/minecraft/mc-mods/reborncore)
- [Resource Chickens](https://www.curseforge.com/minecraft/mc-mods/resource-chickens)
- [Tech Reborn](https://www.curseforge.com/minecraft/mc-mods/techreborn)
- [Wireless Networks](https://www.curseforge.com/minecraft/mc-mods/wireless-networks)

Expand Down
18 changes: 18 additions & 0 deletions modules/fabric/resource-chickens/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
metadata("lol.bai.megane.module.resourcechickens") {
waila("MeganeResourceChickens")
language()

fmj {
depends(
"resourcechickens" to any
)
}
}

repositories {
curseApi()
}

dependencies {
modImplementation(deps.fabric.resourceChickens)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package lol.bai.megane.module.resourcechickens;

import lol.bai.megane.module.resourcechickens.provider.ChickenProvider;
import lol.bai.megane.module.resourcechickens.provider.NestProvider;
import mcp.mobius.waila.api.IRegistrar;
import mcp.mobius.waila.api.IWailaPlugin;
import mcp.mobius.waila.api.TooltipPosition;
import net.minecraft.resources.ResourceLocation;
import wallywhip.resourcechickens.blocks.NestTileEntity;
import wallywhip.resourcechickens.entity.ResourceChickenEntity;

public class MeganeResourceChickens implements IWailaPlugin {

public static final ResourceLocation CONFIG_SHOW_GAIN = new ResourceLocation("megane:resource_chickens.gain");
public static final ResourceLocation CONFIG_SHOW_GROWTH = new ResourceLocation("megane:resource_chickens.growth");
public static final ResourceLocation CONFIG_SHOW_STRENGTH = new ResourceLocation("megane:resource_chickens.strength");
public static final ResourceLocation CONFIG_SHOW_GROW = new ResourceLocation("megane:resource_chickens.grow");
public static final ResourceLocation CONFIG_SHOW_DROP = new ResourceLocation("megane:resource_chickens.drop");
public static final ResourceLocation CONFIG_SHOW_NEST_FOOD = new ResourceLocation("megane:resource_chickens.food");
public static final ResourceLocation CONFIG_SHOW_CONVERSION = new ResourceLocation("megane:resource_chickens.conversion");

@Override
public void register(IRegistrar registrar) {
registrar.addFeatureConfig(CONFIG_SHOW_GAIN, true);
registrar.addFeatureConfig(CONFIG_SHOW_GROWTH, true);
registrar.addFeatureConfig(CONFIG_SHOW_STRENGTH, true);

registrar.addFeatureConfig(CONFIG_SHOW_GROW, false);
registrar.addFeatureConfig(CONFIG_SHOW_DROP, false);
registrar.addFeatureConfig(CONFIG_SHOW_NEST_FOOD, false);
registrar.addFeatureConfig(CONFIG_SHOW_CONVERSION, false);

var nestProvider = new NestProvider();
registrar.addDataType(NestProvider.DATA, NestProvider.Data.class, NestProvider.Data::new);
registrar.addBlockData(nestProvider, NestTileEntity.class);
registrar.addComponent(nestProvider, TooltipPosition.HEAD, NestTileEntity.class);
registrar.addComponent(nestProvider, TooltipPosition.BODY, NestTileEntity.class);

var chickenProvider = new ChickenProvider();
registrar.addDataType(ChickenProvider.DATA_TIMER, ChickenProvider.Timer.class, ChickenProvider.Timer::new);
registrar.addDataType(ChickenProvider.DATA_MUTATION, ChickenProvider.Mutation.class, ChickenProvider.Mutation::new);
registrar.addEntityData(chickenProvider, ResourceChickenEntity.class);
registrar.addComponent(chickenProvider, TooltipPosition.BODY, ResourceChickenEntity.class);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
package lol.bai.megane.module.resourcechickens.provider;

import lol.bai.megane.module.resourcechickens.MeganeResourceChickens;
import mcp.mobius.waila.api.IData;
import mcp.mobius.waila.api.IDataProvider;
import mcp.mobius.waila.api.IDataWriter;
import mcp.mobius.waila.api.IEntityAccessor;
import mcp.mobius.waila.api.IEntityComponentProvider;
import mcp.mobius.waila.api.IPluginConfig;
import mcp.mobius.waila.api.IServerAccessor;
import mcp.mobius.waila.api.ITooltip;
import mcp.mobius.waila.api.component.BarComponent;
import mcp.mobius.waila.api.component.PairComponent;
import mcp.mobius.waila.api.component.WrappedComponent;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import wallywhip.resourcechickens.ResourceChickens;
import wallywhip.resourcechickens.compat.modmenu.ModMenuManager;
import wallywhip.resourcechickens.entity.ResourceChickenEntity;
import wallywhip.resourcechickens.init.initChickenRegistry;

public class ChickenProvider implements IEntityComponentProvider, IDataProvider<ResourceChickenEntity> {

public static final ResourceLocation DATA_TIMER = new ResourceLocation("megane:resource_chickens.chicken.timer");
public static final ResourceLocation DATA_MUTATION = new ResourceLocation("megane:resource_chickens.chicken.mutation");

@Override
public void appendBody(ITooltip tooltip, IEntityAccessor accessor, IPluginConfig config) {
var chicken = accessor.<ResourceChickenEntity>getEntity();

if (chicken.getEntityData().get(ResourceChickenEntity.ANALYZED)) {
if (config.getBoolean(MeganeResourceChickens.CONFIG_SHOW_GAIN)) tooltip.addLine(new PairComponent(
Component.translatable("megane.resource_chickens.gain"),
Component.literal(String.valueOf(chicken.getEntityData().get(ResourceChickenEntity.GAIN)))));

if (config.getBoolean(MeganeResourceChickens.CONFIG_SHOW_GROWTH)) tooltip.addLine(new PairComponent(
Component.translatable("megane.resource_chickens.growth"),
Component.literal(String.valueOf(chicken.getEntityData().get(ResourceChickenEntity.GROWTH)))));

if (config.getBoolean(MeganeResourceChickens.CONFIG_SHOW_STRENGTH)) tooltip.addLine(new PairComponent(
Component.translatable("megane.resource_chickens.strength"),
Component.literal(String.valueOf(chicken.getEntityData().get(ResourceChickenEntity.STRENGTH)))));
}

var timer = accessor.getData().get(Timer.class);
if (config.getBoolean(MeganeResourceChickens.CONFIG_SHOW_DROP) && timer != null && ModMenuManager.getConfig().isAllowInWorldDrops() && !chicken.isBaby() && timer.eggLayTime != 0) {
tooltip.addLine(new PairComponent(
Component.translatable("megane.resource_chickens.next_drop"),
Component.literal(ResourceChickens.formatTime(timer.eggTime))));
}

var mutation = accessor.getData().get(Mutation.class);
if (config.getBoolean(MeganeResourceChickens.CONFIG_SHOW_CONVERSION) && mutation != null) {
var target = initChickenRegistry.getChickenDataFromName(mutation.type);
if (target != null) {
tooltip.addLine(new PairComponent(
Component.translatable("megane.resource_chickens.conversion"),
target.displayName));

tooltip.addLine(new PairComponent(
new WrappedComponent(Component.translatable("megane.resource_chickens.progress")),
new BarComponent((float) mutation.count / target.conversionRequired, 0xff89710f, Component.literal(mutation.count + "/" + target.conversionRequired))));
}
}
}

@Override
public void appendData(IDataWriter data, IServerAccessor<ResourceChickenEntity> accessor, IPluginConfig config) {
var chicken = accessor.getTarget();

if (config.getBoolean(MeganeResourceChickens.CONFIG_SHOW_DROP) && ModMenuManager.getConfig().isAllowInWorldDrops()) {
data.addImmediate(new Timer(chicken.chickenData.eggLayTime, chicken.eggTime));
}

if (config.getBoolean(MeganeResourceChickens.CONFIG_SHOW_CONVERSION) && chicken.conversionProgress != 0) {
data.addImmediate(new Mutation(chicken.conversionProgress, chicken.conversionType));
}
}

public record Timer(
int eggLayTime,
int eggTime
) implements IData {

public Timer(FriendlyByteBuf buf) {
this(buf.readVarInt(), buf.readVarInt());
}

@Override
public void write(FriendlyByteBuf buf) {
buf.writeVarInt(eggLayTime);
buf.writeVarInt(eggTime);
}

}

public record Mutation(
int count,
String type
) implements IData {

public Mutation(FriendlyByteBuf buf) {
this(buf.readVarInt(), buf.readUtf());
}

@Override
public void write(FriendlyByteBuf buf) {
buf.writeVarInt(count);
buf.writeUtf(type);
}

}

}
Loading

0 comments on commit db5bf8c

Please sign in to comment.