Add customization of text color through resourcepack meta
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
# Refined Storage Changelog
|
||||
|
||||
### 1.7.2
|
||||
- Resource packs can now define the font colors that Refined Storage GUIs need to use (raoulvdberge)
|
||||
|
||||
### 1.7.1
|
||||
- Exact mode for processing patterns no longer exist, you can now define per-slot which item/fluid tags are allowed to be used by autocrafting, by using CTRL + click on the filter slot in the Pattern Grid (raoulvdberge)
|
||||
- The Pattern Grid now switches automatically between crafting pattern and processing pattern mode when using JEI transfer (raoulvdberge)
|
||||
|
@@ -0,0 +1,36 @@
|
||||
package com.raoulvdberge.refinedstorage.render;
|
||||
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
|
||||
public class RenderSettings {
|
||||
public static final RenderSettings INSTANCE = new RenderSettings();
|
||||
|
||||
private int primaryColor;
|
||||
private int secondaryColor;
|
||||
|
||||
public RenderSettings() {
|
||||
setColors(-1, -1);
|
||||
}
|
||||
|
||||
public void setColors(int primaryColor, int secondaryColor) {
|
||||
if (primaryColor == -1) {
|
||||
this.primaryColor = 4210752;
|
||||
} else {
|
||||
this.primaryColor = primaryColor;
|
||||
}
|
||||
|
||||
if (secondaryColor == -1) {
|
||||
this.secondaryColor = TextFormatting.WHITE.getColor();
|
||||
} else {
|
||||
this.secondaryColor = secondaryColor;
|
||||
}
|
||||
}
|
||||
|
||||
public int getPrimaryColor() {
|
||||
return primaryColor;
|
||||
}
|
||||
|
||||
public int getSecondaryColor() {
|
||||
return secondaryColor;
|
||||
}
|
||||
}
|
@@ -0,0 +1,21 @@
|
||||
package com.raoulvdberge.refinedstorage.render.resourcepack;
|
||||
|
||||
public class RSResourcePackSection {
|
||||
public static final RSResourcePackSectionDeserializer DESERIALIZER = new RSResourcePackSectionDeserializer();
|
||||
|
||||
private final int primaryColor;
|
||||
private final int secondaryColor;
|
||||
|
||||
public RSResourcePackSection(int primaryColor, int secondaryColor) {
|
||||
this.primaryColor = primaryColor;
|
||||
this.secondaryColor = secondaryColor;
|
||||
}
|
||||
|
||||
public int getPrimaryColor() {
|
||||
return primaryColor;
|
||||
}
|
||||
|
||||
public int getSecondaryColor() {
|
||||
return secondaryColor;
|
||||
}
|
||||
}
|
@@ -0,0 +1,27 @@
|
||||
package com.raoulvdberge.refinedstorage.render.resourcepack;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
import net.minecraft.resources.data.IMetadataSectionSerializer;
|
||||
|
||||
public class RSResourcePackSectionDeserializer implements IMetadataSectionSerializer<RSResourcePackSection> {
|
||||
@Override
|
||||
public String getSectionName() {
|
||||
return "refinedstorage";
|
||||
}
|
||||
|
||||
@Override
|
||||
public RSResourcePackSection deserialize(JsonObject json) {
|
||||
int primaryColor = -1;
|
||||
int secondaryColor = -1;
|
||||
|
||||
if (json.has("primary_color")) {
|
||||
primaryColor = json.getAsJsonPrimitive("primary_color").getAsInt();
|
||||
}
|
||||
|
||||
if (json.has("secondary_color")) {
|
||||
secondaryColor = json.getAsJsonPrimitive("secondary_color").getAsInt();
|
||||
}
|
||||
|
||||
return new RSResourcePackSection(primaryColor, secondaryColor);
|
||||
}
|
||||
}
|
@@ -0,0 +1,43 @@
|
||||
package com.raoulvdberge.refinedstorage.render.resourcepack;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.render.RenderSettings;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.resources.ClientResourcePackInfo;
|
||||
import net.minecraft.client.resources.ReloadListener;
|
||||
import net.minecraft.profiler.IProfiler;
|
||||
import net.minecraft.resources.IResourceManager;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.io.IOException;
|
||||
|
||||
public class ResourcePackListener extends ReloadListener<RSResourcePackSection> {
|
||||
private final Logger logger = LogManager.getLogger(getClass());
|
||||
|
||||
@Override
|
||||
protected RSResourcePackSection prepare(IResourceManager resourceManager, IProfiler profiler) {
|
||||
for (ClientResourcePackInfo info : Minecraft.getInstance().getResourcePackList().getEnabledPacks()) {
|
||||
try {
|
||||
RSResourcePackSection section = info.getResourcePack().getMetadata(RSResourcePackSection.DESERIALIZER);
|
||||
|
||||
if (section != null) {
|
||||
return section;
|
||||
}
|
||||
} catch (IOException e) {
|
||||
logger.error("Could not read Refined Storage resource pack section", e);
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void apply(@Nullable RSResourcePackSection section, IResourceManager resourceManager, IProfiler profiler) {
|
||||
if (section != null) {
|
||||
RenderSettings.INSTANCE.setColors(section.getPrimaryColor(), section.getSecondaryColor());
|
||||
} else {
|
||||
RenderSettings.INSTANCE.setColors(-1, -1);
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,7 +1,7 @@
|
||||
package com.raoulvdberge.refinedstorage.screen;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.RS;
|
||||
import com.raoulvdberge.refinedstorage.util.RenderUtils;
|
||||
import com.raoulvdberge.refinedstorage.render.RenderSettings;
|
||||
import net.minecraft.client.gui.widget.TextFieldWidget;
|
||||
import net.minecraft.client.gui.widget.button.Button;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
@@ -59,7 +59,7 @@ public abstract class AmountSpecifyingScreen<T extends Container> extends BaseSc
|
||||
amountField.setEnableBackgroundDrawing(false);
|
||||
amountField.setVisible(true);
|
||||
amountField.setText(String.valueOf(getDefaultAmount()));
|
||||
amountField.setTextColor(RenderUtils.DEFAULT_COLOR);
|
||||
amountField.setTextColor(RenderSettings.INSTANCE.getSecondaryColor());
|
||||
amountField.setCanLoseFocus(false);
|
||||
amountField.changeFocus(true);
|
||||
|
||||
|
@@ -7,6 +7,7 @@ import com.raoulvdberge.refinedstorage.container.slot.filter.FilterSlot;
|
||||
import com.raoulvdberge.refinedstorage.container.slot.filter.FluidFilterSlot;
|
||||
import com.raoulvdberge.refinedstorage.integration.craftingtweaks.CraftingTweaksIntegration;
|
||||
import com.raoulvdberge.refinedstorage.render.FluidRenderer;
|
||||
import com.raoulvdberge.refinedstorage.render.RenderSettings;
|
||||
import com.raoulvdberge.refinedstorage.screen.grid.AlternativesScreen;
|
||||
import com.raoulvdberge.refinedstorage.screen.widget.CheckBoxWidget;
|
||||
import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.SideButton;
|
||||
@@ -131,7 +132,7 @@ public abstract class BaseScreen<T extends Container> extends ContainerScreen<T>
|
||||
FluidRenderer.INSTANCE.render(guiLeft + slot.xPos, guiTop + slot.yPos, stack);
|
||||
|
||||
if (((FluidFilterSlot) slot).isSizeAllowed()) {
|
||||
renderQuantity(guiLeft + slot.xPos, guiTop + slot.yPos, API.instance().getQuantityFormatter().formatInBucketForm(stack.getAmount()), RenderUtils.DEFAULT_COLOR);
|
||||
renderQuantity(guiLeft + slot.xPos, guiTop + slot.yPos, API.instance().getQuantityFormatter().formatInBucketForm(stack.getAmount()), RenderSettings.INSTANCE.getSecondaryColor());
|
||||
|
||||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
}
|
||||
@@ -272,7 +273,7 @@ public abstract class BaseScreen<T extends Container> extends ContainerScreen<T>
|
||||
}
|
||||
|
||||
public void renderItem(int x, int y, ItemStack stack) {
|
||||
renderItem(x, y, stack, false, null, RenderUtils.DEFAULT_COLOR);
|
||||
renderItem(x, y, stack, false, null, RenderSettings.INSTANCE.getSecondaryColor());
|
||||
}
|
||||
|
||||
public void renderItem(int x, int y, ItemStack stack, boolean overlay, @Nullable String text, int textColor) {
|
||||
@@ -323,7 +324,7 @@ public abstract class BaseScreen<T extends Container> extends ContainerScreen<T>
|
||||
}
|
||||
|
||||
public void renderString(int x, int y, String message) {
|
||||
renderString(x, y, message, 4210752);
|
||||
renderString(x, y, message, RenderSettings.INSTANCE.getPrimaryColor());
|
||||
}
|
||||
|
||||
public void renderString(int x, int y, String message, int color) {
|
||||
|
@@ -2,12 +2,12 @@ package com.raoulvdberge.refinedstorage.screen;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.RS;
|
||||
import com.raoulvdberge.refinedstorage.container.DetectorContainer;
|
||||
import com.raoulvdberge.refinedstorage.render.RenderSettings;
|
||||
import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.DetectorModeSideButton;
|
||||
import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.ExactModeSideButton;
|
||||
import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.TypeSideButton;
|
||||
import com.raoulvdberge.refinedstorage.tile.DetectorTile;
|
||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataManager;
|
||||
import com.raoulvdberge.refinedstorage.util.RenderUtils;
|
||||
import net.minecraft.client.gui.widget.TextFieldWidget;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
@@ -35,7 +35,7 @@ public class DetectorScreen extends BaseScreen<DetectorContainer> {
|
||||
amountField.setVisible(true);
|
||||
amountField.setCanLoseFocus(true);
|
||||
amountField.setFocused2(false);
|
||||
amountField.setTextColor(RenderUtils.DEFAULT_COLOR);
|
||||
amountField.setTextColor(RenderSettings.INSTANCE.getSecondaryColor());
|
||||
amountField.func_212954_a(value -> {
|
||||
try {
|
||||
int result = Integer.parseInt(value);
|
||||
|
@@ -6,8 +6,8 @@ import com.raoulvdberge.refinedstorage.api.util.IFilter;
|
||||
import com.raoulvdberge.refinedstorage.container.FilterContainer;
|
||||
import com.raoulvdberge.refinedstorage.item.FilterItem;
|
||||
import com.raoulvdberge.refinedstorage.network.FilterUpdateMessage;
|
||||
import com.raoulvdberge.refinedstorage.render.RenderSettings;
|
||||
import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.FilterTypeSideButton;
|
||||
import com.raoulvdberge.refinedstorage.util.RenderUtils;
|
||||
import net.minecraft.client.gui.widget.TextFieldWidget;
|
||||
import net.minecraft.client.gui.widget.button.Button;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
@@ -72,7 +72,7 @@ public class FilterScreen extends BaseScreen<FilterContainer> {
|
||||
nameField.setVisible(true);
|
||||
nameField.setCanLoseFocus(true);
|
||||
nameField.setFocused2(false);
|
||||
nameField.setTextColor(RenderUtils.DEFAULT_COLOR);
|
||||
nameField.setTextColor(RenderSettings.INSTANCE.getSecondaryColor());
|
||||
nameField.func_212954_a(name -> sendUpdate());
|
||||
|
||||
addButton(nameField);
|
||||
|
@@ -3,8 +3,8 @@ package com.raoulvdberge.refinedstorage.screen.grid.stack;
|
||||
import com.raoulvdberge.refinedstorage.api.storage.tracker.StorageTrackerEntry;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||
import com.raoulvdberge.refinedstorage.render.FluidRenderer;
|
||||
import com.raoulvdberge.refinedstorage.render.RenderSettings;
|
||||
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
|
||||
import com.raoulvdberge.refinedstorage.util.RenderUtils;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.tags.FluidTags;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
@@ -159,7 +159,7 @@ public class FluidGridStack implements IGridStack {
|
||||
FluidRenderer.INSTANCE.render(x, y, stack);
|
||||
|
||||
String text;
|
||||
int color = RenderUtils.DEFAULT_COLOR;
|
||||
int color = RenderSettings.INSTANCE.getSecondaryColor();
|
||||
|
||||
if (zeroed) {
|
||||
text = "0";
|
||||
|
@@ -2,6 +2,7 @@ package com.raoulvdberge.refinedstorage.screen.grid.stack;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.api.storage.tracker.StorageTrackerEntry;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||
import com.raoulvdberge.refinedstorage.render.RenderSettings;
|
||||
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
|
||||
import com.raoulvdberge.refinedstorage.util.RenderUtils;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
@@ -169,7 +170,7 @@ public class ItemGridStack implements IGridStack {
|
||||
@Override
|
||||
public void draw(BaseScreen gui, int x, int y) {
|
||||
String text = null;
|
||||
int color = RenderUtils.DEFAULT_COLOR;
|
||||
int color = RenderSettings.INSTANCE.getSecondaryColor();
|
||||
|
||||
if (zeroed) {
|
||||
text = "0";
|
||||
|
@@ -4,8 +4,8 @@ import com.raoulvdberge.refinedstorage.RSKeyBindings;
|
||||
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
|
||||
import com.raoulvdberge.refinedstorage.integration.jei.JeiIntegration;
|
||||
import com.raoulvdberge.refinedstorage.integration.jei.RSJeiPlugin;
|
||||
import com.raoulvdberge.refinedstorage.render.RenderSettings;
|
||||
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
|
||||
import com.raoulvdberge.refinedstorage.util.RenderUtils;
|
||||
import net.minecraft.client.gui.FontRenderer;
|
||||
import net.minecraft.client.gui.widget.TextFieldWidget;
|
||||
import org.lwjgl.glfw.GLFW;
|
||||
@@ -24,7 +24,7 @@ public class SearchWidget extends TextFieldWidget {
|
||||
|
||||
this.setEnableBackgroundDrawing(false);
|
||||
this.setVisible(true);
|
||||
this.setTextColor(RenderUtils.DEFAULT_COLOR);
|
||||
this.setTextColor(RenderSettings.INSTANCE.getSecondaryColor());
|
||||
}
|
||||
|
||||
public void updateJei() {
|
||||
|
@@ -11,6 +11,7 @@ import com.raoulvdberge.refinedstorage.container.slot.CrafterManagerSlot;
|
||||
import com.raoulvdberge.refinedstorage.render.BakedModelOverrideRegistry;
|
||||
import com.raoulvdberge.refinedstorage.render.color.PatternItemColor;
|
||||
import com.raoulvdberge.refinedstorage.render.model.*;
|
||||
import com.raoulvdberge.refinedstorage.render.resourcepack.ResourcePackListener;
|
||||
import com.raoulvdberge.refinedstorage.render.tesr.StorageMonitorTileRenderer;
|
||||
import com.raoulvdberge.refinedstorage.screen.*;
|
||||
import com.raoulvdberge.refinedstorage.screen.factory.CrafterManagerScreenFactory;
|
||||
@@ -21,6 +22,8 @@ import net.minecraft.client.gui.ScreenManager;
|
||||
import net.minecraft.client.gui.screen.Screen;
|
||||
import net.minecraft.inventory.container.Container;
|
||||
import net.minecraft.inventory.container.Slot;
|
||||
import net.minecraft.resources.IReloadableResourceManager;
|
||||
import net.minecraft.resources.IResourceManager;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.client.event.ModelBakeEvent;
|
||||
import net.minecraftforge.client.model.ModelLoader;
|
||||
@@ -34,6 +37,11 @@ public class ClientSetup {
|
||||
private BakedModelOverrideRegistry bakedModelOverrideRegistry = new BakedModelOverrideRegistry();
|
||||
|
||||
public ClientSetup() {
|
||||
IResourceManager resourceManager = Minecraft.getInstance().getResourceManager();
|
||||
if (resourceManager instanceof IReloadableResourceManager) {
|
||||
((IReloadableResourceManager) resourceManager).addReloadListener(new ResourcePackListener());
|
||||
}
|
||||
|
||||
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "controller"), (base, registry) -> new FullbrightBakedModel(
|
||||
base,
|
||||
new ResourceLocation(RS.ID, "block/controller/cutouts/nearly_off"),
|
||||
|
@@ -27,8 +27,6 @@ import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public final class RenderUtils {
|
||||
public static final int DEFAULT_COLOR = 16777215;
|
||||
|
||||
private static final VertexFormat ITEM_FORMAT_WITH_LIGHTMAP = new VertexFormat(DefaultVertexFormats.ITEM).addElement(DefaultVertexFormats.TEX_2S);
|
||||
|
||||
public static String shorten(String text, int length) {
|
||||
|
Reference in New Issue
Block a user