Skip to content

Commit

Permalink
Clean up some stuff and change around the drinks tab
Browse files Browse the repository at this point in the history
  • Loading branch information
Sollace committed Dec 8, 2024
1 parent 035e3b4 commit d83b66f
Show file tree
Hide file tree
Showing 22 changed files with 189 additions and 82 deletions.
1 change: 1 addition & 0 deletions src/main/java/ivorius/psychedelicraft/PSTags.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ interface Items {
TagKey<Item> DRUG_RECEPTICALS = of("receptical/drugs");
TagKey<Item> SUITABLE_HOT_DRINK_RECEPTICALS = of("receptical/suitable_for_hot_drinks");
TagKey<Item> SUITABLE_ALCOHOLIC_DRINK_RECEPTICALS = of("receptical/suitable_for_alcoholic_drinks");
TagKey<Item> SUITABLE_SHOT_GLASS_RECEPTICALTS = of("receptical/suitable_for_shots");
TagKey<Item> CAN_GO_INTO_PAPER_BAG = of("can_go_into_paper_bag");
TagKey<Item> DRUG_CROP_SEEDS = of("drug_crop_seeds");

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ protected ItemActionResult onInteractWithItem(ItemStack stack, BlockState state,

if (ItemFluids.of(stack).amount() < capacity) {
Resovoir tank = blockEntity.getTankOnSide(Direction.DOWN);
if (tank.getContents().amount() > 0 && tank.getContents().fluid().isSuitableContainer(stack)) {
if (tank.getContents().amount() > 0 && stack.isIn(tank.getContents().fluid().getPreferredContainerTag())) {
if (!world.isClient) {

ItemFluids.Transaction t = ItemFluids.Transaction.begin(stack.copyWithCount(1));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ protected void onStateReplaced(BlockState state, World world, BlockPos pos, Bloc
@Override
public boolean tryFillWithFluid(WorldAccess world, BlockPos pos, BlockState state, FluidState fluidState) {
return world.getBlockEntity(getBlockEntityPosition(world, pos), getBlockEntityType()).filter(be -> {
SimpleFluid f = SimpleFluid.forVanilla(fluidState.getFluid());
SimpleFluid f = SimpleFluid.of(fluidState.getFluid());

if (be.getPrimaryTank().deposit(f.getStack(fluidState, FluidVolumes.BUCKET)) > 0) {
be.markForUpdate();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import net.fabricmc.fabric.api.client.rendering.v1.ColorProviderRegistry;
import net.minecraft.client.item.ModelPredicateProviderRegistry;
import net.minecraft.component.type.DyedColorComponent;
import net.minecraft.fluid.Fluids;
import net.minecraft.registry.tag.FluidTags;
import net.minecraft.util.Colors;

/**
Expand Down Expand Up @@ -44,7 +44,7 @@ static void bootstrap() {
}
return ItemFluids.of(stack).isEmpty() ? 0 : 1;
});
ModelPredicateProviderRegistry.register(Psychedelicraft.id("filled_with_lava"), (stack, world, entity, seed) -> ItemFluids.of(stack).isOf(Fluids.LAVA) ? 1 : 0);
ModelPredicateProviderRegistry.register(Psychedelicraft.id("filled_with_lava"), (stack, world, entity, seed) -> ItemFluids.of(stack).isIn(FluidTags.LAVA) ? 1 : 0);
ColorProviderRegistry.ITEM.register((stack, layer) -> layer > 0 ? -1 : DyedColorComponent.getColor(stack, Colors.RED), PSItems.HARMONIUM);
ColorProviderRegistry.ITEM.register((stack, layer) -> {
if (layer == 0) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,9 @@ static void bootstrap() {
BuiltinItemRendererRegistry.INSTANCE.register(PSItems.RIFT_JAR, RiftJarBlockEntityRenderer::renderStack);

SimpleFluid.REGISTRY.forEach(fluid -> {
if (fluid.isEmpty()) {
return;
}
BlockRenderLayerMap.INSTANCE.putFluids(RenderLayer.getTranslucent(),
fluid.getPhysical().getStandingFluid(),
fluid.getPhysical().getFlowingFluid()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,10 @@ protected void configure(WrapperLookup wrapperLookup) {

getOrCreateTagBuilder(PSTags.Items.SUITABLE_ALCOHOLIC_DRINK_RECEPTICALS).add(
PSItems.SHOT_GLASS, PSItems.GLASS_CHALICE, PSItems.WOODEN_MUG,
PSItems.FILLED_BUCKET, PSItems.FILLED_BOWL, PSItems.FILLED_GLASS_BOTTLE
PSItems.FILLED_BOWL, Items.BOWL
).addTag(PSTags.Items.BOTTLE_RACK_INSERTABLE);
getOrCreateTagBuilder(PSTags.Items.SUITABLE_HOT_DRINK_RECEPTICALS).add(PSItems.STONE_CUP);
getOrCreateTagBuilder(PSTags.Items.DRUG_RECEPTICALS).add(PSItems.SYRINGE);
getOrCreateTagBuilder(PSTags.Items.DRUG_RECEPTICALS).add(PSItems.SYRINGE, PSItems.FILLED_GLASS_BOTTLE, Items.GLASS_BOTTLE);
getOrCreateTagBuilder(PSTags.Items.DRINK_RECEPTICALS)
.addTag(PSTags.Items.SUITABLE_ALCOHOLIC_DRINK_RECEPTICALS)
.addTag(PSTags.Items.SUITABLE_HOT_DRINK_RECEPTICALS);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@
import net.minecraft.block.Blocks;
import net.minecraft.entity.*;
import net.minecraft.entity.projectile.thrown.ThrownItemEntity;
import net.minecraft.fluid.Fluids;
import net.minecraft.item.*;
import net.minecraft.particle.ParticleTypes;
import net.minecraft.registry.tag.BlockTags;
import net.minecraft.registry.tag.FluidTags;
import net.minecraft.sound.SoundEvents;
import net.minecraft.util.hit.*;
import net.minecraft.util.math.BlockPos;
Expand Down Expand Up @@ -157,7 +157,7 @@ public boolean canDestroyBlock(Explosion explosion, BlockView world, BlockPos po
playSound(SoundEvents.BLOCK_FIRE_EXTINGUISH, 1, 1);
}

if (stack.isOf(Fluids.LAVA)) {
if (stack.isIn(FluidTags.LAVA)) {
BlockPos pos = BlockPos.ofFloored(hitResult.getPos());
BlockState replacedState = getWorld().getBlockState(pos);
if (replacedState.getHardness(getWorld(), pos) >= 0) {
Expand Down
8 changes: 7 additions & 1 deletion src/main/java/ivorius/psychedelicraft/fluid/AgaveFluid.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package ivorius.psychedelicraft.fluid;

import ivorius.psychedelicraft.PSTags;
import ivorius.psychedelicraft.item.PSItems;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.registry.tag.TagKey;
import net.minecraft.util.Identifier;

/**
Expand All @@ -16,5 +19,8 @@ public AgaveFluid(Identifier id, Settings settings) {
public boolean isSuitableContainer(ItemStack container) {
return container.isOf(PSItems.SHOT_GLASS);
}

@Override
public TagKey<Item> getPreferredContainerTag() {
return PSTags.Items.SUITABLE_SHOT_GLASS_RECEPTICALTS;
}
}
11 changes: 8 additions & 3 deletions src/main/java/ivorius/psychedelicraft/fluid/AlcoholicFluid.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,15 @@
import ivorius.psychedelicraft.fluid.alcohol.Maturity;
import ivorius.psychedelicraft.fluid.container.Resovoir;
import ivorius.psychedelicraft.fluid.physical.FluidStateManager;
import ivorius.psychedelicraft.item.PSItems;
import ivorius.psychedelicraft.item.component.ItemFluids;
import ivorius.psychedelicraft.util.MathUtils;
import net.minecraft.component.type.AttributeModifiersComponent;
import net.minecraft.fluid.FluidState;
import net.minecraft.fluid.Fluids;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.item.tooltip.TooltipType;
import net.minecraft.registry.tag.TagKey;
import net.minecraft.state.property.IntProperty;
Expand Down Expand Up @@ -160,7 +162,7 @@ public void process(Context context, ProcessType type, ByProductConsumer output)
tank.drain(consumed * 2);
output.accept(
alcohol == 0
? SimpleFluid.forVanilla(Fluids.WATER).getDefaultStack(consumed)
? SimpleFluid.of(Fluids.WATER).getDefaultStack(consumed)
: PSFluids.ETHANOL.getDefaultStack((int)Math.ceil(alcohol) * consumed)
);
break;
Expand Down Expand Up @@ -209,7 +211,7 @@ private List<Transition> getAlcoTransitions(AlcoholicFluidState state) {
private List<Transition> getChemTransitions(AlcoholicFluidState state) {
return List.of(new Transition(ProcessType.PURIFY, 0, 1, state::apply, to -> {
double alcohol = getAlcoholContent(state.apply(to)) / 10;
return alcohol == 0 ? SimpleFluid.forVanilla(Fluids.WATER).getDefaultStack(1) : PSFluids.ETHANOL.getDefaultStack((int)Math.ceil(alcohol));
return alcohol == 0 ? SimpleFluid.of(Fluids.WATER).getDefaultStack(1) : PSFluids.ETHANOL.getDefaultStack((int)Math.ceil(alcohol));
}));
}

Expand Down Expand Up @@ -300,7 +302,10 @@ public Stream<ItemFluids> getDefaultStacks(int capacity) {

@Override
public boolean isSuitableContainer(ItemStack container) {
return container.isIn(getPreferredContainerTag());
return (container.isIn(getPreferredContainerTag())
|| container.isOf(Items.BUCKET)
|| container.isOf(PSItems.FILLED_BUCKET))
&& !(container.isOf(PSItems.SHOT_GLASS));
}

@Override
Expand Down
15 changes: 15 additions & 0 deletions src/main/java/ivorius/psychedelicraft/fluid/CocaTeaFluid.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,17 @@

package ivorius.psychedelicraft.fluid;

import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.registry.tag.TagKey;
import net.minecraft.util.*;

import java.util.List;
import java.util.stream.Stream;

import ivorius.psychedelicraft.PSTags;
import ivorius.psychedelicraft.fluid.container.Resovoir;
import ivorius.psychedelicraft.item.PSItems;

/**
* Created by lukas on 22.10.14.
Expand Down Expand Up @@ -40,4 +45,14 @@ public Stream<Process> getProcesses() {
new Transition(ProcessType.PURIFY, 0, 1, from -> from.ofAmount(2), to -> PSFluids.COCAINE.getDefaultStack(1))
)));
}

@Override
public boolean isSuitableContainer(ItemStack container) {
return container.isOf(PSItems.STONE_CUP) || container.isIn(PSTags.Items.BOTTLE_RACK_INSERTABLE);
}

@Override
public TagKey<Item> getPreferredContainerTag() {
return PSTags.Items.SUITABLE_HOT_DRINK_RECEPTICALS;
}
}
11 changes: 10 additions & 1 deletion src/main/java/ivorius/psychedelicraft/fluid/DrugFluid.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,16 @@
import net.minecraft.component.type.FoodComponent;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.registry.tag.TagKey;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;

import org.jetbrains.annotations.Nullable;

import ivorius.psychedelicraft.PSTags;
import ivorius.psychedelicraft.entity.drug.*;
import ivorius.psychedelicraft.entity.drug.influence.DrugInfluence;
import ivorius.psychedelicraft.fluid.alcohol.FluidAppearance;
Expand Down Expand Up @@ -134,7 +138,12 @@ private float getAlcohol(ItemFluids fluidStack) {

@Override
public boolean isSuitableContainer(ItemStack container) {
return !container.isOf(PSItems.WOODEN_MUG) && !settings.injectable;
return container.isOf(PSItems.SYRINGE) || container.isOf(Items.GLASS_BOTTLE) || container.isOf(PSItems.FILLED_GLASS_BOTTLE);
}

@Override
public TagKey<Item> getPreferredContainerTag() {
return PSTags.Items.DRUG_RECEPTICALS;
}

public static class Settings extends SimpleFluid.Settings {
Expand Down
15 changes: 15 additions & 0 deletions src/main/java/ivorius/psychedelicraft/fluid/EthanolFluid.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
package ivorius.psychedelicraft.fluid;

import ivorius.psychedelicraft.PSDamageTypes;
import ivorius.psychedelicraft.PSTags;
import ivorius.psychedelicraft.entity.drug.DrugProperties;
import ivorius.psychedelicraft.entity.drug.DrugType;
import ivorius.psychedelicraft.item.component.ItemFluids;
import net.fabricmc.fabric.api.tag.convention.v2.ConventionalItemTags;
import net.minecraft.fluid.FluidState;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.registry.tag.TagKey;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Box;
Expand Down Expand Up @@ -44,4 +49,14 @@ public void onRandomTick(World world, BlockPos pos, FluidState state, Random ran
}
});
}

@Override
public boolean isSuitableContainer(ItemStack container) {
return container.isIn(ConventionalItemTags.BUCKETS);
}

@Override
public TagKey<Item> getPreferredContainerTag() {
return PSTags.Items.DRINK_RECEPTICALS;
}
}
4 changes: 3 additions & 1 deletion src/main/java/ivorius/psychedelicraft/fluid/PSFluids.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,15 @@
import ivorius.psychedelicraft.fluid.alcohol.DrinkTypes;
import ivorius.psychedelicraft.fluid.alcohol.DrinkType.Variation;
import ivorius.psychedelicraft.fluid.alcohol.StatePredicate;
import net.minecraft.fluid.Fluids;
import net.minecraft.registry.Registry;
import net.minecraft.util.Colors;

/**
* Created by lukas on 22.10.14.
*/
public interface PSFluids {
SimpleFluid EMPTY = new SimpleFluid(SimpleFluid.EMPTY_KEY, new Settings().color(Colors.WHITE), true);
SimpleFluid EMPTY = Registry.register(SimpleFluid.REGISTRY, SimpleFluid.EMPTY_KEY, new VanillaFluid(SimpleFluid.EMPTY_KEY, Fluids.EMPTY, true));
AlcoholicFluid WHEAT_HOP = new AlcoholicFluid(Psychedelicraft.id("wheat_hop"), new AlcoholicFluid.Settings()
.alcohol(0.25, 1.7, 0.1)
.tickRate(() -> Psychedelicraft.getConfig().balancing.fluidAttributes.alcInfoWheatHop())
Expand Down
Loading

0 comments on commit d83b66f

Please sign in to comment.