mirror of
https://github.com/MinecraftForge/MinecraftForge.git
synced 2026-11-13 16:54:22 +00:00
Change universal bucket support to use fluid names instead of instances (#5031)
This commit is contained in:
1 parent
ee0d43bbde
commit
82262e462e
3 files changed
+26
-13
No files matched your search
@@ -25,7 +25,6 @@ import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
|
||||
import net.minecraftforge.fml.common.LoaderState;
|
||||
import org.apache.logging.log4j.Level;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.init.Blocks;
|
||||
@@ -39,8 +38,6 @@ import net.minecraftforge.common.MinecraftForge;
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.common.collect.BiMap;
|
||||
import com.google.common.collect.HashBiMap;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.common.collect.Sets;
|
||||
|
||||
@@ -70,7 +67,8 @@ public abstract class FluidRegistry
|
||||
static Map<Fluid,FluidDelegate> delegates = Maps.newHashMap();
|
||||
|
||||
static boolean universalBucketEnabled = false;
|
||||
static Set<Fluid> bucketFluids = Sets.newHashSet();
|
||||
static Set<String> bucketFluids = Sets.newHashSet();
|
||||
static Set<Fluid> currentBucketFluids;
|
||||
|
||||
public static final Fluid WATER = new Fluid("water", new ResourceLocation("blocks/water_still"), new ResourceLocation("blocks/water_flow"), new ResourceLocation("blocks/water_overlay")) {
|
||||
@Override
|
||||
@@ -143,6 +141,7 @@ public abstract class FluidRegistry
|
||||
fluids = localFluids;
|
||||
fluidNames = localFluidNames;
|
||||
fluidBlocks = null;
|
||||
currentBucketFluids = null;
|
||||
for (FluidDelegate fd : delegates.values())
|
||||
{
|
||||
fd.rebind();
|
||||
@@ -237,7 +236,7 @@ public abstract class FluidRegistry
|
||||
*/
|
||||
public static Map<String, Fluid> getRegisteredFluids()
|
||||
{
|
||||
return ImmutableMap.copyOf(fluids);
|
||||
return Maps.unmodifiableBiMap(fluids);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -247,7 +246,7 @@ public abstract class FluidRegistry
|
||||
@Deprecated
|
||||
public static Map<Fluid, Integer> getRegisteredFluidIDs()
|
||||
{
|
||||
return ImmutableMap.copyOf(fluidIDs);
|
||||
return Maps.unmodifiableBiMap(fluidIDs);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -290,18 +289,31 @@ public abstract class FluidRegistry
|
||||
{
|
||||
registerFluid(fluid);
|
||||
}
|
||||
return bucketFluids.add(fluid);
|
||||
return bucketFluids.add(fluid.getName());
|
||||
}
|
||||
|
||||
/**
|
||||
* All fluids registered with the universal bucket
|
||||
* @return An immutable set containing the fluids
|
||||
* @return A read-only set containing the fluids
|
||||
*/
|
||||
public static Set<Fluid> getBucketFluids()
|
||||
{
|
||||
return Collections.unmodifiableSet(bucketFluids);
|
||||
if (currentBucketFluids == null)
|
||||
{
|
||||
Set<Fluid> tmp = Sets.newHashSet();
|
||||
for (String fluidName : bucketFluids)
|
||||
{
|
||||
tmp.add(getFluid(fluidName));
|
||||
}
|
||||
currentBucketFluids = Collections.unmodifiableSet(tmp);
|
||||
}
|
||||
return currentBucketFluids;
|
||||
}
|
||||
|
||||
public static boolean hasBucket(Fluid fluid)
|
||||
{
|
||||
return bucketFluids.contains(fluid.getName());
|
||||
}
|
||||
|
||||
public static Fluid lookupFluidForBlock(Block block)
|
||||
{
|
||||
|
||||
@@ -740,7 +740,7 @@ public class FluidUtil
|
||||
}
|
||||
}
|
||||
|
||||
if (FluidRegistry.isUniversalBucketEnabled() && FluidRegistry.getBucketFluids().contains(fluid))
|
||||
if (FluidRegistry.isUniversalBucketEnabled() && FluidRegistry.hasBucket(fluid))
|
||||
{
|
||||
UniversalBucket bucket = ForgeModContainer.getInstance().universalBucket;
|
||||
ItemStack filledBucket = new ItemStack(bucket);
|
||||
|
||||
@@ -60,13 +60,14 @@ public class FluidBucketWrapper implements IFluidHandlerItem, ICapabilityProvide
|
||||
return container;
|
||||
}
|
||||
|
||||
public boolean canFillFluidType(FluidStack fluid)
|
||||
public boolean canFillFluidType(FluidStack fluidStack)
|
||||
{
|
||||
if (fluid.getFluid() == FluidRegistry.WATER || fluid.getFluid() == FluidRegistry.LAVA || fluid.getFluid().getName().equals("milk"))
|
||||
Fluid fluid = fluidStack.getFluid();
|
||||
if (fluid == FluidRegistry.WATER || fluid == FluidRegistry.LAVA || fluid.getName().equals("milk"))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return FluidRegistry.isUniversalBucketEnabled() && FluidRegistry.getBucketFluids().contains(fluid.getFluid());
|
||||
return FluidRegistry.isUniversalBucketEnabled() && FluidRegistry.hasBucket(fluid);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
Reference in new issue
Block a user