Skip to content

Commit

Permalink
Added KubeJs support for "recipe and Addon: speed/efficiency/processing"
Browse files Browse the repository at this point in the history
  • Loading branch information
Y-Xiao233 committed Dec 18, 2024
1 parent 1ddbc3d commit f73bd77
Show file tree
Hide file tree
Showing 11 changed files with 256 additions and 6 deletions.
30 changes: 28 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,9 @@ minecraft {

client {
property 'forge.enabledGameTestNamespaces', mod_id

property 'mixin.env.remapRefMap', 'true'
property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg"
}

server {
Expand All @@ -53,6 +56,7 @@ minecraft {

workingDirectory project.file('run-data')


args '--mod', mod_id, '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/')
}
}
Expand Down Expand Up @@ -89,6 +93,23 @@ repositories {

}
}


maven {
// Shedaniel's maven (Architectury API)
url = "https://maven.architectury.dev"
content {
includeGroup "dev.architectury"
}
}

maven {
// saps.dev Maven (KubeJS and Rhino)
url = "https://maven.saps.dev/minecraft"
content {
includeGroup "dev.latvian.mods"
}
}
}

dependencies {
Expand All @@ -101,8 +122,13 @@ dependencies {
runtimeOnly(fg.deobf("mezz.jei:jei-${minecraft_version}-forge:${jei_version}"))

//Industrial Foregoing
implementation fg.deobf("maven.modrinth:industrial-foregoing:1.20.1-3.5.19")
implementation fg.deobf("maven.modrinth:titanium:1.20.1-3.8.32")
implementation fg.deobf("maven.modrinth:industrial-foregoing:${industrialforegoing_version}")
implementation fg.deobf("maven.modrinth:titanium:${titanium_version}")

//KubeJS
implementation fg.deobf("dev.latvian.mods:kubejs-forge:${kubejs_version}")
implementation fg.deobf("dev.latvian.mods:rhino-forge:${rhino_version}")
implementation fg.deobf("dev.architectury:architectury-forge:${architectury_version}")
}

tasks.named('processResources', ProcessResources).configure {
Expand Down
8 changes: 7 additions & 1 deletion changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,15 @@
### v1.0.1
- 添加了模组机器的配置文件

### v1.0.2
- 添加了配方以及插件:速度/效率/加工的KubeJs支持

## en_us
### v1.0.0
- init

### v1.0.1
- Added Config file for mod machines
- Added Config file for mod machines

### v1.0.2
- Added KubeJs support for "recipe and Addon: speed/efficiency/processing"
7 changes: 6 additions & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,17 @@ mapping_version=2023.09.03-1.20.1

## Dependency Properties
jei_version=15.8.2.26
industrialforegoing_version=1.20.1-3.5.19
titanium_version=1.20.1-3.8.32
kubejs_version=2001.6.3-build.45
rhino_version=2001.2.2-build.6
architectury_version=9.1.12

## Mod Properties
mod_id=ifeu
mod_name=Industrial Foregoing: Extra Upgrades
mod_license=MIT License
mod_version=1.20.1-1.0.1
mod_version=1.20.1-1.0.2
mod_group_id=net.yxiao233.ifeu
mod_authors=Y_Xiao233
mod_description=This mod adds more upgrade to Industrial Foregoing.
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,7 @@
import net.minecraftforge.data.event.GatherDataEvent;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.ModLoadingContext;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.config.ModConfig;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.yxiao233.ifeu.common.provider.ModRecipeProvider;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package net.yxiao233.ifeu.common.compact.kubejs;

import com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import dev.architectury.fluid.FluidStack;
import dev.latvian.mods.kubejs.fluid.FluidStackJS;
import dev.latvian.mods.kubejs.fluid.InputFluid;
import dev.latvian.mods.kubejs.recipe.RecipeJS;
import dev.latvian.mods.kubejs.recipe.RecipeKey;
import dev.latvian.mods.kubejs.recipe.component.ComponentRole;
import dev.latvian.mods.kubejs.recipe.component.RecipeComponent;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.TagParser;

public class IndustrialForegoingComponents {
public static RecipeComponent<InputFluid> INPUT_FLUID = new RecipeComponent<>() {
@Override
public String componentType() {
return "input_fluid";
}

@Override
public ComponentRole role() {
return ComponentRole.INPUT;
}

@Override
public Class<?> componentClass() {
return InputFluid.class;
}

@Override
public JsonElement write(RecipeJS recipeJS, InputFluid inputFluid) {
var stack = ((FluidStackJS) inputFluid);
return stack.kjs$isEmpty() ? null : new JsonPrimitive(stack.getFluidStack().write(new CompoundTag()).toString());
}

private InputFluid readString(RecipeJS recipe, String string){
try {
return recipe.readInputFluid(FluidStack.read(TagParser.parseTag(string)));
} catch (CommandSyntaxException e) {
throw new RuntimeException(e);
}
}

@Override
public InputFluid read(RecipeJS recipeJS, Object o) {
if(o instanceof JsonPrimitive primitive && primitive.isString()){
return readString(recipeJS,primitive.getAsString());
}
return recipeJS.readInputFluid(o);
}

@Override
public boolean hasPriority(RecipeJS recipe, Object from) {
return recipe.inputFluidHasPriority(from);
}

@Override
public String checkEmpty(RecipeKey<InputFluid> key, InputFluid value) {
if(value.kjs$isEmpty()){
return "Input fluid '" + key.name + "' can't be empty!";
}
return "";
}

@Override
public String toString() {
return componentType();
}
};
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package net.yxiao233.ifeu.common.compact.kubejs;

import dev.latvian.mods.kubejs.KubeJSPlugin;
import dev.latvian.mods.kubejs.recipe.schema.RegisterRecipeSchemasEvent;
import dev.latvian.mods.kubejs.registry.RegistryInfo;
import net.yxiao233.ifeu.common.compact.kubejs.item.EfficiencyAddonItemBuilder;
import net.yxiao233.ifeu.common.compact.kubejs.item.ProcessingAddonItemBuilder;
import net.yxiao233.ifeu.common.compact.kubejs.item.SpeedAddonItemBuilder;
import net.yxiao233.ifeu.common.compact.kubejs.schema.InfuserSchema;

public class ModKubeJSPlugin extends KubeJSPlugin {

@Override
public void init() {
RegistryInfo.ITEM.addType("industrialforegoing:speed_addon", SpeedAddonItemBuilder.class, SpeedAddonItemBuilder::new);
RegistryInfo.ITEM.addType("industrialforegoing:efficiency_addon", EfficiencyAddonItemBuilder.class, EfficiencyAddonItemBuilder::new);
RegistryInfo.ITEM.addType("industrialforegoing:processing_addon", ProcessingAddonItemBuilder.class, ProcessingAddonItemBuilder::new);
}

@Override
public void registerRecipeSchemas(RegisterRecipeSchemasEvent event) {
event.namespace("ifeu")
.register("infuser", InfuserSchema.SCHEMA);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package net.yxiao233.ifeu.common.compact.kubejs.item;

import dev.latvian.mods.kubejs.item.ItemBuilder;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.Item;
import net.yxiao233.ifeu.common.item.ModEfficiencyAddonItem;
import net.yxiao233.ifeu.common.registry.ModItems;

public class EfficiencyAddonItemBuilder extends ItemBuilder {

private int tier;
private int formTier;

public EfficiencyAddonItemBuilder(ResourceLocation i) {
super(i);
}

public EfficiencyAddonItemBuilder setTier(int tier) {
this.tier = tier;
this.formTier = tier;
return this;
}

public EfficiencyAddonItemBuilder setFormTier(int tier) {
this.formTier = tier;
return this;
}

@Override
public Item createObject() {
int formTier = this.formTier == this.tier ? this.tier : this.formTier;
return new ModEfficiencyAddonItem(formTier, tier, ModItems.TAB_ADDONS);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package net.yxiao233.ifeu.common.compact.kubejs.item;

import dev.latvian.mods.kubejs.item.ItemBuilder;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.Item;
import net.yxiao233.ifeu.common.item.ModProcessingAddonItem;
import net.yxiao233.ifeu.common.registry.ModItems;

public class ProcessingAddonItemBuilder extends ItemBuilder {
private int tier;
private int formTier;
public ProcessingAddonItemBuilder(ResourceLocation i) {
super(i);
}

public ProcessingAddonItemBuilder setTier(int tier){
this.tier = tier;
this.formTier = tier;
return this;
}

public ProcessingAddonItemBuilder setFormTier(int tier){
this.formTier = tier;
return this;
}

@Override
public Item createObject() {
int formTier = this.formTier == this.tier ? this.tier : this.formTier;
return new ModProcessingAddonItem(formTier,tier, ModItems.TAB_ADDONS);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package net.yxiao233.ifeu.common.compact.kubejs.item;

import dev.latvian.mods.kubejs.item.ItemBuilder;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.Item;
import net.yxiao233.ifeu.common.item.ModSpeedAddonItem;
import net.yxiao233.ifeu.common.registry.ModItems;

public class SpeedAddonItemBuilder extends ItemBuilder {
private int tier;
private int formTier;
public SpeedAddonItemBuilder(ResourceLocation i) {
super(i);
}

public SpeedAddonItemBuilder setTier(int tier){
this.tier = tier;
this.formTier = tier;
return this;
}

public SpeedAddonItemBuilder setFormTier(int tier){
this.formTier = tier;
return this;
}

@Override
public Item createObject() {
int formTier = this.formTier == this.tier ? this.tier : this.formTier;
return new ModSpeedAddonItem(formTier,tier, ModItems.TAB_ADDONS);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package net.yxiao233.ifeu.common.compact.kubejs.schema;

import dev.latvian.mods.kubejs.fluid.InputFluid;
import dev.latvian.mods.kubejs.item.InputItem;
import dev.latvian.mods.kubejs.item.OutputItem;
import dev.latvian.mods.kubejs.recipe.RecipeKey;
import dev.latvian.mods.kubejs.recipe.component.ItemComponents;
import dev.latvian.mods.kubejs.recipe.component.TimeComponent;
import dev.latvian.mods.kubejs.recipe.schema.RecipeSchema;
import net.yxiao233.ifeu.common.compact.kubejs.IndustrialForegoingComponents;

public interface InfuserSchema{
RecipeKey<OutputItem> OUTPUT = ItemComponents.OUTPUT.key("output");
RecipeKey<InputItem> INPUT = ItemComponents.INPUT.key("input");
RecipeKey<InputFluid> INPUT_FLUID = IndustrialForegoingComponents.INPUT_FLUID.key("inputFluid");
RecipeKey<Long> TIME = TimeComponent.TICKS.key("processingTime").optional(200L);
RecipeSchema SCHEMA = new RecipeSchema(OUTPUT,INPUT,INPUT_FLUID,TIME);
}
1 change: 1 addition & 0 deletions src/main/resources/kubejs.plugins.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
net.yxiao233.ifeu.common.compact.kubejs.ModKubeJSPlugin

0 comments on commit f73bd77

Please sign in to comment.