diff --git a/docs/content/Modpacks/Changes/v8.0.0.md b/docs/content/Modpacks/Changes/v8.0.0.md index 4f6c80298f0..fdeb7e18ec6 100644 --- a/docs/content/Modpacks/Changes/v8.0.0.md +++ b/docs/content/Modpacks/Changes/v8.0.0.md @@ -144,4 +144,5 @@ A large number of machine feature interfaces have been removed, and have had the - `BlastingRecipeBuilder`, `CampfireRecipeBuilder`, `SmeltingRecipeBuilder` and `SmokingRecipeBuilder` have been merged into `SimpleCookingRecipeBuilder` - Example usage: `SimpleCookingRecipeBuilder.campfireCooking("cooking_chicken").input(new ItemStack(Items.CHICKEN)).output(new ItemStacks(Items.COOKED_CHICKEN)).cookingTime(100).experience(100).save(provider);` -- Item behaviors have been moved to `common/item/behavior`, and some items have been moved from `api/item` to `common/item` \ No newline at end of file +- `GTFluidImpl` has been merged into `GTFluid`, use `GTFluid.Flowing` and `GTFluid.Source` instead of `GTFluidImpl.Flowing` and `GTFluidImpl.Source`. +- Item behaviors have been moved to `common/item/behavior`, and some items have been moved from `api/item` to `common/item` diff --git a/src/main/java/com/gregtechceu/gtceu/api/fluids/GTFluid.java b/src/main/java/com/gregtechceu/gtceu/api/fluids/GTFluid.java index 05fbacab74c..d39b11ff44f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/fluids/GTFluid.java +++ b/src/main/java/com/gregtechceu/gtceu/api/fluids/GTFluid.java @@ -17,9 +17,12 @@ import net.minecraft.world.level.block.LiquidBlock; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.material.FlowingFluid; import net.minecraft.world.level.material.Fluid; import net.minecraft.world.level.material.Fluids; +import net.minecraftforge.common.extensions.IForgeFluid; +import net.minecraftforge.fluids.FluidType; import it.unimi.dsi.fastutil.objects.ObjectLinkedOpenHashSet; import lombok.Getter; @@ -32,7 +35,7 @@ @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault -public abstract class GTFluid extends FlowingFluid implements IAttributedFluid { +public abstract class GTFluid extends FlowingFluid implements IAttributedFluid, IForgeFluid { @Getter private final Collection attributes = new ObjectLinkedOpenHashSet<>(); @@ -44,10 +47,11 @@ public abstract class GTFluid extends FlowingFluid implements IAttributedFluid { private final Supplier block; @Getter private final int burnTime; + private final Supplier fluidType; - public GTFluid(@NotNull FluidState state, Supplier stillFluid, + public GTFluid(FluidState state, Supplier stillFluid, Supplier flowingFluid, Supplier block, - Supplier bucket, int burnTime) { + Supplier bucket, int burnTime, Supplier fluidType) { super(); this.state = state; this.stillFluid = stillFluid; @@ -55,10 +59,11 @@ public GTFluid(@NotNull FluidState state, Supplier stillFluid, this.block = block; this.bucketItem = bucket; this.burnTime = burnTime; + this.fluidType = fluidType; } @Override - public void addAttribute(@NotNull FluidAttribute attribute) { + public void addAttribute(FluidAttribute attribute) { attributes.add(attribute); } @@ -127,4 +132,52 @@ public boolean isSame(Fluid fluid) { boolean flowing = this.getFlowing() == fluid; return still || flowing; } + + public FluidType getFluidType() { + return fluidType.get(); + } + + public static class Source extends GTFluid { + + public Source(FluidState state, Supplier stillFluid, + Supplier flowingFluid, Supplier block, + Supplier bucket, int burnTime, Supplier fluidType) { + super(state, stillFluid, flowingFluid, block, bucket, burnTime, fluidType); + } + + @Override + public int getAmount(net.minecraft.world.level.material.FluidState state) { + return 8; + } + + @Override + public boolean isSource(net.minecraft.world.level.material.FluidState state) { + return true; + } + } + + public static class Flowing extends GTFluid { + + public Flowing(FluidState state, Supplier stillFluid, + Supplier flowingFluid, Supplier block, + Supplier bucket, int burnTime, Supplier fluidType) { + super(state, stillFluid, flowingFluid, block, bucket, burnTime, fluidType); + // registerDefaultState(getStateDefinition().any().setValue(LEVEL, 7)); + } + + protected void createFluidStateDefinition(StateDefinition.@NotNull Builder builder) { + super.createFluidStateDefinition(builder); + builder.add(LEVEL); + } + + @Override + public int getAmount(net.minecraft.world.level.material.FluidState state) { + return state.getValue(LEVEL); + } + + @Override + public boolean isSource(net.minecraft.world.level.material.FluidState state) { + return false; + } + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/fluids/forge/GTFluidImpl.java b/src/main/java/com/gregtechceu/gtceu/api/fluids/forge/GTFluidImpl.java deleted file mode 100644 index cbc6e009b09..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/fluids/forge/GTFluidImpl.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.gregtechceu.gtceu.api.fluids.forge; - -import com.gregtechceu.gtceu.api.fluids.FluidState; -import com.gregtechceu.gtceu.api.fluids.GTFluid; - -import net.minecraft.MethodsReturnNonnullByDefault; -import net.minecraft.sounds.SoundEvent; -import net.minecraft.world.item.Item; -import net.minecraft.world.level.block.LiquidBlock; -import net.minecraft.world.level.block.state.StateDefinition; -import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.common.SoundActions; -import net.minecraftforge.common.extensions.IForgeFluid; -import net.minecraftforge.fluids.FluidType; - -import org.jetbrains.annotations.NotNull; - -import java.util.Optional; -import java.util.function.Supplier; - -import javax.annotation.ParametersAreNonnullByDefault; - -@MethodsReturnNonnullByDefault -@ParametersAreNonnullByDefault -public abstract class GTFluidImpl extends GTFluid implements IForgeFluid { - - private final Supplier fluidType; - - public GTFluidImpl(@NotNull FluidState state, Supplier stillFluid, - Supplier flowingFluid, Supplier block, - Supplier bucket, int burnTime, Supplier fluidType) { - super(state, stillFluid, flowingFluid, block, bucket, burnTime); - this.fluidType = fluidType; - } - - @Override - public FluidType getFluidType() { - return fluidType.get(); - } - - @Override - public Optional getPickupSound() { - return fluidType != null && fluidType.get() != null ? - Optional.ofNullable(fluidType.get().getSound(SoundActions.BUCKET_FILL)) : Optional.empty(); - } - - public static class Source extends GTFluidImpl { - - public Source(@NotNull FluidState state, Supplier stillFluid, - Supplier flowingFluid, Supplier block, - Supplier bucket, int burnTime, Supplier fluidType) { - super(state, stillFluid, flowingFluid, block, bucket, burnTime, fluidType); - } - - @Override - public int getAmount(net.minecraft.world.level.material.FluidState state) { - return 8; - } - - @Override - public boolean isSource(net.minecraft.world.level.material.FluidState state) { - return true; - } - } - - public static class Flowing extends GTFluidImpl { - - public Flowing(@NotNull FluidState state, Supplier stillFluid, - Supplier flowingFluid, Supplier block, - Supplier bucket, int burnTime, Supplier fluidType) { - super(state, stillFluid, flowingFluid, block, bucket, burnTime, fluidType); - // registerDefaultState(getStateDefinition().any().setValue(LEVEL, 7)); - } - - protected void createFluidStateDefinition(StateDefinition.@NotNull Builder builder) { - super.createFluidStateDefinition(builder); - builder.add(LEVEL); - } - - @Override - public int getAmount(net.minecraft.world.level.material.FluidState state) { - return state.getValue(LEVEL); - } - - @Override - public boolean isSource(net.minecraft.world.level.material.FluidState state) { - return false; - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/forge/GTFluidBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/forge/GTFluidBuilder.java index e546e8048a2..58a63e5e6ba 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/forge/GTFluidBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/forge/GTFluidBuilder.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.fluids.FluidState; import com.gregtechceu.gtceu.api.fluids.GTFluid; -import com.gregtechceu.gtceu.api.fluids.forge.GTFluidImpl; import com.gregtechceu.gtceu.api.registry.registrate.IGTFluidBuilder; import com.gregtechceu.gtceu.common.item.GTBucketItem; import com.gregtechceu.gtceu.utils.GTUtil; @@ -60,7 +59,7 @@ @Accessors(chain = true, fluent = true) @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault -public class GTFluidBuilder

extends AbstractBuilder> +public class GTFluidBuilder

extends AbstractBuilder> implements IGTFluidBuilder { @Setter @@ -150,7 +149,7 @@ public GTFluidBuilder

renderType(Supplier layer) { } @SuppressWarnings("deprecation") - protected void registerRenderType(GTFluidImpl.Flowing entry) { + protected void registerRenderType(GTFluid.Flowing entry) { DistExecutor.runWhenOn(Dist.CLIENT, () -> () -> { OneTimeEventReceiver.addModListener(getOwner(), FMLClientSetupEvent.class, $ -> { if (this.layer != null) { @@ -188,11 +187,11 @@ public BlockBuilder> block() { return block(LiquidBlock::new); } - public BlockBuilder> block(NonNullBiFunction, BlockBehaviour.Properties, ? extends B> factory) { + public BlockBuilder> block(NonNullBiFunction, BlockBehaviour.Properties, ? extends B> factory) { if (this.defaultBlock == Boolean.FALSE) { throw new IllegalStateException("Only one call to block/noBlock per builder allowed"); } - NonNullSupplier supplier = asSupplier(); + NonNullSupplier supplier = asSupplier(); return getOwner().>block(this, sourceName, p -> factory.apply(supplier, p)) .properties(p -> BlockBehaviour.Properties.copy(Blocks.WATER).noLootTable()) @@ -284,8 +283,8 @@ private FluidType.Properties makeTypeProperties() { } @Override - protected GTFluidImpl.Flowing createEntry() { - return new GTFluidImpl.Flowing(this.state, () -> this.source.get(), () -> this.get().get(), + protected GTFluid.Flowing createEntry() { + return new GTFluid.Flowing(this.state, () -> this.source.get(), () -> this.get().get(), (() -> this.block != null ? this.block.get() : null), (() -> this.bucket != null ? this.bucket.get() : null), this.burnTime, this.fluidType); } @@ -319,7 +318,7 @@ public IGTFluidBuilder onFluidRegister(Consumer fluidConsumer) { @SuppressWarnings({ "unchecked", "rawtypes" }) @Override - public RegistryEntry register() { + public RegistryEntry register() { // Check the fluid has a type. if (this.fluidType != null) { // Register the type. @@ -331,7 +330,7 @@ public RegistryEntry register() { } if (defaultSource == Boolean.TRUE) { - source(() -> new GTFluidImpl.Source(this.state, () -> this.source.get(), () -> this.get().get(), + source(() -> new GTFluid.Source(this.state, () -> this.source.get(), () -> this.get().get(), (() -> this.block != null ? this.block.get() : null), (() -> this.bucket != null ? this.bucket.get() : null), this.burnTime, this.fluidType)); }