Skip to content

Commit 6537c31

Browse files
authored
Merge branch 'master' into deterministic-ore-processing
2 parents 72b11b9 + c0c5b60 commit 6537c31

File tree

8 files changed

+76
-16
lines changed

8 files changed

+76
-16
lines changed

dependencies.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ dependencies {
4141
// Published dependencies
4242
api("codechicken:codechickenlib:3.2.3.358")
4343
api("com.cleanroommc:modularui:2.5.0-rc1") { transitive = false }
44-
api("com.cleanroommc:groovyscript:1.1.1") { transitive = false }
44+
api("com.cleanroommc:groovyscript:1.2.0-hotfix1") { transitive = false }
4545
api("CraftTweaker2:CraftTweaker2-MC1120-Main:1.12-4.1.20.700")
4646
api("appeng:ae2-uel:v0.56.4") { transitive = false }
4747
api rfg.deobf("curse.maven:ctm-267602:2915363") // CTM 1.0.2.31

src/main/java/gregtech/GregTechMod.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
dependencies = "required:forge@[14.23.5.2847,);" + "required-after:codechickenlib@[3.2.3,);" +
3434
"required-after:modularui@[2.3,);" + "required-after:mixinbooter@[8.0,);" + "after:appliedenergistics2;" +
3535
"after:forestry;" + "after:extrabees;" + "after:extratrees;" + "after:genetics;" + "after:magicbees;" +
36-
"after:jei@[4.15.0,);" + "after:crafttweaker@[4.1.20,);" + "after:groovyscript@[1.1.0,);" +
36+
"after:jei@[4.15.0,);" + "after:crafttweaker@[4.1.20,);" + "after:groovyscript@[1.2.0,);" +
3737
"after:theoneprobe;" + "after:hwyla;")
3838
public class GregTechMod {
3939

src/main/java/gregtech/api/recipes/RecipeBuilder.java

Lines changed: 66 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import net.minecraft.block.Block;
3636
import net.minecraft.item.Item;
3737
import net.minecraft.item.ItemStack;
38+
import net.minecraft.util.ResourceLocation;
3839
import net.minecraftforge.fluids.Fluid;
3940
import net.minecraftforge.fluids.FluidStack;
4041
import net.minecraftforge.fml.common.Optional;
@@ -44,6 +45,7 @@
4445
import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient;
4546
import crafttweaker.CraftTweakerAPI;
4647
import it.unimi.dsi.fastutil.ints.IntList;
48+
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
4749
import org.apache.commons.lang3.builder.ToStringBuilder;
4850
import org.jetbrains.annotations.ApiStatus;
4951
import org.jetbrains.annotations.MustBeInvokedByOverriders;
@@ -53,6 +55,7 @@
5355
import java.util.ArrayList;
5456
import java.util.Arrays;
5557
import java.util.Collection;
58+
import java.util.Collections;
5659
import java.util.List;
5760
import java.util.Map;
5861

@@ -86,6 +89,9 @@ public class RecipeBuilder<R extends RecipeBuilder<R>> {
8689
protected RecipePropertyStorage recipePropertyStorage = RecipePropertyStorage.EMPTY;
8790
protected boolean recipePropertyStorageErrored = false;
8891

92+
protected boolean ignoreAllBuildActions = false;
93+
protected Map<ResourceLocation, RecipeBuildAction<R>> ignoredBuildActions;
94+
8995
protected RecipeBuilder() {
9096
this.inputs = new ArrayList<>();
9197
this.outputs = new ArrayList<>();
@@ -126,6 +132,10 @@ protected RecipeBuilder(RecipeBuilder<R> recipeBuilder) {
126132
this.hidden = recipeBuilder.hidden;
127133
this.category = recipeBuilder.category;
128134
this.recipePropertyStorage = recipeBuilder.recipePropertyStorage.copy();
135+
this.ignoreAllBuildActions = recipeBuilder.ignoreAllBuildActions;
136+
if (recipeBuilder.ignoredBuildActions != null) {
137+
this.ignoredBuildActions = new Object2ObjectOpenHashMap<>(recipeBuilder.ignoredBuildActions);
138+
}
129139
}
130140

131141
public R cleanroom(@Nullable CleanroomType cleanroom) {
@@ -887,6 +897,31 @@ public R copy() {
887897
return (R) new RecipeBuilder<>(this);
888898
}
889899

900+
/**
901+
* Only use if you absolutely don't want the recipe to be run through any build actions.
902+
* Instead, you should blacklist specific actions with {@link #ignoreBuildAction(ResourceLocation)}
903+
*/
904+
public R ignoreAllBuildActions() {
905+
this.ignoreAllBuildActions = true;
906+
return (R) this;
907+
}
908+
909+
public R ignoreBuildAction(ResourceLocation buildActionName) {
910+
if (ignoredBuildActions == null) {
911+
ignoredBuildActions = new Object2ObjectOpenHashMap<>();
912+
} else if (!recipeMap.getBuildActions().containsKey(buildActionName)) {
913+
GTLog.logger.error("Recipe map {} does not contain build action {}!", recipeMap, buildActionName,
914+
new Throwable());
915+
return (R) this;
916+
} else if (ignoredBuildActions.containsKey(buildActionName)) {
917+
return (R) this;
918+
}
919+
920+
ignoredBuildActions.put(buildActionName, recipeMap.getBuildActions().get(buildActionName));
921+
922+
return (R) this;
923+
}
924+
890925
public ValidationResult<Recipe> build() {
891926
EnumValidationResult result = recipePropertyStorageErrored ? EnumValidationResult.INVALID : validate();
892927
return ValidationResult.newResult(result, new Recipe(inputs, outputs,
@@ -985,8 +1020,14 @@ protected R invalidateOnBuildAction() {
9851020
*/
9861021
@MustBeInvokedByOverriders
9871022
public void buildAndRegister() {
988-
for (RecipeBuildAction<R> action : recipeMap.getBuildActions()) {
989-
action.accept((R) this);
1023+
if (!ignoreAllBuildActions) {
1024+
for (Map.Entry<ResourceLocation, RecipeBuildAction<R>> buildAction : recipeMap.getBuildActions()
1025+
.entrySet()) {
1026+
if (ignoredBuildActions != null && ignoredBuildActions.containsKey(buildAction.getKey())) {
1027+
continue;
1028+
}
1029+
buildAction.getValue().accept((R) this);
1030+
}
9901031
}
9911032
ValidationResult<Recipe> validationResult = build();
9921033
recipeMap.addRecipe(validationResult);
@@ -1047,6 +1088,27 @@ public int getDuration() {
10471088
return this.recipePropertyStorage.get(CleanroomProperty.getInstance(), null);
10481089
}
10491090

1091+
public boolean ignoresAllBuildActions() {
1092+
return ignoreAllBuildActions;
1093+
}
1094+
1095+
/**
1096+
* Get all ignored build actions for the recipe map.
1097+
*
1098+
* @return A map of ignored build actions.
1099+
*/
1100+
public @NotNull Map<ResourceLocation, RecipeBuildAction<R>> getIgnoredBuildActions() {
1101+
if (ignoreAllBuildActions) {
1102+
return recipeMap.getBuildActions();
1103+
}
1104+
1105+
if (ignoredBuildActions == null) {
1106+
return Collections.emptyMap();
1107+
}
1108+
1109+
return ignoredBuildActions;
1110+
}
1111+
10501112
@Override
10511113
public String toString() {
10521114
return new ToStringBuilder(this)
@@ -1064,6 +1126,8 @@ public String toString() {
10641126
.append("dimensions", getDimensionIDs().toString())
10651127
.append("dimensions_blocked", getBlockedDimensionIDs().toString())
10661128
.append("recipeStatus", recipeStatus)
1129+
.append("ignoresBuildActions", ignoresAllBuildActions())
1130+
.append("ignoredBuildActions", getIgnoredBuildActions())
10671131
.toString();
10681132
}
10691133
}

src/main/java/gregtech/api/recipes/RecipeMap.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -347,8 +347,8 @@ protected void onRecipeBuild(@NotNull Map<ResourceLocation, RecipeBuildAction<R>
347347
* @return the build actions for this RecipeMap's default RecipeBuilder
348348
*/
349349
@ApiStatus.Internal
350-
protected @UnmodifiableView @NotNull Collection<@NotNull RecipeBuildAction<R>> getBuildActions() {
351-
return this.recipeBuildActions.values();
350+
protected @UnmodifiableView @NotNull Map<ResourceLocation, RecipeBuildAction<R>> getBuildActions() {
351+
return this.recipeBuildActions;
352352
}
353353

354354
public RecipeMap<R> allowEmptyOutput() {

src/main/java/gregtech/api/unification/material/materials/FirstDegreeMaterials.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,6 @@ public static void register() {
241241
Galena = new Material.Builder(279, gregtechId("galena"))
242242
.dust(3).ore()
243243
.color(0x643C64)
244-
.flags(NO_SMELTING)
245244
.components(Lead, 1, Sulfur, 1)
246245
.build();
247246

src/main/java/gregtech/api/util/GTTransferUtils.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -175,9 +175,6 @@ public static ItemStack insertItem(IItemHandler handler, ItemStack stack, boolea
175175
if (handler == null || stack.isEmpty()) {
176176
return stack;
177177
}
178-
if (!stack.isStackable()) {
179-
return insertToEmpty(handler, stack, simulate);
180-
}
181178

182179
IntList emptySlots = new IntArrayList();
183180
int slots = handler.getSlots();

src/main/java/gregtech/integration/groovy/GrSRecipeHelper.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import net.minecraft.item.ItemStack;
99

10-
import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper;
10+
import com.cleanroommc.groovyscript.helper.ingredient.GroovyScriptCodeConverter;
1111
import com.cleanroommc.groovyscript.helper.ingredient.NbtHelper;
1212

1313
public class GrSRecipeHelper {
@@ -20,7 +20,7 @@ public static String getRecipeRemoveLine(RecipeMap<?> recipeMap, Recipe recipe)
2020
.append(recipe.getEUt())
2121
.append(", ");
2222

23-
if (recipe.getInputs().size() > 0) {
23+
if (!recipe.getInputs().isEmpty()) {
2424
builder.append("[");
2525
for (GTRecipeInput ci : recipe.getInputs()) {
2626
String ingredient = getGroovyItemString(ci);
@@ -32,10 +32,10 @@ public static String getRecipeRemoveLine(RecipeMap<?> recipeMap, Recipe recipe)
3232
builder.append("null, ");
3333
}
3434

35-
if (recipe.getFluidInputs().size() > 0) {
35+
if (!recipe.getFluidInputs().isEmpty()) {
3636
builder.append("[");
3737
for (GTRecipeInput fluidIngredient : recipe.getFluidInputs()) {
38-
builder.append(IngredientHelper.asGroovyCode(fluidIngredient.getInputFluidStack(), false));
38+
builder.append(GroovyScriptCodeConverter.asGroovyCode(fluidIngredient.getInputFluidStack(), false));
3939

4040
if (fluidIngredient.getAmount() > 1) {
4141
builder.append(" * ")
@@ -72,7 +72,7 @@ public static String getGroovyItemString(GTRecipeInput recipeInput) {
7272
}
7373
if (itemStack != null) {
7474
if (itemId == null) {
75-
builder.append(IngredientHelper.asGroovyCode(itemStack, false));
75+
builder.append(GroovyScriptCodeConverter.asGroovyCode(itemStack, false));
7676
}
7777

7878
if (itemStack.getTagCompound() != null) {

src/main/java/gregtech/integration/groovy/GroovyExpansions.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public static Material.Builder materialBuilder(MaterialEvent event, int id, Reso
2929
}
3030

3131
public static Material.Builder materialBuilder(MaterialEvent event, int id, String domain, String path) {
32-
return materialBuilder(event, id, domain, path);
32+
return materialBuilder(event, id, new ResourceLocation(domain, path));
3333
}
3434

3535
public static Material.Builder materialBuilder(MaterialEvent event, int id, String s) {

0 commit comments

Comments
 (0)