From 4ed66609b0c8bdf60535427ba7cf94363782955b Mon Sep 17 00:00:00 2001 From: digitalseraphim Date: Tue, 6 Feb 2024 03:33:01 -0500 Subject: [PATCH] =?UTF-8?q?Make=20ArchitecturyFlowingFluid=20use=20the=20s?= =?UTF-8?q?ame=20Forge=20FluidType=20when=20the=20s=E2=80=A6=20(#467)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Make ArchitecturyFlowingFluid use the same Forge FluidType when the same ArchitecturyFluidAttributes object is passed in * Use the same fluid type instead of the same properties for simplity * Fix packages import --------- Co-authored-by: shedaniel --- .../imitator/ArchitecturyFlowingFluid.java | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/forge/src/main/java/dev/architectury/core/fluid/forge/imitator/ArchitecturyFlowingFluid.java b/forge/src/main/java/dev/architectury/core/fluid/forge/imitator/ArchitecturyFlowingFluid.java index 902018b5..50a30567 100644 --- a/forge/src/main/java/dev/architectury/core/fluid/forge/imitator/ArchitecturyFlowingFluid.java +++ b/forge/src/main/java/dev/architectury/core/fluid/forge/imitator/ArchitecturyFlowingFluid.java @@ -42,24 +42,24 @@ import net.minecraftforge.fluids.FluidType; import net.minecraftforge.fluids.ForgeFlowingFluid; import org.jetbrains.annotations.NotNull; +import java.util.IdentityHashMap; +import java.util.Map; import java.util.Optional; -import java.util.function.Supplier; public abstract class ArchitecturyFlowingFluid extends ForgeFlowingFluid { + private static final Map FLUID_TYPE_MAP = new IdentityHashMap<>(); private final ArchitecturyFluidAttributes attributes; - private final Supplier forgeType; ArchitecturyFlowingFluid(ArchitecturyFluidAttributes attributes) { super(toForgeProperties(attributes)); this.attributes = attributes; - this.forgeType = Suppliers.memoize(() -> { - return new ArchitecturyFluidAttributesForge(FluidType.Properties.create(), this, attributes); - }); } private static Properties toForgeProperties(ArchitecturyFluidAttributes attributes) { Properties forge = new Properties(Suppliers.memoize(() -> { - return new ArchitecturyFluidAttributesForge(FluidType.Properties.create(), attributes.getSourceFluid(), attributes); + return FLUID_TYPE_MAP.computeIfAbsent(attributes, attr -> { + return new ArchitecturyFluidAttributesForge(FluidType.Properties.create(), attr.getSourceFluid(), attr); + }); }), attributes::getSourceFluid, attributes::getFlowingFluid); forge.slopeFindDistance(attributes.getSlopeFindDistance()); forge.levelDecreasePerBlock(attributes.getDropOff()); @@ -70,11 +70,6 @@ public abstract class ArchitecturyFlowingFluid extends ForgeFlowingFluid { return forge; } - @Override - public FluidType getFluidType() { - return forgeType.get(); - } - @Override public Fluid getFlowing() { return attributes.getFlowingFluid();