Fix Watering Can animation and tooltip

This commit is contained in:
thedarkcolour 2026-05-15 13:37:47 -07:00
parent 7e2204b7bb
commit fab7353e78
3 changed files with 33 additions and 29 deletions

View File

@ -40,9 +40,11 @@ import thedarkcolour.exdeorum.client.screen.MechanicalSieveScreen;
import thedarkcolour.exdeorum.client.ter.*;
import thedarkcolour.exdeorum.config.EConfig;
import thedarkcolour.exdeorum.fluid.WitchWaterFluid;
import thedarkcolour.exdeorum.item.WateringCanItem;
import thedarkcolour.exdeorum.recipe.RecipeUtil;
import thedarkcolour.exdeorum.registry.EBlockEntities;
import thedarkcolour.exdeorum.registry.EFluids;
import thedarkcolour.exdeorum.registry.EItems;
import thedarkcolour.exdeorum.registry.EMenus;
public class ClientHandler {
@ -66,7 +68,15 @@ public class ClientHandler {
}
private static void registerClientExtensions(RegisterClientExtensionsEvent event) {
event.registerFluidType(WitchWaterFluid.createClientExtensions(), EFluids.WITCH_WATER_TYPE.get());
event.registerFluidType(new WitchWaterFluid.ClientExtensions(), EFluids.WITCH_WATER_TYPE.get());
event.registerItem(new WateringCanItem.ClientExtensions(),
EItems.WOODEN_WATERING_CAN.get(),
EItems.STONE_WATERING_CAN.get(),
EItems.IRON_WATERING_CAN.get(),
EItems.GOLDEN_WATERING_CAN.get(),
EItems.DIAMOND_WATERING_CAN.get(),
EItems.NETHERITE_WATERING_CAN.get()
);
}
private static void registerFluidModels(RegisterFluidModelsEvent event) {

View File

@ -52,12 +52,10 @@ public class WitchWaterFluid extends FluidType {
);
}
public static IClientFluidTypeExtensions createClientExtensions() {
return new IClientFluidTypeExtensions() {
@Override
public void modifyFogColor(Camera camera, float partialTick, ClientLevel level, int renderDistance, float darkenWorldAmount, Vector4f fluidFogColor) {
fluidFogColor.set(32f / 255f, 12f / 255f, 64f / 255f, fluidFogColor.w);
}
};
public static class ClientExtensions implements IClientFluidTypeExtensions {
@Override
public void modifyFogColor(Camera camera, float partialTick, ClientLevel level, int renderDistance, float darkenWorldAmount, Vector4f fluidFogColor) {
fluidFogColor.set(32f / 255f, 12f / 255f, 64f / 255f, fluidFogColor.w);
}
}
}

View File

@ -39,6 +39,7 @@ import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.item.ItemUseAnimation;
import net.minecraft.world.item.component.TooltipDisplay;
import net.minecraft.world.level.ClipContext;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Blocks;
@ -137,11 +138,12 @@ public class WateringCanItem extends Item {
return ItemUseAnimation.NONE;
}
public void appendHoverText(ItemStack stack, TooltipContext context, List<Component> tooltip, TooltipFlag pIsAdvanced) {
@Override
public void appendHoverText(ItemStack stack, TooltipContext context, TooltipDisplay display, Consumer<Component> tooltip, TooltipFlag tooltipFlag) {
var fluidHandler = getFluidHandler(stack);
if (fluidHandler != null) {
// use the block name which is guaranteed to have a vanilla translation
tooltip.add(Component.translatable("block.minecraft.water").append(Component.translatable(TranslationKeys.FRACTION_DISPLAY, fluidHandler.getFluidInTank(0).getAmount(), this.capacity)).withStyle(ChatFormatting.GRAY));
tooltip.accept(Component.translatable("block.minecraft.water").append(Component.translatable(TranslationKeys.FRACTION_DISPLAY, fluidHandler.getFluidInTank(0).getAmount(), this.capacity)).withStyle(ChatFormatting.GRAY));
}
}
@ -307,8 +309,18 @@ public class WateringCanItem extends Item {
}
}
public void initializeClient(Consumer<IClientItemExtensions> consumer) {
consumer.accept(ClientExtensions.INSTANCE);
private static IFluidHandler getFluidHandler(ItemAccess itemAccess) {
var handler = itemAccess.getCapability(Capabilities.Fluid.ITEM);
return handler == null ? null : IFluidHandler.of(handler);
}
private static IFluidHandler getFluidHandler(ItemStack stack) {
if (stack.isEmpty()) {
return null;
}
var itemAccess = ItemAccess.forStack(stack);
return getFluidHandler(itemAccess);
}
public static class FluidHandler extends FluidHandlerItemStack {
@ -351,9 +363,7 @@ public class WateringCanItem extends Item {
}
}
private enum ClientExtensions implements IClientItemExtensions {
INSTANCE;
public static class ClientExtensions implements IClientItemExtensions {
@Override
public boolean applyForgeHandTransform(PoseStack poseStack, LocalPlayer player, HumanoidArm arm, ItemStack itemInHand, float partialTick, float equipProcess, float swingProcess) {
if (player.isUsingItem()) {
@ -388,18 +398,4 @@ public class WateringCanItem extends Item {
return 1 - opposite * opposite * opposite;
}
}
private static IFluidHandler getFluidHandler(ItemAccess itemAccess) {
var handler = itemAccess.getCapability(Capabilities.Fluid.ITEM);
return handler == null ? null : IFluidHandler.of(handler);
}
private static IFluidHandler getFluidHandler(ItemStack stack) {
if (stack.isEmpty()) {
return null;
}
var itemAccess = ItemAccess.forStack(stack);
return getFluidHandler(itemAccess);
}
}