Add oredict button to grid

This commit is contained in:
Raoul Van den Berge
2016-09-17 22:42:19 +02:00
parent f49fc23716
commit 488ce3e600
5 changed files with 74 additions and 1 deletions

View File

@@ -85,7 +85,7 @@ public class CraftingPattern implements ICraftingPattern {
@Override @Override
public boolean isOredicted() { public boolean isOredicted() {
return true; return ItemPattern.isOredicted(stack);
} }
@Override @Override

View File

@@ -4,6 +4,7 @@ import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ListMultimap; import com.google.common.collect.ListMultimap;
import com.google.common.collect.Multimaps; import com.google.common.collect.Multimaps;
import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.audio.PositionedSoundRecord;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.GuiTextField; import net.minecraft.client.gui.GuiTextField;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
@@ -13,6 +14,7 @@ import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fml.client.config.GuiCheckBox;
import net.minecraftforge.fml.common.FMLCommonHandler; import net.minecraftforge.fml.common.FMLCommonHandler;
import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorage;
import refinedstorage.api.network.grid.IItemGridHandler; import refinedstorage.api.network.grid.IItemGridHandler;
@@ -30,6 +32,7 @@ import refinedstorage.gui.sidebutton.*;
import refinedstorage.integration.jei.IntegrationJEI; import refinedstorage.integration.jei.IntegrationJEI;
import refinedstorage.integration.jei.RefinedStorageJEIPlugin; import refinedstorage.integration.jei.RefinedStorageJEIPlugin;
import refinedstorage.network.*; import refinedstorage.network.*;
import refinedstorage.tile.data.TileDataManager;
import refinedstorage.tile.grid.IGrid; import refinedstorage.tile.grid.IGrid;
import refinedstorage.tile.grid.TileGrid; import refinedstorage.tile.grid.TileGrid;
@@ -54,6 +57,8 @@ public class GuiGrid extends GuiBase {
private GuiTextField searchField; private GuiTextField searchField;
private GuiCheckBox patternOredicted;
private ContainerGrid container; private ContainerGrid container;
private IGrid grid; private IGrid grid;
@@ -94,6 +99,10 @@ public class GuiGrid extends GuiBase {
searchField.yPosition = sy; searchField.yPosition = sy;
} }
if (grid.getType() == EnumGridType.PATTERN) {
patternOredicted = addCheckBox(x + 64, y + 138, "Use oredict", TileGrid.PATTERN_OREDICTED.getValue()); // @TODO: I18N
}
if (grid.getType() != EnumGridType.FLUID) { if (grid.getType() != EnumGridType.FLUID) {
addSideButton(new SideButtonGridViewType(grid)); addSideButton(new SideButtonGridViewType(grid));
} }
@@ -402,6 +411,15 @@ public class GuiGrid extends GuiBase {
} }
} }
@Override
protected void actionPerformed(GuiButton button) throws IOException {
super.actionPerformed(button);
if (button == patternOredicted) {
TileDataManager.setParameter(TileGrid.PATTERN_OREDICTED, patternOredicted.isChecked());
}
}
@Override @Override
protected void keyTyped(char character, int keyCode) throws IOException { protected void keyTyped(char character, int keyCode) throws IOException {
if (checkHotbarKeys(keyCode)) { if (checkHotbarKeys(keyCode)) {
@@ -427,4 +445,10 @@ public class GuiGrid extends GuiBase {
searchField.setFocused(TileGrid.isSearchBoxModeWithAutoselection(mode)); searchField.setFocused(TileGrid.isSearchBoxModeWithAutoselection(mode));
} }
} }
public void updatePatternOredicted(boolean oredicted) {
if (patternOredicted != null) {
patternOredicted.setIsChecked(oredicted);
}
}
} }

View File

@@ -29,6 +29,7 @@ import java.util.Set;
public class ItemPattern extends ItemBase implements ICraftingPatternProvider { public class ItemPattern extends ItemBase implements ICraftingPatternProvider {
private static final String NBT_SLOT = "Slot_%d"; private static final String NBT_SLOT = "Slot_%d";
private static final String NBT_OUTPUTS = "Outputs"; private static final String NBT_OUTPUTS = "Outputs";
private static final String NBT_OREDICTED = "Oredicted";
public ItemPattern() { public ItemPattern() {
super("pattern"); super("pattern");
@@ -52,6 +53,10 @@ public class ItemPattern extends ItemBase implements ICraftingPatternProvider {
} }
combineItems(tooltip, true, Iterables.toArray(pattern.getOutputs(), ItemStack.class)); combineItems(tooltip, true, Iterables.toArray(pattern.getOutputs(), ItemStack.class));
if (pattern.isOredicted()) {
tooltip.add(TextFormatting.BLUE + "Uses ore dictionary"); // @TODO: I18N
}
} else { } else {
tooltip.add(TextFormatting.RED + I18n.format("misc.refinedstorage:pattern.invalid") + TextFormatting.RESET); tooltip.add(TextFormatting.RED + I18n.format("misc.refinedstorage:pattern.invalid") + TextFormatting.RESET);
@@ -78,6 +83,22 @@ public class ItemPattern extends ItemBase implements ICraftingPatternProvider {
} }
} }
public static void setOredicted(ItemStack pattern, boolean oredicted) {
if (!pattern.hasTagCompound()) {
pattern.setTagCompound(new NBTTagCompound());
}
pattern.getTagCompound().setBoolean(NBT_OREDICTED, oredicted);
}
public static boolean isOredicted(ItemStack pattern) {
if (!pattern.hasTagCompound() || !pattern.getTagCompound().hasKey(NBT_OREDICTED)) {
return false;
}
return pattern.getTagCompound().getBoolean(NBT_OREDICTED);
}
public static void setSlot(ItemStack pattern, int slot, ItemStack stack) { public static void setSlot(ItemStack pattern, int slot, ItemStack stack) {
if (!pattern.hasTagCompound()) { if (!pattern.hasTagCompound()) {
pattern.setTagCompound(new NBTTagCompound()); pattern.setTagCompound(new NBTTagCompound());

View File

@@ -107,10 +107,28 @@ public class TileGrid extends TileNode implements IGrid {
} }
}); });
public static final TileDataParameter<Boolean> PATTERN_OREDICTED = new TileDataParameter<>(DataSerializers.BOOLEAN, false, new ITileDataProducer<Boolean, TileGrid>() {
@Override
public Boolean getValue(TileGrid tile) {
return tile.patternOredicted;
}
}, new ITileDataConsumer<Boolean, TileGrid>() {
@Override
public void setValue(TileGrid tile, Boolean value) {
tile.patternOredicted = value;
tile.markDirty();
}
}, parameter -> {
if (Minecraft.getMinecraft().currentScreen instanceof GuiGrid) {
((GuiGrid) Minecraft.getMinecraft().currentScreen).updatePatternOredicted(parameter.getValue());
}
});
public static final String NBT_VIEW_TYPE = "ViewType"; public static final String NBT_VIEW_TYPE = "ViewType";
public static final String NBT_SORTING_DIRECTION = "SortingDirection"; public static final String NBT_SORTING_DIRECTION = "SortingDirection";
public static final String NBT_SORTING_TYPE = "SortingType"; public static final String NBT_SORTING_TYPE = "SortingType";
public static final String NBT_SEARCH_BOX_MODE = "SearchBoxMode"; public static final String NBT_SEARCH_BOX_MODE = "SearchBoxMode";
private static final String NBT_PATTERN_OREDICTED = "PatternOredicted";
public static final int SORTING_DIRECTION_ASCENDING = 0; public static final int SORTING_DIRECTION_ASCENDING = 0;
public static final int SORTING_DIRECTION_DESCENDING = 1; public static final int SORTING_DIRECTION_DESCENDING = 1;
@@ -152,11 +170,14 @@ public class TileGrid extends TileNode implements IGrid {
private int sortingType = SORTING_TYPE_NAME; private int sortingType = SORTING_TYPE_NAME;
private int searchBoxMode = SEARCH_BOX_MODE_NORMAL; private int searchBoxMode = SEARCH_BOX_MODE_NORMAL;
private boolean patternOredicted = false;
public TileGrid() { public TileGrid() {
dataManager.addWatchedParameter(VIEW_TYPE); dataManager.addWatchedParameter(VIEW_TYPE);
dataManager.addWatchedParameter(SORTING_DIRECTION); dataManager.addWatchedParameter(SORTING_DIRECTION);
dataManager.addWatchedParameter(SORTING_TYPE); dataManager.addWatchedParameter(SORTING_TYPE);
dataManager.addWatchedParameter(SEARCH_BOX_MODE); dataManager.addWatchedParameter(SEARCH_BOX_MODE);
dataManager.addWatchedParameter(PATTERN_OREDICTED);
} }
@Override @Override
@@ -308,6 +329,8 @@ public class TileGrid extends TileNode implements IGrid {
ItemStack pattern = new ItemStack(RefinedStorageItems.PATTERN); ItemStack pattern = new ItemStack(RefinedStorageItems.PATTERN);
ItemPattern.setOredicted(pattern, patternOredicted);
for (int i = 0; i < 9; ++i) { for (int i = 0; i < 9; ++i) {
ItemStack ingredient = matrix.getStackInSlot(i); ItemStack ingredient = matrix.getStackInSlot(i);
@@ -461,6 +484,10 @@ public class TileGrid extends TileNode implements IGrid {
if (tag.hasKey(NBT_SEARCH_BOX_MODE)) { if (tag.hasKey(NBT_SEARCH_BOX_MODE)) {
searchBoxMode = tag.getInteger(NBT_SEARCH_BOX_MODE); searchBoxMode = tag.getInteger(NBT_SEARCH_BOX_MODE);
} }
if (tag.hasKey(NBT_PATTERN_OREDICTED)) {
patternOredicted = tag.getBoolean(NBT_PATTERN_OREDICTED);
}
} }
@Override @Override
@@ -475,6 +502,7 @@ public class TileGrid extends TileNode implements IGrid {
tag.setInteger(NBT_SORTING_DIRECTION, sortingDirection); tag.setInteger(NBT_SORTING_DIRECTION, sortingDirection);
tag.setInteger(NBT_SORTING_TYPE, sortingType); tag.setInteger(NBT_SORTING_TYPE, sortingType);
tag.setInteger(NBT_SEARCH_BOX_MODE, searchBoxMode); tag.setInteger(NBT_SEARCH_BOX_MODE, searchBoxMode);
tag.setBoolean(NBT_PATTERN_OREDICTED, patternOredicted);
return tag; return tag;
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB