Skip to content
Merged

Ci #10

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
8 changes: 6 additions & 2 deletions .github/actions/ctnh_prepare_workspace/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -194,10 +194,14 @@ runs:
- name: Setup Java 17
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '17'
distribution: microsoft
java-version: '17.0.16'

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
with:
cache-read-only: ${{ github.event_name == 'pull_request' }}

- name: Show Java version
run: java -version
shell: bash
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ tasks.withType(JavaCompile).configureEach {
}

lombok {
version = "1.18.38"
version = "1.18.46"
}

jacoco {
Expand Down
2 changes: 1 addition & 1 deletion gradle/forge.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ ftbteams = "2001.3.0"
ftbquests = "2001.4.11"
ftbchunks = "2001.3.4"
ccTweaked = "1.114.3"
create = "6.0.6-150"
create = "6.0.8-291"
ponder = "1.0.80"
flywheel = "1.0.4"

Expand Down
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ minecraftForge = "1.20.1-47.4.1"
parchment = "2023.09.03" # https://parchmentmc.org/docs/getting-started
shadow = "8.3.5"
spotless = "8.1.0"
modDevGradle = "2.0.141"
modDevGradle = "2.0.142"
lombok = "8.14"
jetbrains-annotations = "26.0.1"
renderNurse = "0.0.12"
Expand Down
6 changes: 5 additions & 1 deletion gradle/scripts/moddevgradle.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,11 @@ configurations.configureEach {

legacyForge {
// Specify Forge version
version = libs.versions.minecraftForge.get()

enable {
forgeVersion = libs.versions.minecraftForge.get()
disableRecompilation = false
}

parchment {
minecraftVersion = libs.versions.minecraft.get()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -335,14 +335,14 @@ public boolean shouldBypassDistinct() {

@Override
public List<?> getXEIIngredients(List<FluidIngredient> contents, GTRecipeDefinition recipe, IO io) {
var list = createXEIContainerContents(contents, recipe, io);
return list.stream()
.map(FluidEntryList::getStacks)
.map(fluidStacks -> fluidStacks.stream()
.map(fluidStack -> EmiStack.of(fluidStack.getFluid(), fluidStack.getTag(),
fluidStack.getAmount()))
.toList())
.map(EmiIngredient::of)
.toList();
List<EmiIngredient> emiIngredients = new ArrayList<>();
for (var content : contents) {
var list = mapFluid(content).getStacks().stream()
.map(fluidStack -> EmiStack.of(fluidStack.getFluid(), fluidStack.getTag(), fluidStack.getAmount())
.setChance(content.getChance()))
.toList();
emiIngredients.add(EmiIngredient.of(list));
}
return emiIngredients;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -393,11 +393,13 @@ public boolean shouldBypassDistinct() {

@Override
public List<?> getXEIIngredients(List<ItemIngredient> contents, GTRecipeDefinition recipe, IO io) {
var list = createXEIContainerContents(contents, recipe, io);
return list.stream()
.map(ItemEntryList::getStacks)
.map(stacks -> stacks.stream().map(EmiStack::of).toList())
.map(EmiIngredient::of)
.toList();
List<EmiIngredient> emiIngredients = new ArrayList<>();
for (var content : contents) {
var list = mapItem(content).getStacks().stream()
.map(stack -> EmiStack.of(stack).setChance(content.getChance()))
.toList();
emiIngredients.add(EmiIngredient.of(list));
}
return emiIngredients;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -338,8 +338,8 @@ public ItemStack getCraftingRemainingItem(ItemStack itemStack) {
@Override
public boolean hasCraftingRemainingItem(ItemStack stack) {
for (IItemComponent component : components) {
if (component instanceof IRecipeRemainder recipeRemainder) {
return recipeRemainder.getRecipeRemained(stack) != ItemStack.EMPTY;
if (component instanceof IRecipeRemainder) {
return true;
}
}
return super.hasCraftingRemainingItem(stack);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler;
import com.gregtechceu.gtceu.api.recipe.RecipeHelper;
import com.gregtechceu.gtceu.api.recipe.handler.RecipeHandlerGroup;
import com.gregtechceu.gtceu.api.recipe.ingredient.ToolIngredient;
import com.gregtechceu.gtceu.api.transfer.item.CustomItemStackHandler;
import com.gregtechceu.gtceu.common.data.GTItems;
import com.gregtechceu.gtceu.common.data.GTMaterialItems;
Expand Down Expand Up @@ -140,6 +141,14 @@ public static GTToolType getToolFromSymbol(char symbol) {
return symbols.get(symbol);
}

public static ToolIngredient getIngredientFromSymbol(char symbol) {
GTToolType toolType = getToolFromSymbol(symbol);
if (toolType == null) {
throw new IllegalArgumentException("No tool type with symbol '%s'".formatted(symbol));
}
return new ToolIngredient(toolType);
}

@UnmodifiableView
public static CharSet getToolSymbols() {
return CharSets.unmodifiable(symbols.keySet());
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
package com.gregtechceu.gtceu.api.recipe.ingredient;

import com.gregtechceu.gtceu.GTCEu;
import com.gregtechceu.gtceu.api.item.tool.GTToolType;
import com.gregtechceu.gtceu.common.data.GTItems;

import net.minecraft.core.Holder;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.Ingredient;
import net.minecraftforge.common.crafting.AbstractIngredient;
import net.minecraftforge.common.crafting.IIngredientSerializer;

import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;

import static com.gregtechceu.gtceu.common.item.ToolBoxBehavior.LAST_USED_TOOL_TAG;
import static com.gregtechceu.gtceu.common.item.ToolBoxBehavior.TOOL_TYPES;

public class ToolIngredient extends AbstractIngredient {

public static final ResourceLocation TYPE = GTCEu.id("tool");

private final GTToolType toolType;
private ItemStack[] cachedStacks;

public ToolIngredient(GTToolType toolType) {
super(Stream.of(new Ingredient.TagValue(toolType.craftingTags.get(0))));
this.toolType = toolType;
}

@Override
public ItemStack @NotNull [] getItems() {
if (cachedStacks == null) {
List<ItemStack> stacks = new ArrayList<>();
for (Holder<Item> holder : BuiltInRegistries.ITEM.getTagOrEmpty(toolType.craftingTags.get(0))) {
stacks.add(new ItemStack(holder));
}
stacks.add(GTItems.TOOL_BOX.asStack());
cachedStacks = stacks.toArray(ItemStack[]::new);
}
return cachedStacks;
}

@Override
public boolean test(@Nullable ItemStack input) {
if (input == null || input.isEmpty()) {
return false;
}
if (input.is(toolType.craftingTags.get(0))) {
return true;
}
if (input.is(GTItems.TOOL_BOX.asItem()) &&
input.getOrCreateTag().getString(TOOL_TYPES).contains(toolType.name)) {
input.getOrCreateTag().putString(LAST_USED_TOOL_TAG, toolType.name);
return true;
}
return false;
}

@Override
public boolean isSimple() {
return false;
}

@Override
public @NotNull IIngredientSerializer<? extends Ingredient> getSerializer() {
return Serializer.INSTANCE;
}

@Override
public @NotNull JsonElement toJson() {
JsonObject json = new JsonObject();
json.addProperty("type", TYPE.toString());
json.addProperty("toolType", toolType.name);
return json;
}

public static class Serializer implements IIngredientSerializer<ToolIngredient> {

public static final Serializer INSTANCE = new Serializer();

@Override
public @NotNull ToolIngredient parse(FriendlyByteBuf buffer) {
return new ToolIngredient(GTToolType.getTypes().get(buffer.readUtf()));
}

@Override
public @NotNull ToolIngredient parse(@NotNull JsonObject json) {
return new ToolIngredient(GTToolType.getTypes().get(json.get("toolType").getAsString()));
}

@Override
public void write(FriendlyByteBuf buffer, ToolIngredient ingredient) {
buffer.writeUtf(ingredient.toolType.name);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,7 @@ public void commonSetup(FMLCommonSetupEvent event) {
event.enqueueWork(() -> {
CraftingHelper.register(NBTPredicateIngredient.TYPE, NBTPredicateIngredient.Serializer.INSTANCE);
CraftingHelper.register(FluidContainerIngredient.TYPE, FluidContainerIngredient.SERIALIZER);
CraftingHelper.register(ToolIngredient.TYPE, ToolIngredient.Serializer.INSTANCE);

if (GTCEu.Mods.isCCTweakedLoaded()) {
GTCEu.LOGGER.info("CC: Tweaked found. Enabling integration...");
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java
Original file line number Diff line number Diff line change
Expand Up @@ -2171,6 +2171,12 @@ public static ItemEntry<ComponentItem> createFluidCell(Material mat, int capacit

public static ItemEntry<Item> WIRELESS;
public static ItemEntry<Item> CAMERA;
public static ItemEntry<ComponentItem> TOOL_BOX = REGISTRATE.item("tool_box", ComponentItem::create)
.lang("Tool Box")
.properties(p -> p.stacksTo(1))
.model((ctx, prov) -> prov.generated(ctx::getEntry, prov.modLoc("item/tool_box/closed")))
.onRegister(attach(ToolBoxBehavior.INSTANCE))
.register();
public static ItemEntry<ComponentItem> TERMINAL = REGISTRATE.item("terminal", ComponentItem::create)
.lang("Terminal")
.properties(p -> p.stacksTo(1))
Expand Down
Loading
Loading