Fixes NPE on empty tooltips (#4546)

This commit is contained in:
yueh
2020-08-03 20:57:10 +02:00
committed by GitHub
parent 62bbc32763
commit 8f0e408772
4 changed files with 20 additions and 7 deletions
@@ -191,10 +191,14 @@ public abstract class AEBaseScreen<T extends AEBaseContainer> extends ContainerS
} }
protected void drawTooltip(MatrixStack matrices, int x, int y, ITextComponent message) { protected void drawTooltip(MatrixStack matrices, int x, int y, ITextComponent message) {
String[] lines = message.getString().split("\n"); // FIXME FABRIC String tooltipText = message.getString();
List<ITextComponent> textLines = Arrays.stream(lines).map(StringTextComponent::new)
.collect(Collectors.toList()); if (!tooltipText.isEmpty()) {
this.drawTooltip(matrices, x, y, textLines); String[] lines = tooltipText.split("\n"); // FIXME FABRIC
List<ITextComponent> textLines = Arrays.stream(lines).map(StringTextComponent::new)
.collect(Collectors.toList());
this.drawTooltip(matrices, x, y, textLines);
}
} }
// FIXME FABRIC: move out to json (?) // FIXME FABRIC: move out to json (?)
@@ -8,6 +8,7 @@ import net.minecraft.client.gui.AbstractGui;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
public abstract class CustomSlotWidget extends AbstractGui implements ITooltip { public abstract class CustomSlotWidget extends AbstractGui implements ITooltip {
private final int x; private final int x;
@@ -39,7 +40,7 @@ public abstract class CustomSlotWidget extends AbstractGui implements ITooltip {
@Override @Override
public ITextComponent getMessage() { public ITextComponent getMessage() {
return null; return StringTextComponent.EMPTY;
} }
@Override @Override
@@ -18,7 +18,10 @@
package appeng.client.gui.widgets; package appeng.client.gui.widgets;
import javax.annotation.Nonnull;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
/** /**
* AEBaseGui controlled Tooltip Interface. * AEBaseGui controlled Tooltip Interface.
@@ -26,10 +29,13 @@ import net.minecraft.util.text.ITextComponent;
public interface ITooltip { public interface ITooltip {
/** /**
* returns the tooltip message. * Returns the tooltip message.
*
* Should use {@link StringTextComponent#EMPTY} for no tooltip
* *
* @return tooltip message * @return tooltip message
*/ */
@Nonnull
ITextComponent getMessage(); ITextComponent getMessage();
/** /**
@@ -1,5 +1,6 @@
package appeng.fluids.client.gui.widgets; package appeng.fluids.client.gui.widgets;
import java.awt.TextComponent;
import java.util.Collections; import java.util.Collections;
import com.mojang.blaze3d.matrix.MatrixStack; import com.mojang.blaze3d.matrix.MatrixStack;
@@ -12,6 +13,7 @@ import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.fluid.Fluid; import net.minecraft.fluid.Fluid;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
import net.minecraft.util.text.TranslationTextComponent; import net.minecraft.util.text.TranslationTextComponent;
import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.fluids.FluidAttributes; import net.minecraftforge.fluids.FluidAttributes;
@@ -84,7 +86,7 @@ public class FluidSlotWidget extends CustomSlotWidget {
if (fluid != null) { if (fluid != null) {
return new TranslationTextComponent(fluid.getFluidStack().getTranslationKey()); return new TranslationTextComponent(fluid.getFluidStack().getTranslationKey());
} }
return null; return StringTextComponent.EMPTY;
} }
@Override @Override