Skip to content

Commit

Permalink
Mermaid gems are water
Browse files Browse the repository at this point in the history
  • Loading branch information
f-raZ0R committed Oct 10, 2024
1 parent 2900d28 commit b990d7d
Show file tree
Hide file tree
Showing 14 changed files with 103 additions and 426 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
package de.dafuqs.spectrum.blocks.fluid;

import net.fabricmc.fabric.api.transfer.v1.context.ContainerItemContext;
import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant;
import net.fabricmc.fabric.api.transfer.v1.item.ItemVariant;
import net.fabricmc.fabric.api.transfer.v1.storage.StoragePreconditions;
import net.fabricmc.fabric.api.transfer.v1.storage.base.ExtractionOnlyStorage;
import net.fabricmc.fabric.api.transfer.v1.storage.base.SingleSlotStorage;
import net.fabricmc.fabric.api.transfer.v1.transaction.TransactionContext;
import net.minecraft.item.Item;


@SuppressWarnings("UnstableApiUsage")
public class RemainderlessItemFluidStorage implements ExtractionOnlyStorage<FluidVariant>, SingleSlotStorage<FluidVariant> {

private final ContainerItemContext context;
private final Item fullItem;
private final FluidVariant containedFluid;
private final long containedAmount;


public RemainderlessItemFluidStorage(ContainerItemContext context, FluidVariant containedFluid, long containedAmount) {
StoragePreconditions.notBlankNotNegative(containedFluid, containedAmount);

this.context = context;
this.fullItem = context.getItemVariant().getItem();
this.containedFluid = containedFluid;
this.containedAmount = containedAmount;
}

@Override
public long extract(FluidVariant resource, long maxAmount, TransactionContext transaction) {
// If the context's item is not fullItem anymore, can't extract!
if (!context.getItemVariant().isOf(fullItem)) return 0;

// Make sure that the fluid and the amount match.
if (resource.equals(containedFluid) && maxAmount >= containedAmount) {
// If that's ok, just convert one of the full item into the empty item, copying the nbt.


if (context.extract(context.getItemVariant(), 1, transaction) == 1) {
// Conversion ok!
return containedAmount;
}
}
return 0;
}

@Override
public boolean isResourceBlank() {
return getResource().isBlank();
}

@Override
public FluidVariant getResource() {
if (context.getItemVariant().isOf(fullItem)) {
return containedFluid;
} else {
return FluidVariant.blank();
}
}

@Override
public long getAmount() {
if (context.getItemVariant().isOf(fullItem)) {
return containedAmount;
} else {
return 0;
}
}

@Override
public long getCapacity() {
return getAmount();
}

@Override
public String toString() {
return "FullItemFluidStorage[context=%s, fluid=%s, amount=%d]"
.formatted(context, containedFluid, containedAmount);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEnt
return ActionResult.CONSUME;
}

if (ContainerItemContext.forPlayerInteraction(player, hand).find(FluidStorage.ITEM) != null) {
if (!handStack.isIn(SpectrumItemTags.TITRATION_NEVER_FLUID) && ContainerItemContext.forPlayerInteraction(player, hand).find(FluidStorage.ITEM) != null) {
if (FluidStorageUtil.interactWithFluidStorage(barrelEntity.fluidStorage, player, hand)) {
if (barrelEntity.getFluidVariant().isBlank()) {
if (state.get(BARREL_STATE) == TitrationBarrelBlock.BarrelState.FILLED && barrelEntity.isEmpty()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,15 @@
import net.fabricmc.api.*;
import net.fabricmc.fabric.api.blockrenderlayer.v1.*;
import net.fabricmc.fabric.api.client.render.fluid.v1.*;
import net.fabricmc.fabric.api.transfer.v1.fluid.FluidConstants;
import net.fabricmc.fabric.api.transfer.v1.fluid.FluidStorage;
import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant;
import net.minecraft.client.render.*;
import net.minecraft.fluid.*;
import net.minecraft.registry.*;
import net.minecraft.util.*;
import org.joml.*;

@SuppressWarnings("UnstableApiUsage")
public class SpectrumFluids {

// RenderHandler storage for compatibility purposes
Expand Down Expand Up @@ -56,6 +59,8 @@ public static void register() {
registerFluid("mud", MUD, FLOWING_MUD, DyeColor.BROWN);
registerFluid("midnight_solution", MIDNIGHT_SOLUTION, FLOWING_MIDNIGHT_SOLUTION, DyeColor.GRAY);
registerFluid("dragonrot", DRAGONROT, FLOWING_DRAGONROT, DyeColor.GRAY);
FluidStorage.combinedItemApiProvider(SpectrumItems.MERMAIDS_GEM).register(context ->
new RemainderlessItemFluidStorage(context, FluidVariant.of(Fluids.WATER), FluidConstants.BUCKET));
}

private static void registerFluid(String name, Fluid stillFluid, Fluid flowingFluid, DyeColor dyeColor) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ public class SpectrumItemTags {
public static final TagKey<Item> EMISSIVE = of("emissive");
public static final TagKey<Item> PASTEL_NODE_UPGRADES = of("pastel_node_upgrades");
public static final TagKey<Item> TAG_FILTERING_ITEMS = of("tag_filtering_items");
public static final TagKey<Item> TITRATION_NEVER_FLUID = of("titration_never_fluid");

private static TagKey<Item> of(String id) {
return TagKey.of(RegistryKeys.ITEM, SpectrumCommon.locate(id));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,16 +111,5 @@
"item": "spectrum:bristle_mead",
"count": 4
},
"required_advancement": "spectrum:hidden/collect_cookbooks/brewers_handbook",
"fabric:load_conditions": [
{
"condition": "fabric:not",
"value": {
"condition": "fabric:fluid_tags_populated",
"values": [
"c:honey"
]
}
}
]
"required_advancement": "spectrum:hidden/collect_cookbooks/brewers_handbook"
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,5 @@
"result": {
"item": "spectrum:clotted_cream",
"count": 4
},
"fabric:load_conditions": [
{
"condition": "fabric:not",
"value": {
"condition": "fabric:fluid_tags_populated",
"values": [
"c:milk"
]
}
}
]
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -106,16 +106,5 @@
"Color": 12080430
}
},
"required_advancement": "spectrum:triggers/confirmed_drinking_age",
"fabric:load_conditions": [
{
"condition": "fabric:not",
"value": {
"condition": "fabric:fluid_tags_populated",
"values": [
"c:honey"
]
}
}
]
"required_advancement": "spectrum:triggers/confirmed_drinking_age"
}
Loading

0 comments on commit b990d7d

Please sign in to comment.