Skip to content

Commit 068736d

Browse files
committed
Work on removing more capturing lambdas
1 parent 904f1d2 commit 068736d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+314
-214
lines changed

src/additions/java/mekanism/additions/common/item/ItemWalkieTalkie.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public void changeMode(@NotNull Player player, @NotNull ItemStack stack, int shi
6363
int newChannel = Math.floorMod(data.getChannel() + shift - 1, 8) + 1;
6464
if (data.getChannel() != newChannel) {
6565
data.channel = newChannel;
66-
displayChange.sendMessage(player, () -> AdditionsLang.CHANNEL_CHANGE.translate(newChannel));
66+
displayChange.sendMessage(player, newChannel, AdditionsLang.CHANNEL_CHANGE::translate);
6767
}
6868
}
6969
}

src/api/java/mekanism/api/IDisableableEnum.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,21 @@ public interface IDisableableEnum<TYPE extends Enum<TYPE> & IDisableableEnum<TYP
1717
*/
1818
boolean isEnabled();
1919

20+
@Override
21+
default TYPE getNext() {
22+
return IIncrementalEnum.super.getNext(IDisableableEnum::isEnabled);
23+
}
24+
2025
@Override
2126
default TYPE getNext(Predicate<TYPE> isValid) {
2227
return IIncrementalEnum.super.getNext(element -> element.isEnabled() && isValid.test(element));
2328
}
2429

30+
@Override
31+
default TYPE getPrevious() {
32+
return IIncrementalEnum.super.getPrevious(IDisableableEnum::isEnabled);
33+
}
34+
2535
@Override
2636
default TYPE getPrevious(Predicate<TYPE> isValid) {
2737
return IIncrementalEnum.super.getPrevious(element -> element.isEnabled() && isValid.test(element));

src/generators/java/mekanism/generators/client/render/RenderFissionReactor.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
2525
import net.minecraft.core.BlockPos;
2626
import net.minecraft.util.profiling.ProfilerFiller;
27-
import net.neoforged.neoforge.common.util.Lazy;
2827

2928
@NothingNullByDefault
3029
public class RenderFissionReactor extends MultiblockTileEntityRenderer<FissionReactorMultiblockData, TileEntityFissionReactorCasing> {
@@ -55,8 +54,9 @@ public RenderFissionReactor(BlockEntityRendererProvider.Context context) {
5554
protected void render(TileEntityFissionReactorCasing tile, FissionReactorMultiblockData multiblock, float partialTick, PoseStack matrix, MultiBufferSource renderer,
5655
int light, int overlayLight, ProfilerFiller profiler) {
5756
BlockPos pos = tile.getBlockPos();
58-
Lazy<VertexConsumer> buffer = Lazy.of(() -> renderer.getBuffer(Sheets.translucentCullBlockSheet()));
57+
VertexConsumer buffer = null;
5958
if (multiblock.isBurning()) {
59+
buffer = renderer.getBuffer(Sheets.translucentCullBlockSheet());
6060
profiler.push(GeneratorsProfilerConstants.FISSION_FUEL_ASSEMBLY);
6161
Model3D model = glowModel.get();
6262
Camera camera = getCamera();
@@ -66,20 +66,26 @@ protected void render(TileEntityFissionReactorCasing tile, FissionReactorMultibl
6666
matrix.translate(assemblyPos.getX() - pos.getX(), assemblyPos.getY() - pos.getY(), assemblyPos.getZ() - pos.getZ());
6767
//Add a bit of extra distance so that it includes the lower part of the control rod
6868
matrix.scale(1, assembly.height() + 0.625F, 1);
69-
MekanismRenderer.renderObject(model, matrix, buffer.get(), GLOW_ARGB, LightTexture.FULL_BRIGHT, overlayLight, FaceDisplay.FRONT, camera, assemblyPos);
69+
MekanismRenderer.renderObject(model, matrix, buffer, GLOW_ARGB, LightTexture.FULL_BRIGHT, overlayLight, FaceDisplay.FRONT, camera, assemblyPos);
7070
matrix.popPose();
7171
}
7272
profiler.pop();
7373
}
7474
if (!multiblock.fluidCoolantTank.isEmpty()) {
75+
if (buffer == null) {
76+
buffer = renderer.getBuffer(Sheets.translucentCullBlockSheet());
77+
}
7578
FluidRenderData data = RenderData.Builder.create(multiblock.fluidCoolantTank.getFluid()).of(multiblock).build();
76-
renderObject(data, multiblock.valves, pos, matrix, buffer.get(), overlayLight, multiblock.prevCoolantScale);
79+
renderObject(data, multiblock.valves, pos, matrix, buffer, overlayLight, multiblock.prevCoolantScale);
7780
}
7881
if (!multiblock.heatedCoolantTank.isEmpty()) {
82+
if (buffer == null) {
83+
buffer = renderer.getBuffer(Sheets.translucentCullBlockSheet());
84+
}
7985
RenderData data = RenderData.Builder.create(multiblock.heatedCoolantTank.getStack()).of(multiblock).build();
8086
//Create a slightly shrunken version of the model if it is missing to prevent z-fighting
8187
Model3D gasModel = cachedHeatedCoolantModels.computeIfAbsent(data, d -> ModelRenderer.getModel(d, 1).copy().shrink(0.01F));
82-
renderObject(data, pos, gasModel, matrix, buffer.get(), overlayLight, multiblock.prevHeatedCoolantScale);
88+
renderObject(data, pos, gasModel, matrix, buffer, overlayLight, multiblock.prevHeatedCoolantScale);
8389
}
8490
}
8591

src/generators/java/mekanism/generators/client/render/RenderWindGenerator.java

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@ public RenderWindGenerator(BlockEntityRendererProvider.Context context) {
2626

2727
@Override
2828
protected void render(TileEntityWindGenerator tile, float partialTick, PoseStack matrix, MultiBufferSource renderer, int light, int overlayLight, ProfilerFiller profiler) {
29-
renderTranslated(tile, partialTick, matrix, (poseStack, angle) -> model.render(poseStack, renderer, angle, light, overlayLight, false));
29+
double angle = setupRenderer(tile, partialTick, matrix);
30+
model.render(matrix, renderer, angle, light, overlayLight, false);
31+
matrix.popPose();
3032
}
3133

3234
@Override
@@ -49,11 +51,13 @@ public AABB getRenderBoundingBox(TileEntityWindGenerator tile) {
4951
@Override
5052
public void renderWireFrame(BlockEntity tile, float partialTick, PoseStack matrix, VertexConsumer buffer, int red, int green, int blue, int alpha) {
5153
if (tile instanceof TileEntityWindGenerator windGenerator) {
52-
renderTranslated(windGenerator, partialTick, matrix, (poseStack, angle) -> model.renderWireFrame(poseStack, buffer, angle, red, green, blue, alpha));
54+
double angle = setupRenderer(windGenerator, partialTick, matrix);
55+
model.renderWireFrame(matrix, buffer, angle, red, green, blue, alpha);
56+
matrix.popPose();
5357
}
5458
}
5559

56-
private void renderTranslated(TileEntityWindGenerator tile, float partialTick, PoseStack matrix, WindGeneratorRenderer renderer) {
60+
private double setupRenderer(TileEntityWindGenerator tile, float partialTick, PoseStack matrix) {
5761
matrix.pushPose();
5862
matrix.translate(0.5, 1.5, 0.5);
5963
MekanismRenderer.rotate(matrix, tile.getDirection(), 0, 180, 90, 270);
@@ -62,12 +66,6 @@ private void renderTranslated(TileEntityWindGenerator tile, float partialTick, P
6266
if (tile.getActive() && partialTick > 0) {
6367
angle = (angle + tile.getHeightSpeedRatio() * partialTick) % 360;
6468
}
65-
renderer.render(matrix, angle);
66-
matrix.popPose();
67-
}
68-
69-
private interface WindGeneratorRenderer {
70-
71-
void render(PoseStack poseStack, double angle);
69+
return angle;
7270
}
7371
}

src/generators/java/mekanism/generators/common/content/gear/mekasuit/ModuleGeothermalGeneratorUnit.java

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package mekanism.generators.common.content.gear.mekasuit;
22

3+
import it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap;
4+
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
35
import java.util.Map;
46
import mekanism.api.Action;
57
import mekanism.api.AutomationType;
@@ -9,9 +11,12 @@
911
import mekanism.api.gear.IModule;
1012
import mekanism.api.heat.HeatAPI;
1113
import mekanism.api.math.FloatingLong;
14+
import mekanism.api.math.FloatingLongSupplier;
15+
import mekanism.common.config.listener.ConfigBasedCachedFloatSupplier;
1216
import mekanism.common.util.MekanismUtils;
1317
import mekanism.common.util.MekanismUtils.FluidInDetails;
1418
import mekanism.generators.common.config.MekanismGeneratorsConfig;
19+
import net.minecraft.Util;
1520
import net.minecraft.core.BlockPos;
1621
import net.minecraft.tags.DamageTypeTags;
1722
import net.minecraft.world.damagesource.DamageSource;
@@ -24,14 +29,28 @@
2429
@ParametersAreNotNullByDefault
2530
public class ModuleGeothermalGeneratorUnit implements ICustomModule<ModuleGeothermalGeneratorUnit> {
2631

32+
private static final Int2ObjectMap<ModuleDamageAbsorbInfo> DAMAGE_ABSORB_VALUES = Util.make(() -> {
33+
int maxSize = 8;
34+
//Based on the max size of the module
35+
Int2ObjectMap<ModuleDamageAbsorbInfo> map = new Int2ObjectArrayMap<>(maxSize);
36+
FloatingLongSupplier NO_COST = () -> FloatingLong.ZERO;
37+
for (int count = 1; count <= maxSize; count++) {
38+
//Scale the amount absorbed by how many modules are installed out of the possible number installed
39+
float ratio = count / (float) maxSize;
40+
map.put(count, new ModuleDamageAbsorbInfo(new ConfigBasedCachedFloatSupplier(() -> MekanismGeneratorsConfig.gear.mekaSuitHeatDamageReductionRatio.get() * ratio,
41+
MekanismGeneratorsConfig.gear.mekaSuitHeatDamageReductionRatio), NO_COST));
42+
}
43+
return map;
44+
});
45+
2746
@Override
2847
public void tickServer(IModule<ModuleGeothermalGeneratorUnit> module, Player player) {
2948
IEnergyContainer energyContainer = module.getEnergyContainer();
3049
if (energyContainer != null && !energyContainer.getNeeded().isZero()) {
3150
double highestScaledDegrees = 0;
3251
double legHeight = player.isCrouching() ? 0.6 : 0.7;
33-
Map<FluidType, FluidInDetails> fluidsIn = MekanismUtils.getFluidsIn(player, bb -> new AABB(bb.minX, bb.minY, bb.minZ, bb.maxX,
34-
Math.min(bb.minY + legHeight, bb.maxY), bb.maxZ));
52+
Map<FluidType, FluidInDetails> fluidsIn = MekanismUtils.getFluidsIn(player, legHeight, (bb, data) -> new AABB(bb.minX, bb.minY, bb.minZ, bb.maxX,
53+
Math.min(bb.minY + data, bb.maxY), bb.maxZ));
3554
for (Map.Entry<FluidType, FluidInDetails> entry : fluidsIn.entrySet()) {
3655
FluidInDetails details = entry.getValue();
3756
double height = details.getMaxHeight();
@@ -75,11 +94,6 @@ public void tickServer(IModule<ModuleGeothermalGeneratorUnit> module, Player pla
7594
@Nullable
7695
@Override
7796
public ModuleDamageAbsorbInfo getDamageAbsorbInfo(IModule<ModuleGeothermalGeneratorUnit> module, DamageSource damageSource) {
78-
if (damageSource.is(DamageTypeTags.IS_FIRE)) {
79-
//Scale the amount absorbed by how many modules are installed out of the possible number installed
80-
float ratio = MekanismGeneratorsConfig.gear.mekaSuitHeatDamageReductionRatio.get() * (module.getInstalledCount() / (float) module.getData().getMaxStackSize());
81-
return new ModuleDamageAbsorbInfo(() -> ratio, () -> FloatingLong.ZERO);
82-
}
83-
return null;
97+
return damageSource.is(DamageTypeTags.IS_FIRE) ? DAMAGE_ABSORB_VALUES.get(module.getInstalledCount()) : null;
8498
}
8599
}

src/main/java/mekanism/client/key/MekKeyBindingBuilder.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import java.util.function.BooleanSupplier;
77
import java.util.function.Consumer;
88
import mekanism.api.annotations.NothingNullByDefault;
9+
import mekanism.api.functions.ConstantPredicates;
910
import mekanism.api.text.IHasTranslationKey;
1011
import mekanism.common.MekanismLang;
1112
import net.minecraft.client.KeyMapping;
@@ -93,7 +94,7 @@ public MekKeyBindingBuilder onKeyUp(Consumer<KeyMapping> onKeyUp) {
9394
}
9495

9596
public MekKeyBindingBuilder toggleable() {
96-
return toggleable(() -> true);
97+
return toggleable(ConstantPredicates.ALWAYS_TRUE);
9798
}
9899

99100
public MekKeyBindingBuilder toggleable(BooleanSupplier toggleable) {

src/main/java/mekanism/client/recipe_viewer/QIOCraftingTransferHandler.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,10 @@ record TrackedIngredients<SLOT extends RVRecipeSlot>(SLOT view, Set<HashedItem>
264264
}
265265
if (!missingSlots.isEmpty()) {
266266
//If we have any missing slots, report that they are missing to the user and don't allow transferring
267-
List<SLOT> missing = missingSlots.intStream().mapToObj(slot -> hashedIngredients.get((byte) slot).view()).toList();
267+
List<SLOT> missing = new ArrayList<>(missingSlots.size());
268+
for (byte slot : missingSlots) {
269+
missing.add(hashedIngredients.get(slot).view());
270+
}
268271
return recipeHelper.createMissingSlotsError(missing);
269272
}
270273
}

src/main/java/mekanism/client/recipe_viewer/color/PaintingColorDetails.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
public class PaintingColorDetails extends RecipeViewerColorDetails<Pigment, PigmentStack> {
77

88
public PaintingColorDetails() {
9-
super(PigmentStack.EMPTY);
9+
super(() -> PigmentStack.EMPTY);
1010
}
1111

1212
@Override

src/main/java/mekanism/client/recipe_viewer/color/PigmentExtractorColorDetails.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
public class PigmentExtractorColorDetails extends RecipeViewerColorDetails<Pigment, PigmentStack> {
77

88
public PigmentExtractorColorDetails() {
9-
super(PigmentStack.EMPTY);
9+
super(() -> PigmentStack.EMPTY);
1010
}
1111

1212
@Override

src/main/java/mekanism/client/recipe_viewer/color/PigmentMixerColorDetails.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public class PigmentMixerColorDetails extends RecipeViewerColorDetails<Pigment,
99
private Supplier<PigmentStack> outputIngredient;
1010

1111
public PigmentMixerColorDetails() {
12-
super(PigmentStack.EMPTY);
12+
super(() -> PigmentStack.EMPTY);
1313
setOutputIngredient(empty);
1414
}
1515

@@ -29,10 +29,6 @@ public int getColorTo() {
2929
return getColor(outputIngredient);
3030
}
3131

32-
public void setOutputIngredient(PigmentStack outputIngredient) {
33-
setOutputIngredient(() -> outputIngredient);
34-
}
35-
3632
public void setOutputIngredient(Supplier<PigmentStack> outputIngredient) {
3733
this.outputIngredient = outputIngredient;
3834
}

0 commit comments

Comments
 (0)