Skip to content

Commit

Permalink
[#133] Added "Has flares:" tooltip to every affected item
Browse files Browse the repository at this point in the history
  • Loading branch information
Danielxs01 committed Sep 28, 2024
1 parent ed015dd commit c2107b7
Show file tree
Hide file tree
Showing 8 changed files with 201 additions and 118 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,21 +19,23 @@
import net.landofrails.landofsignals.utils.LandOfSignalsUtils;
import net.landofrails.landofsignals.utils.Static;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import java.util.*;
import java.util.stream.Collectors;

@SuppressWarnings("java:S1192")
public class ItemComplexSignal extends CustomItem {

public ItemComplexSignal(final String modID, final String name) {
super(modID, name);
}
private static final Map<String, List<String>> cacheTooltips = new HashMap<>();

private static final String ITEMIDKEY = "itemId";
private static final String MSG_NOT_UTF8 = "message.landofsignals:non.utf.eight.items";
private static final String MSG_HAS_FLARES = "message.landofsignals:signalpart.hasflares";
private static final String MSG_LOS_TRUE = "message.landofsignals:true";
private static final String MSG_LOS_FALSE = "message.landofsignals:false";

public ItemComplexSignal(final String modID, final String name) {
super(modID, name);
}

@Override
public List<CreativeTab> getCreativeTabs() {
Expand Down Expand Up @@ -126,24 +128,37 @@ public String getCustomName(final ItemStack stack) {
@Override
public List<String> getTooltip(ItemStack itemStack) {
String itemId = itemStack.getTagCompound().getString(ITEMIDKEY);
if(itemId == null){
return new ArrayList<>();
}
if(!cacheTooltips.containsKey(itemId)){
cacheTooltip(itemId);
}
return cacheTooltips.get(itemId);
}

private void cacheTooltip(String itemId) {
List<String> tooltips = new ArrayList<>();
if (itemId != null) {
String delimiter = ":";
if (itemId.split(delimiter).length == 2) {
tooltips.add("Pack: " + itemId.split(delimiter)[0]);
tooltips.add("ID: " + itemId.split(delimiter)[1]);
} else {
tooltips.add("ID: " + itemId);
}
String delimiter = ":";
if (itemId.split(delimiter).length == 2) {
tooltips.add("Pack: " + itemId.split(delimiter)[0]);
tooltips.add("ID: " + itemId.split(delimiter)[1]);
} else {
tooltips.add("ID: " + itemId);
}

boolean isUTF8 = LOSBlocks.BLOCK_COMPLEX_SIGNAL.isUTF8(itemId);
if (!isUTF8) {
tooltips.add("");
tooltips.add(TextUtil.translate(MSG_NOT_UTF8));
}
boolean hasFlares = LOSBlocks.BLOCK_COMPLEX_SIGNAL.getContentpackComplexSignals().get(itemId).getFlares().length > 0;
Object[] hasFlaresRawText = new Object[]{TextUtil.translate(hasFlares ? MSG_LOS_TRUE : MSG_LOS_FALSE)};
// String has to be converted to array by us, build pipeline is not able to do it itself.
tooltips.add(TextUtil.translate(MSG_HAS_FLARES, hasFlaresRawText));

boolean isUTF8 = LOSBlocks.BLOCK_COMPLEX_SIGNAL.isUTF8(itemId);
if (!isUTF8) {
tooltips.add("");
tooltips.add(TextUtil.translate(MSG_NOT_UTF8));
}
return tooltips;

cacheTooltips.put(itemId, tooltips);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,18 @@
import net.landofrails.landofsignals.utils.LandOfSignalsUtils;
import net.landofrails.landofsignals.utils.Static;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import java.util.*;

public class ItemCustomLever extends CustomItem {

private static final Map<String, List<String>> cacheTooltips = new HashMap<>();

private static final String ITEMIDKEY = "itemId";
private static final String MSG_NOT_UTF8 = "message.landofsignals:non.utf.eight.items";
private static final String MSG_WO_ANIMATION = "message.landofsignals:without.animation";
private static final String MSG_HAS_FLARES = "message.landofsignals:signalpart.hasflares";
private static final String MSG_HAS_ANIMATION = "message.landofsignals:customlevers.hasanimation";
private static final String MSG_LOS_TRUE = "message.landofsignals:true";
private static final String MSG_LOS_FALSE = "message.landofsignals:false";

public ItemCustomLever(String modID, String name) {
super(modID, name);
Expand Down Expand Up @@ -89,24 +92,40 @@ public List<ItemStack> getItemVariants(CreativeTab creativeTab) {
@Override
public List<String> getTooltip(ItemStack itemStack) {
String itemId = itemStack.getTagCompound().getString(ITEMIDKEY);
if(itemId == null){
return new ArrayList<>();
}
if(!cacheTooltips.containsKey(itemId)){
cacheTooltip(itemId);
}
return cacheTooltips.get(itemId);
}

private void cacheTooltip(String itemId) {
List<String> tooltips = new ArrayList<>();
tooltips.add(TextUtil.translate(MSG_WO_ANIMATION));
if (itemId != null) {
String delimiter = ":";
if (itemId.split(delimiter).length == 2) {
tooltips.add("Pack: " + itemId.split(delimiter)[0]);
tooltips.add("ID: " + itemId.split(delimiter)[1]);
} else {
tooltips.add("ID: " + itemId);
}
String delimiter = ":";
if (itemId.split(delimiter).length == 2) {
tooltips.add("Pack: " + itemId.split(delimiter)[0]);
tooltips.add("ID: " + itemId.split(delimiter)[1]);
} else {
tooltips.add("ID: " + itemId);
}

boolean isUTF8 = LOSBlocks.BLOCK_CUSTOM_LEVER.isUTF8(itemId);
if (!isUTF8) {
tooltips.add("");
tooltips.add(TextUtil.translate(MSG_NOT_UTF8));
}
Object[] hasAnimation = new Object[]{TextUtil.translate(MSG_LOS_FALSE)};
// String has to be converted to array by us, build pipeline is not able to do it itself.
tooltips.add(TextUtil.translate(MSG_HAS_ANIMATION, hasAnimation));

boolean hasFlares = LOSBlocks.BLOCK_CUSTOM_LEVER.getContentpackLever().get(itemId).getFlares().length > 0;
Object[] hasFlaresRawText = new Object[]{TextUtil.translate(hasFlares ? MSG_LOS_TRUE : MSG_LOS_FALSE)};
// String has to be converted to array by us, build pipeline is not able to do it itself.
tooltips.add(TextUtil.translate(MSG_HAS_FLARES, hasFlaresRawText));

boolean isUTF8 = LOSBlocks.BLOCK_CUSTOM_LEVER.isUTF8(itemId);
if (!isUTF8) {
tooltips.add("");
tooltips.add(TextUtil.translate(MSG_NOT_UTF8));
}
return tooltips;

cacheTooltips.put(itemId, tooltips);
}
}
53 changes: 35 additions & 18 deletions src/main/java/net/landofrails/landofsignals/items/ItemDeco.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,19 +18,23 @@
import net.landofrails.landofsignals.utils.LandOfSignalsUtils;
import net.landofrails.landofsignals.utils.Static;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import java.util.*;

public class ItemDeco extends CustomItem {

private static final Map<String, List<String>> cacheTooltips = new HashMap<>();

private static final String ITEMIDKEY = "itemId";
private static final String MSG_NOT_UTF8 = "message.landofsignals:non.utf.eight.items";
private static final String MSG_HAS_FLARES = "message.landofsignals:signalpart.hasflares";
private static final String MSG_LOS_TRUE = "message.landofsignals:true";
private static final String MSG_LOS_FALSE = "message.landofsignals:false";

public ItemDeco(String modID, String name) {
super(modID, name);
}


@Override
public List<CreativeTab> getCreativeTabs() {
return LOSTabs.getAsList(LOSTabs.ASSETS_TAB);
Expand Down Expand Up @@ -87,23 +91,36 @@ public List<ItemStack> getItemVariants(CreativeTab creativeTab) {
@Override
public List<String> getTooltip(ItemStack itemStack) {
String itemId = itemStack.getTagCompound().getString(ITEMIDKEY);
if(itemId == null){
return new ArrayList<>();
}
if(!cacheTooltips.containsKey(itemId)){
cacheTooltip(itemId);
}
return cacheTooltips.get(itemId);
}

private void cacheTooltip(String itemId) {
List<String> tooltips = new ArrayList<>();
if (itemId != null) {
String delimiter = ":";
if (itemId.split(delimiter).length == 2) {
tooltips.add("Pack: " + itemId.split(delimiter)[0]);
tooltips.add("ID: " + itemId.split(delimiter)[1]);
} else {
tooltips.add("ID: " + itemId);
}
String delimiter = ":";
if (itemId.split(delimiter).length == 2) {
tooltips.add("Pack: " + itemId.split(delimiter)[0]);
tooltips.add("ID: " + itemId.split(delimiter)[1]);
} else {
tooltips.add("ID: " + itemId);
}

boolean isUTF8 = LOSBlocks.BLOCK_DECO.isUTF8(itemId);
if (!isUTF8) {
tooltips.add("");
tooltips.add(TextUtil.translate(MSG_NOT_UTF8));
}
boolean hasFlares = LOSBlocks.BLOCK_DECO.getContentpackDeco().get(itemId).getFlares().length > 0;
Object[] hasFlaresRawText = new Object[]{TextUtil.translate(hasFlares ? MSG_LOS_TRUE : MSG_LOS_FALSE)};
// String has to be converted to array by us, build pipeline is not able to do it itself.
tooltips.add(TextUtil.translate(MSG_HAS_FLARES, hasFlaresRawText));

boolean isUTF8 = LOSBlocks.BLOCK_DECO.isUTF8(itemId);
if (!isUTF8) {
tooltips.add("");
tooltips.add(TextUtil.translate(MSG_NOT_UTF8));
}
return tooltips;

cacheTooltips.put(itemId, tooltips);
}
}
60 changes: 37 additions & 23 deletions src/main/java/net/landofrails/landofsignals/items/ItemSignPart.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,18 @@
import net.landofrails.landofsignals.utils.LandOfSignalsUtils;
import net.landofrails.landofsignals.utils.Static;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import java.util.*;

public class ItemSignPart extends CustomItem {

private static final Map<String, List<String>> cacheTooltips = new HashMap<>();

private static final String ITEMIDKEY = "itemId";
private static final String MSG_LOS_SIGNS_WRITEABLE = "message.landofsignals:signs.writeable";
private static final String MSG_LOS_TRUE = "message.landofsignals:true";
private static final String MSG_LOS_FALSE = "message.landofsignals:false";
private static final String MSG_NOT_UTF8 = "message.landofsignals:non.utf.eight.items";
private static final String MSG_HAS_FLARES = "message.landofsignals:signalpart.hasflares";

public ItemSignPart(String modID, String name) {
super(modID, name);
Expand Down Expand Up @@ -88,31 +88,45 @@ public List<ItemStack> getItemVariants(CreativeTab creativeTab) {
}

@Override
@SuppressWarnings("java:S3878")
public List<String> getTooltip(ItemStack itemStack) {
String itemId = itemStack.getTagCompound().getString(ITEMIDKEY);
if(itemId == null){
return new ArrayList<>();
}
if(!cacheTooltips.containsKey(itemId)){
cacheTooltip(itemId);
}
return cacheTooltips.get(itemId);
}

private void cacheTooltip(String itemId) {
List<String> tooltips = new ArrayList<>();
if (itemId != null) {
String delimiter = ":";
if (itemId.split(delimiter).length == 2) {
tooltips.add("Pack: " + itemId.split(delimiter)[0]);
tooltips.add("ID: " + itemId.split(delimiter)[1]);
} else {
tooltips.add("ID: " + itemId);
}
String delimiter = ":";
if (itemId.split(delimiter).length == 2) {
tooltips.add("Pack: " + itemId.split(delimiter)[0]);
tooltips.add("ID: " + itemId.split(delimiter)[1]);
} else {
tooltips.add("ID: " + itemId);
}

boolean writeable = LOSBlocks.BLOCK_SIGN_PART.isWritable(itemId);
String writeableRawText = TextUtil.translate(writeable ? MSG_LOS_TRUE : MSG_LOS_FALSE);
// String has to be converted by us, build pipeline is not able to do it itself.
tooltips.add(TextUtil.translate(MSG_LOS_SIGNS_WRITEABLE, new Object[]{writeableRawText}));
boolean writeable = LOSBlocks.BLOCK_SIGN_PART.isWritable(itemId);
Object[] writeableRawText = new Object[]{TextUtil.translate(writeable ? MSG_LOS_TRUE : MSG_LOS_FALSE)};
// String has to be converted to array by us, build pipeline is not able to do it itself.
tooltips.add(TextUtil.translate(MSG_LOS_SIGNS_WRITEABLE, writeableRawText));

boolean isUTF8 = LOSBlocks.BLOCK_SIGN_PART.isUTF8(itemId);
if (!isUTF8) {
tooltips.add("");
tooltips.add(TextUtil.translate(MSG_NOT_UTF8));
}

boolean hasFlares = LOSBlocks.BLOCK_SIGN_PART.getContentpackSigns().get(itemId).getFlares().length > 0;
Object[] hasFlaresRawText = new Object[]{TextUtil.translate(hasFlares ? MSG_LOS_TRUE : MSG_LOS_FALSE)};
// String has to be converted to array by us, build pipeline is not able to do it itself.
tooltips.add(TextUtil.translate(MSG_HAS_FLARES, hasFlaresRawText));

boolean isUTF8 = LOSBlocks.BLOCK_SIGN_PART.isUTF8(itemId);
if (!isUTF8) {
tooltips.add("");
tooltips.add(TextUtil.translate(MSG_NOT_UTF8));
}
return tooltips;

cacheTooltips.put(itemId, tooltips);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,18 @@
import cam72cam.mod.world.World;
import net.landofrails.landofsignals.LOSBlocks;
import net.landofrails.landofsignals.LOSTabs;
import net.landofrails.landofsignals.LandOfSignals;
import net.landofrails.landofsignals.blocks.BlockSignalLever;
import net.landofrails.landofsignals.utils.LandOfSignalsUtils;

import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.*;

public class ItemSignalLever extends CustomItem {

private static final String MSG_W_ANIMATION = "message.landofsignals:with.animation";
private static final String MSG_HAS_ANIMATION = "message.landofsignals:customlevers.hasanimation";
private static final String MSG_HAS_FLARES = "message.landofsignals:signalpart.hasflares";
private static final String MSG_LOS_TRUE = "message.landofsignals:true";
private static final String MSG_LOS_FALSE = "message.landofsignals:false";

public ItemSignalLever(final String modID, final String name) {
super(modID, name);
Expand All @@ -45,6 +47,18 @@ public ClickResult onClickBlock(final Player player, final World world, final Ve

@Override
public List<String> getTooltip(ItemStack itemStack) {
return Collections.singletonList(TextUtil.translate(MSG_W_ANIMATION));
List<String> tooltips = new ArrayList<>();
tooltips.add("Pack: " + LandOfSignals.MODID);
tooltips.add("ID: item_signal_lever");

Object[] hasAnimation = new Object[]{TextUtil.translate(MSG_LOS_TRUE)};
// String has to be converted to array by us, build pipeline is not able to do it itself.
tooltips.add(TextUtil.translate(MSG_HAS_ANIMATION, hasAnimation));

Object[] hasFlaresRawText = new Object[]{TextUtil.translate(MSG_LOS_FALSE)};
// String has to be converted to array by us, build pipeline is not able to do it itself.
tooltips.add(TextUtil.translate(MSG_HAS_FLARES, hasFlaresRawText));

return tooltips;
}
}
Loading

0 comments on commit c2107b7

Please sign in to comment.