diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSKeyBindings.java b/src/main/java/com/raoulvdberge/refinedstorage/RSKeyBindings.java new file mode 100644 index 000000000..7157574f9 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSKeyBindings.java @@ -0,0 +1,16 @@ +package com.raoulvdberge.refinedstorage; + +import net.minecraft.client.settings.KeyBinding; +import net.minecraftforge.client.settings.KeyConflictContext; +import net.minecraftforge.fml.client.registry.ClientRegistry; +import org.lwjgl.input.Keyboard; + +public final class RSKeyBindings { + private static final String categoryName = RS.ID; + + public static final KeyBinding focusSearchBar = new KeyBinding("key.rs.focusSearchBar", KeyConflictContext.GUI, Keyboard.KEY_TAB, categoryName); + + public static void init() { + ClientRegistry.registerKeyBinding(focusSearchBar); + } +} \ No newline at end of file diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/AutoCraftingEvent.java b/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/AutoCraftingEvent.java new file mode 100644 index 000000000..9888ed9f0 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/AutoCraftingEvent.java @@ -0,0 +1,36 @@ +package com.raoulvdberge.refinedstorage.api.autocrafting; + +import com.raoulvdberge.refinedstorage.api.network.INetworkMaster; +import net.minecraft.item.ItemStack; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.fml.common.eventhandler.Event; +import net.minecraftforge.items.ItemHandlerHelper; + +/** + * Event fired upon completion of an auto crafting task + */ +public class AutoCraftingEvent extends Event { + private ItemStack crafted; + private INetworkMaster network; + + private AutoCraftingEvent(INetworkMaster network, ItemStack crafted) { + this.crafted = crafted; + this.network = network; + } + + public ItemStack getCrafted() { + return crafted; + } + + public INetworkMaster getNetwork() { + return network; + } + + public static void fire(INetworkMaster network, ItemStack crafted) { + MinecraftForge.EVENT_BUS.post(new AutoCraftingEvent(network, crafted)); + } + + public static void fire(INetworkMaster network, ItemStack crafted, int quantity) { + fire(network, ItemHandlerHelper.copyStackWithSize(crafted, quantity)); + } +} \ No newline at end of file diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/CraftingManager.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/CraftingManager.java index ac3f969d8..002c4599e 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/CraftingManager.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/CraftingManager.java @@ -179,6 +179,7 @@ public class CraftingManager implements ICraftingManager { ICraftingTask task = craftingTaskIterator.next(); if (task.update(usedCrafters)) { + AutoCraftingEvent.fire(network, task.getRequested(), task.getQuantity()); craftingTaskIterator.remove(); craftingTasksChanged = true; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeGrid.java index 7e8b06841..efba66568 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeGrid.java @@ -27,6 +27,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.CraftingManager; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.NonNullList; +import net.minecraftforge.fml.common.FMLCommonHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemHandlerHelper; import net.minecraftforge.items.wrapper.CombinedInvWrapper; @@ -359,6 +360,8 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid { } } } + + FMLCommonHandler.instance().firePlayerCraftingEvent(player, ItemHandlerHelper.copyStackWithSize(crafted, craftedItems), matrix); } public void onCreatePattern() { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/util/Comparer.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/util/Comparer.java index c7d314a45..0bacdbe4f 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/util/Comparer.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/util/Comparer.java @@ -12,6 +12,8 @@ import org.apache.commons.lang3.ArrayUtils; import javax.annotation.Nullable; import java.util.HashMap; import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; public class Comparer implements IComparer { private Map oredictCache = new HashMap<>(); @@ -210,6 +212,14 @@ public class Comparer implements IComparer { stack.getTagCompound().removeTag("dropped"); stack.getTagCompound().removeTag("energy"); break; + case "draconicevolution": + stack.getTagCompound().removeTag("Energy"); + stack.getTagCompound().removeTag("DEUpgrades"); + Set profiles = stack.getTagCompound().getKeySet().stream().filter(key -> key.startsWith("Profile")).collect(Collectors.toSet()); + for (String profile : profiles) { + stack.getTagCompound().removeTag(profile); + } + break; case "minecraft": stack.getTagCompound().removeTag("RepairCost"); break; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/GuiGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/GuiGrid.java index 3b7fdfa95..d1e2c3944 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/GuiGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/GuiGrid.java @@ -4,6 +4,7 @@ import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.ListMultimap; import com.google.common.collect.Multimaps; import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.RSKeyBindings; import com.raoulvdberge.refinedstorage.api.network.grid.IItemGridHandler; import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeGrid; import com.raoulvdberge.refinedstorage.block.GridType; @@ -578,7 +579,7 @@ public class GuiGrid extends GuiBase implements IGridDisplay { updateJEI(); sortItems(); - } else if (keyCode == Keyboard.KEY_TAB && (grid.getSearchBoxMode() == NetworkNodeGrid.SEARCH_BOX_MODE_NORMAL || grid.getSearchBoxMode() == NetworkNodeGrid.SEARCH_BOX_MODE_JEI_SYNCHRONIZED)) { + } else if (keyCode == RSKeyBindings.focusSearchBar.getKeyCode() && (grid.getSearchBoxMode() == NetworkNodeGrid.SEARCH_BOX_MODE_NORMAL || grid.getSearchBoxMode() == NetworkNodeGrid.SEARCH_BOX_MODE_JEI_SYNCHRONIZED)) { searchField.setFocused(!searchField.isFocused()); } else { super.keyTyped(character, keyCode); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyClient.java b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyClient.java index e25a19d51..44c904975 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyClient.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyClient.java @@ -1,9 +1,6 @@ package com.raoulvdberge.refinedstorage.proxy; -import com.raoulvdberge.refinedstorage.RS; -import com.raoulvdberge.refinedstorage.RSBlocks; -import com.raoulvdberge.refinedstorage.RSItems; -import com.raoulvdberge.refinedstorage.RSUtils; +import com.raoulvdberge.refinedstorage.*; import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.CraftingPattern; import com.raoulvdberge.refinedstorage.block.*; import com.raoulvdberge.refinedstorage.gui.GuiCraftingPreview; @@ -260,6 +257,8 @@ public class ProxyClient extends ProxyCommon { public void init(FMLInitializationEvent e) { super.init(e); + RSKeyBindings.init(); + ItemColors itemColors = Minecraft.getMinecraft().getItemColors(); itemColors.registerItemColorHandler((stack, tintIndex) -> {