aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/client
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/client')
-rw-r--r--src/main/java/gregtech/client/GT_GUI_ClientConfig.java63
-rw-r--r--src/main/java/gregtech/client/GT_GuiFactory.java29
-rw-r--r--src/main/java/gregtech/client/GT_SoundLoop.java80
-rw-r--r--src/main/java/gregtech/client/GT_TooltipHandler.java195
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;
+ }
+ }
+}