Add oredict button to processing pattern encoder

This commit is contained in:
Raoul Van den Berge
2016-09-17 23:11:17 +02:00
parent 488ce3e600
commit 134780bdc0
4 changed files with 63 additions and 3 deletions

View File

@@ -36,7 +36,7 @@ public class ContainerProcessingPatternEncoder extends ContainerBase {
} }
} }
addPlayerInventory(8, 90); addPlayerInventory(8, 102);
} }
@Override @Override

View File

@@ -1,26 +1,32 @@
package refinedstorage.gui; package refinedstorage.gui;
import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.audio.PositionedSoundRecord;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.init.SoundEvents; import net.minecraft.init.SoundEvents;
import net.minecraftforge.fml.client.config.GuiCheckBox;
import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorage;
import refinedstorage.container.ContainerProcessingPatternEncoder; import refinedstorage.container.ContainerProcessingPatternEncoder;
import refinedstorage.network.MessageGridPatternCreate; import refinedstorage.network.MessageGridPatternCreate;
import refinedstorage.network.MessageProcessingPatternEncoderClear; import refinedstorage.network.MessageProcessingPatternEncoderClear;
import refinedstorage.tile.TileProcessingPatternEncoder; import refinedstorage.tile.TileProcessingPatternEncoder;
import refinedstorage.tile.data.TileDataManager;
import java.io.IOException; import java.io.IOException;
public class GuiProcessingPatternEncoder extends GuiBase { public class GuiProcessingPatternEncoder extends GuiBase {
private TileProcessingPatternEncoder processingPatternEncoder; private TileProcessingPatternEncoder processingPatternEncoder;
private GuiCheckBox patternOredicted;
public GuiProcessingPatternEncoder(ContainerProcessingPatternEncoder container, TileProcessingPatternEncoder processingPatternEncoder) { public GuiProcessingPatternEncoder(ContainerProcessingPatternEncoder container, TileProcessingPatternEncoder processingPatternEncoder) {
super(container, 176, 172); super(container, 176, 184);
this.processingPatternEncoder = processingPatternEncoder; this.processingPatternEncoder = processingPatternEncoder;
} }
@Override @Override
public void init(int x, int y) { public void init(int x, int y) {
patternOredicted = addCheckBox(x + 7, y + 76, "Use oredict", TileProcessingPatternEncoder.PATTERN_OREDICTED.getValue()); // @TODO: I18N
} }
@Override @Override
@@ -57,7 +63,7 @@ public class GuiProcessingPatternEncoder extends GuiBase {
@Override @Override
public void drawForeground(int mouseX, int mouseY) { public void drawForeground(int mouseX, int mouseY) {
drawString(7, 7, t("gui.refinedstorage:processing_pattern_encoder")); drawString(7, 7, t("gui.refinedstorage:processing_pattern_encoder"));
drawString(7, 78, t("container.inventory")); drawString(7, 91, t("container.inventory"));
if (isOverCreatePattern(mouseX, mouseY)) { if (isOverCreatePattern(mouseX, mouseY)) {
drawTooltip(mouseX, mouseY, t("gui.refinedstorage:processing_pattern_encoder.pattern_create")); drawTooltip(mouseX, mouseY, t("gui.refinedstorage:processing_pattern_encoder.pattern_create"));
@@ -82,4 +88,19 @@ public class GuiProcessingPatternEncoder extends GuiBase {
mc.getSoundHandler().playSound(PositionedSoundRecord.getMasterRecord(SoundEvents.UI_BUTTON_CLICK, 1.0F)); mc.getSoundHandler().playSound(PositionedSoundRecord.getMasterRecord(SoundEvents.UI_BUTTON_CLICK, 1.0F));
} }
} }
@Override
protected void actionPerformed(GuiButton button) throws IOException {
super.actionPerformed(button);
if (button == patternOredicted) {
TileDataManager.setParameter(TileProcessingPatternEncoder.PATTERN_OREDICTED, patternOredicted.isChecked());
}
}
public void updatePatternOredicted(boolean oredicted) {
if (patternOredicted != null) {
patternOredicted.setIsChecked(oredicted);
}
}
} }

View File

@@ -1,21 +1,52 @@
package refinedstorage.tile; package refinedstorage.tile;
import net.minecraft.client.Minecraft;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.datasync.DataSerializers;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.ItemHandlerHelper; import net.minecraftforge.items.ItemHandlerHelper;
import refinedstorage.RefinedStorageItems; import refinedstorage.RefinedStorageItems;
import refinedstorage.gui.GuiProcessingPatternEncoder;
import refinedstorage.inventory.ItemHandlerBasic; import refinedstorage.inventory.ItemHandlerBasic;
import refinedstorage.inventory.ItemValidatorBasic; import refinedstorage.inventory.ItemValidatorBasic;
import refinedstorage.item.ItemPattern; import refinedstorage.item.ItemPattern;
import refinedstorage.tile.data.ITileDataConsumer;
import refinedstorage.tile.data.ITileDataProducer;
import refinedstorage.tile.data.TileDataParameter;
public class TileProcessingPatternEncoder extends TileBase { public class TileProcessingPatternEncoder extends TileBase {
public static final TileDataParameter<Boolean> PATTERN_OREDICTED = new TileDataParameter<>(DataSerializers.BOOLEAN, false, new ITileDataProducer<Boolean, TileProcessingPatternEncoder>() {
@Override
public Boolean getValue(TileProcessingPatternEncoder tile) {
return tile.patternOredicted;
}
}, new ITileDataConsumer<Boolean, TileProcessingPatternEncoder>() {
@Override
public void setValue(TileProcessingPatternEncoder tile, Boolean value) {
tile.patternOredicted = value;
tile.markDirty();
}
}, parameter -> {
if (Minecraft.getMinecraft().currentScreen instanceof GuiProcessingPatternEncoder) {
((GuiProcessingPatternEncoder) Minecraft.getMinecraft().currentScreen).updatePatternOredicted(parameter.getValue());
}
});
private static final String NBT_PATTERN_OREDICTED = "PatternOredicted";
private ItemHandlerBasic patterns = new ItemHandlerBasic(2, this, new ItemValidatorBasic(RefinedStorageItems.PATTERN)); private ItemHandlerBasic patterns = new ItemHandlerBasic(2, this, new ItemValidatorBasic(RefinedStorageItems.PATTERN));
private ItemHandlerBasic configuration = new ItemHandlerBasic(9 * 2, this); private ItemHandlerBasic configuration = new ItemHandlerBasic(9 * 2, this);
private boolean patternOredicted = false;
public TileProcessingPatternEncoder() {
dataManager.addWatchedParameter(PATTERN_OREDICTED);
}
@Override @Override
public NBTTagCompound write(NBTTagCompound tag) { public NBTTagCompound write(NBTTagCompound tag) {
super.write(tag); super.write(tag);
@@ -23,6 +54,8 @@ public class TileProcessingPatternEncoder extends TileBase {
writeItems(patterns, 0, tag); writeItems(patterns, 0, tag);
writeItems(configuration, 1, tag); writeItems(configuration, 1, tag);
tag.setBoolean(NBT_PATTERN_OREDICTED, patternOredicted);
return tag; return tag;
} }
@@ -32,12 +65,18 @@ public class TileProcessingPatternEncoder extends TileBase {
readItems(patterns, 0, tag); readItems(patterns, 0, tag);
readItems(configuration, 1, tag); readItems(configuration, 1, tag);
if (tag.hasKey(NBT_PATTERN_OREDICTED)) {
patternOredicted = tag.getBoolean(NBT_PATTERN_OREDICTED);
}
} }
public void onCreatePattern() { public void onCreatePattern() {
if (canCreatePattern()) { if (canCreatePattern()) {
ItemStack pattern = new ItemStack(RefinedStorageItems.PATTERN); ItemStack pattern = new ItemStack(RefinedStorageItems.PATTERN);
ItemPattern.setOredicted(pattern, patternOredicted);
for (int i = 0; i < 18; ++i) { for (int i = 0; i < 18; ++i) {
if (configuration.getStackInSlot(i) != null) { if (configuration.getStackInSlot(i) != null) {
if (i >= 9) { if (i >= 9) {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB