diff options
Diffstat (limited to 'src/main/java/gregtech/client')
-rw-r--r-- | src/main/java/gregtech/client/GT_GUI_ClientConfig.java | 63 | ||||
-rw-r--r-- | src/main/java/gregtech/client/GT_GuiFactory.java | 29 | ||||
-rw-r--r-- | src/main/java/gregtech/client/GT_SoundLoop.java | 80 | ||||
-rw-r--r-- | src/main/java/gregtech/client/GT_TooltipHandler.java | 195 |
4 files changed, 367 insertions, 0 deletions
diff --git a/src/main/java/gregtech/client/GT_GUI_ClientConfig.java b/src/main/java/gregtech/client/GT_GUI_ClientConfig.java new file mode 100644 index 0000000000..1e9841369b --- /dev/null +++ b/src/main/java/gregtech/client/GT_GUI_ClientConfig.java @@ -0,0 +1,63 @@ +package gregtech.client; + +import static gregtech.api.enums.Mods.GregTech; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import net.minecraft.client.gui.GuiScreen; +import net.minecraftforge.common.config.ConfigCategory; +import net.minecraftforge.common.config.ConfigElement; +import net.minecraftforge.common.config.Configuration; +import net.minecraftforge.common.config.Property; + +import cpw.mods.fml.client.config.GuiConfig; +import cpw.mods.fml.client.config.IConfigElement; +import gregtech.api.GregTech_API; + +public class GT_GUI_ClientConfig extends GuiConfig { + + public GT_GUI_ClientConfig(GuiScreen parentScreen) { + super( + parentScreen, + getConfigElements(), + GregTech.ID, + "client", + false, + false, + getAbridgedConfigPath(GregTech_API.sClientDataFile.mConfig.toString())); + } + + @SuppressWarnings("rawtypes") + private static List<IConfigElement> getConfigElements() { + final Configuration config = GregTech_API.sClientDataFile.mConfig; + setLanguageKeys(config); + return config.getCategoryNames() + .stream() + .filter(name -> name.indexOf('.') == -1) + .map(name -> new ConfigElement(config.getCategory(name))) + .collect(Collectors.toList()); + } + + private static void setLanguageKeys(Configuration config) { + for (String categoryName : config.getCategoryNames()) { + ConfigCategory category = config.getCategory(categoryName); + category.setLanguageKey("GT5U.config." + categoryName); + for (Map.Entry<String, Property> entry : category.entrySet()) { + // drop the default value in name + String name = entry.getKey(); + int defaultStart = name.lastIndexOf('_'); + String realName = defaultStart >= 0 ? name.substring(0, defaultStart) : name; + if (categoryName.equals("nei.recipe_categories")) { + // reuse existing translation for RecipeCategory + entry.getValue() + .setLanguageKey(name); + } else { + entry.getValue() + .setLanguageKey(String.format("%s.%s", category.getLanguagekey(), realName)); + } + } + } + } +} diff --git a/src/main/java/gregtech/client/GT_GuiFactory.java b/src/main/java/gregtech/client/GT_GuiFactory.java new file mode 100644 index 0000000000..3c8e5cd52c --- /dev/null +++ b/src/main/java/gregtech/client/GT_GuiFactory.java @@ -0,0 +1,29 @@ +package gregtech.client; + +import java.util.Set; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; + +import cpw.mods.fml.client.IModGuiFactory; + +public class GT_GuiFactory implements IModGuiFactory { + + @Override + public void initialize(Minecraft minecraftInstance) {} + + @Override + public Class<? extends GuiScreen> mainConfigGuiClass() { + return GT_GUI_ClientConfig.class; + } + + @Override + public Set<RuntimeOptionCategoryElement> runtimeGuiCategories() { + return null; + } + + @Override + public RuntimeOptionGuiHandler getHandlerFor(RuntimeOptionCategoryElement element) { + return null; + } +} diff --git a/src/main/java/gregtech/client/GT_SoundLoop.java b/src/main/java/gregtech/client/GT_SoundLoop.java new file mode 100644 index 0000000000..905f2c20d3 --- /dev/null +++ b/src/main/java/gregtech/client/GT_SoundLoop.java @@ -0,0 +1,80 @@ +package gregtech.client; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.MovingSound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.multitileentity.machine.MultiTileBasicMachine; + +@SideOnly(Side.CLIENT) +public class GT_SoundLoop extends MovingSound { + + private static final float VOLUME_RAMP = 0.0625f; + private final boolean whileActive; + private final boolean whileInactive; + private final int worldID; + private boolean fadeMe = false; + + public GT_SoundLoop(ResourceLocation p_i45104_1_, IGregTechTileEntity base, boolean stopWhenActive, + boolean stopWhenInactive) { + super(p_i45104_1_); + this.whileActive = stopWhenActive; + this.whileInactive = stopWhenInactive; + xPosF = base.getXCoord(); + yPosF = base.getYCoord(); + zPosF = base.getZCoord(); + worldID = base.getWorld().provider.dimensionId; + repeat = true; + volume = VOLUME_RAMP; + } + + public GT_SoundLoop(ResourceLocation sound, MultiTileBasicMachine base, boolean stopWhenActive, + boolean stopWhenInactive) { + super(sound); + this.whileActive = stopWhenActive; + this.whileInactive = stopWhenInactive; + xPosF = base.getXCoord(); + yPosF = base.getYCoord(); + zPosF = base.getZCoord(); + worldID = base.getWorld().provider.dimensionId; + repeat = true; + volume = VOLUME_RAMP; + } + + @Override + public void update() { + if (donePlaying) { + return; + } + if (fadeMe) { + volume -= VOLUME_RAMP; + if (volume <= 0) { + volume = 0; + donePlaying = true; + } + } else if (volume < 1) { + volume += VOLUME_RAMP; + } + World world = Minecraft.getMinecraft().thePlayer.worldObj; + donePlaying = world.provider.dimensionId != worldID + || !world.checkChunksExist((int) xPosF, (int) yPosF, (int) zPosF, (int) xPosF, (int) yPosF, (int) zPosF); + if (donePlaying) return; + TileEntity tile = world.getTileEntity((int) xPosF, (int) yPosF, (int) zPosF); + if ((tile instanceof IGregTechTileEntity)) { + fadeMe |= ((IGregTechTileEntity) tile).isActive() ? whileActive : whileInactive; + return; + } + + if ((tile instanceof MultiTileBasicMachine)) { + fadeMe |= ((MultiTileBasicMachine) tile).isActive() ? whileActive : whileInactive; + return; + } + + donePlaying = true; + } +} diff --git a/src/main/java/gregtech/client/GT_TooltipHandler.java b/src/main/java/gregtech/client/GT_TooltipHandler.java new file mode 100644 index 0000000000..c527729abd --- /dev/null +++ b/src/main/java/gregtech/client/GT_TooltipHandler.java @@ -0,0 +1,195 @@ +package gregtech.client; + +import static com.gtnewhorizon.gtnhlib.util.AnimatedTooltipHandler.AQUA; +import static com.gtnewhorizon.gtnhlib.util.AnimatedTooltipHandler.BLUE; +import static com.gtnewhorizon.gtnhlib.util.AnimatedTooltipHandler.BOLD; +import static com.gtnewhorizon.gtnhlib.util.AnimatedTooltipHandler.DARK_BLUE; +import static com.gtnewhorizon.gtnhlib.util.AnimatedTooltipHandler.DARK_GRAY; +import static com.gtnewhorizon.gtnhlib.util.AnimatedTooltipHandler.DARK_GREEN; +import static com.gtnewhorizon.gtnhlib.util.AnimatedTooltipHandler.DARK_PURPLE; +import static com.gtnewhorizon.gtnhlib.util.AnimatedTooltipHandler.DARK_RED; +import static com.gtnewhorizon.gtnhlib.util.AnimatedTooltipHandler.GOLD; +import static com.gtnewhorizon.gtnhlib.util.AnimatedTooltipHandler.GRAY; +import static com.gtnewhorizon.gtnhlib.util.AnimatedTooltipHandler.GREEN; +import static com.gtnewhorizon.gtnhlib.util.AnimatedTooltipHandler.LIGHT_PURPLE; +import static com.gtnewhorizon.gtnhlib.util.AnimatedTooltipHandler.OBFUSCATED; +import static com.gtnewhorizon.gtnhlib.util.AnimatedTooltipHandler.RED; +import static com.gtnewhorizon.gtnhlib.util.AnimatedTooltipHandler.UNDERLINE; +import static com.gtnewhorizon.gtnhlib.util.AnimatedTooltipHandler.WHITE; +import static com.gtnewhorizon.gtnhlib.util.AnimatedTooltipHandler.YELLOW; +import static com.gtnewhorizon.gtnhlib.util.AnimatedTooltipHandler.addItemTooltip; +import static com.gtnewhorizon.gtnhlib.util.AnimatedTooltipHandler.animatedText; +import static com.gtnewhorizon.gtnhlib.util.AnimatedTooltipHandler.chain; +import static com.gtnewhorizon.gtnhlib.util.AnimatedTooltipHandler.text; + +import java.util.function.Supplier; + +import net.minecraft.item.ItemStack; + +public class GT_TooltipHandler { + + public static void registerTieredTooltip(ItemStack item, Tier tier) { + addItemTooltip(item, tier.tooltip); + } + + public enum Tier { + + ULV(text(WHITE + "ULV-Tier")), + LV(text(GRAY + "LV-Tier")), + MV(text(GOLD + "MV-Tier")), + HV(text(YELLOW + "HV-Tier")), + EV(text(DARK_GRAY + "EV-Tier")), + IV(text(GREEN + "IV-Tier")), + LuV(text(LIGHT_PURPLE + "LuV-Tier")), + ZPM(text(AQUA + "ZPM-Tier")), + UV(text(DARK_GREEN + "UV-Tier")), + UHV(text(DARK_RED + "UHV-Tier")), + UEV(text(DARK_PURPLE + "UEV-Tier")), + UIV(text(DARK_BLUE + BOLD + "UIV-Tier")), + UMV(text(RED + BOLD + UNDERLINE + "UMV-Tier")), + UXV(animatedText("UXV-Tier", 1, 100, DARK_PURPLE + BOLD + UNDERLINE, DARK_RED + UNDERLINE + BOLD)), + MAX(chain( + animatedText( + "X", + 1, + 100, + LIGHT_PURPLE + BOLD + OBFUSCATED + UNDERLINE, + RED + BOLD + OBFUSCATED + UNDERLINE, + GOLD + OBFUSCATED + BOLD + UNDERLINE, + YELLOW + OBFUSCATED + BOLD + UNDERLINE, + GREEN + OBFUSCATED + BOLD + UNDERLINE, + AQUA + OBFUSCATED + BOLD + UNDERLINE, + BLUE + OBFUSCATED + BOLD + UNDERLINE), + animatedText( + "MAX-Tier", + 1, + 100, + RED + BOLD + UNDERLINE, + GOLD + BOLD + UNDERLINE, + YELLOW + BOLD + UNDERLINE, + GREEN + BOLD + UNDERLINE, + AQUA + BOLD + UNDERLINE, + BLUE + BOLD + UNDERLINE, + LIGHT_PURPLE + BOLD + UNDERLINE), + animatedText( + "X", + 1, + 100, + GOLD + OBFUSCATED + BOLD + UNDERLINE, + YELLOW + OBFUSCATED + BOLD + UNDERLINE, + GREEN + OBFUSCATED + BOLD + UNDERLINE, + AQUA + OBFUSCATED + BOLD + UNDERLINE, + BLUE + OBFUSCATED + BOLD + UNDERLINE, + LIGHT_PURPLE + OBFUSCATED + BOLD + UNDERLINE, + RED + OBFUSCATED + BOLD + UNDERLINE))), + ERV(chain( + animatedText( + "E", + 1, + 100, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_GRAY + OBFUSCATED + BOLD + UNDERLINE), + animatedText( + "R", + 1, + 100, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_GRAY + OBFUSCATED + BOLD + UNDERLINE), + animatedText( + "R", + 1, + 200, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_GRAY + OBFUSCATED + BOLD + UNDERLINE), + animatedText( + "O", + 1, + 150, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_GRAY + OBFUSCATED + BOLD + UNDERLINE), + animatedText( + "R", + 1, + 150, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_GRAY + OBFUSCATED + BOLD + UNDERLINE), + animatedText( + "-", + 1, + 150, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_GRAY + OBFUSCATED + BOLD + UNDERLINE), + animatedText( + "T", + 1, + 200, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_GRAY + OBFUSCATED + BOLD + UNDERLINE), + animatedText( + "i", + 1, + 100, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_GRAY + OBFUSCATED + BOLD + UNDERLINE), + animatedText( + "e", + 1, + 150, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_GRAY + OBFUSCATED + BOLD + UNDERLINE), + animatedText( + "r", + 1, + 100, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_RED + BOLD + UNDERLINE, + DARK_GRAY + OBFUSCATED + BOLD + UNDERLINE))); + + private final Supplier<String> tooltip; + + Tier(Supplier<String> tooltip) { + this.tooltip = tooltip; + } + } +} |