Skip to content

Commit eb7be92

Browse files
Merge branch 'GregTechCEu:master' into master
2 parents 2562a33 + c0c5b60 commit eb7be92

28 files changed

+217
-329
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/metatileentity/MetaTileEntity.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import gregtech.api.util.Mods;
3636
import gregtech.client.renderer.texture.Textures;
3737
import gregtech.client.utils.BloomEffectUtil;
38+
import gregtech.client.utils.RenderUtil;
3839
import gregtech.client.utils.TooltipHelper;
3940
import gregtech.common.ConfigHolder;
4041
import gregtech.common.creativetab.GTCreativeTabs;
@@ -88,7 +89,6 @@
8889
import codechicken.lib.render.CCRenderState;
8990
import codechicken.lib.render.pipeline.ColourMultiplier;
9091
import codechicken.lib.render.pipeline.IVertexOperation;
91-
import codechicken.lib.texture.TextureUtils;
9292
import codechicken.lib.vec.Cuboid6;
9393
import codechicken.lib.vec.Matrix4;
9494
import com.cleanroommc.modularui.api.IGuiHolder;
@@ -270,7 +270,7 @@ public boolean showToolUsages() {
270270

271271
@SideOnly(Side.CLIENT)
272272
public Pair<TextureAtlasSprite, Integer> getParticleTexture() {
273-
return Pair.of(TextureUtils.getMissingSprite(), 0xFFFFFF);
273+
return Pair.of(RenderUtil.getMissingSprite(), 0xFFFFFF);
274274
}
275275

276276
/**
@@ -296,7 +296,7 @@ public void setRenderContextStack(ItemStack itemStack) {
296296
*/
297297
@SideOnly(Side.CLIENT)
298298
public void renderMetaTileEntity(CCRenderState renderState, Matrix4 translation, IVertexOperation[] pipeline) {
299-
TextureAtlasSprite atlasSprite = TextureUtils.getMissingSprite();
299+
TextureAtlasSprite atlasSprite = RenderUtil.getMissingSprite();
300300
IVertexOperation[] renderPipeline = ArrayUtils.add(pipeline,
301301
new ColourMultiplier(GTUtility.convertRGBtoOpaqueRGBA_CL(getPaintingColorForRendering())));
302302
for (EnumFacing face : EnumFacing.VALUES) {

src/main/java/gregtech/api/metatileentity/multiblock/MultiMapMultiblockController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ public boolean onScrewdriverClick(EntityPlayer playerIn, EnumHand hand, EnumFaci
5959
index = (recipeMapIndex + 1) % recipeMaps.length;
6060

6161
setRecipeMapIndex(index);
62-
this.recipeMapWorkable.forceRecipeRecheck();
6362
} else {
6463
playerIn.sendStatusMessage(
6564
new TextComponentTranslation("gregtech.multiblock.multiple_recipemaps.switch_message"), true);
@@ -79,6 +78,7 @@ public void setRecipeMapIndex(int index) {
7978
this.recipeMapIndex = index;
8079
if (!getWorld().isRemote) {
8180
writeCustomData(GregtechDataCodes.RECIPE_MAP_INDEX, buf -> buf.writeByte(index));
81+
recipeMapWorkable.forceRecipeRecheck();
8282
markDirty();
8383
}
8484
}

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/client/ClientProxy.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import gregtech.client.renderer.pipe.LaserPipeRenderer;
2121
import gregtech.client.renderer.pipe.OpticalPipeRenderer;
2222
import gregtech.client.renderer.pipe.PipeRenderer;
23+
import gregtech.client.renderer.texture.Textures;
2324
import gregtech.client.utils.ItemRenderCompat;
2425
import gregtech.client.utils.TooltipHelper;
2526
import gregtech.common.CommonProxy;
@@ -33,6 +34,7 @@
3334

3435
import net.minecraft.block.Block;
3536
import net.minecraft.client.Minecraft;
37+
import net.minecraft.client.renderer.texture.TextureMap;
3638
import net.minecraft.client.resources.I18n;
3739
import net.minecraft.client.resources.SimpleReloadableResourceManager;
3840
import net.minecraft.entity.player.EntityPlayer;
@@ -46,6 +48,7 @@
4648
import net.minecraft.nbt.NBTTagCompound;
4749
import net.minecraft.util.text.TextFormatting;
4850
import net.minecraftforge.client.event.ModelRegistryEvent;
51+
import net.minecraftforge.client.event.TextureStitchEvent;
4952
import net.minecraftforge.common.MinecraftForge;
5053
import net.minecraftforge.common.util.Constants;
5154
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
@@ -59,7 +62,6 @@
5962
import net.minecraftforge.fml.relauncher.SideOnly;
6063
import net.minecraftforge.oredict.OreDictionary;
6164

62-
import codechicken.lib.texture.TextureUtils;
6365
import org.jetbrains.annotations.NotNull;
6466
import paulscode.sound.SoundSystemConfig;
6567

@@ -91,8 +93,6 @@ public void onPreLoad() {
9193
OpticalPipeRenderer.INSTANCE.preInit();
9294
LaserPipeRenderer.INSTANCE.preInit();
9395
MetaEntities.initRenderers();
94-
TextureUtils.addIconRegister(GTFluidRegistration.INSTANCE::registerSprites);
95-
TextureUtils.addIconRegister(PipeRenderer::initializeRestrictor);
9696
}
9797

9898
@Override
@@ -114,6 +114,19 @@ public static void registerColors() {
114114
ToolItems.registerColors();
115115
}
116116

117+
@SubscribeEvent
118+
public static void textureStitchPre(@NotNull TextureStitchEvent.Pre event) {
119+
TextureMap map = event.getMap();
120+
GTFluidRegistration.INSTANCE.registerSprites(map);
121+
PipeRenderer.initializeRestrictor(map);
122+
Textures.register(map);
123+
CableRenderer.INSTANCE.registerIcons(map);
124+
FluidPipeRenderer.INSTANCE.registerIcons(map);
125+
ItemPipeRenderer.INSTANCE.registerIcons(map);
126+
OpticalPipeRenderer.INSTANCE.registerIcons(map);
127+
LaserPipeRenderer.INSTANCE.registerIcons(map);
128+
}
129+
117130
@SubscribeEvent
118131
public static void registerModels(ModelRegistryEvent event) {
119132
MetaBlocks.registerStateMappers();

0 commit comments

Comments
 (0)