Skip to content

Commit

Permalink
Close #55 delete items from cheat mode (requires server)
Browse files Browse the repository at this point in the history
  • Loading branch information
mezz committed Dec 22, 2015
1 parent 3a9b51a commit 532680a
Show file tree
Hide file tree
Showing 7 changed files with 108 additions and 9 deletions.
8 changes: 8 additions & 0 deletions src/main/java/mezz/jei/config/Config.java
Expand Up @@ -25,6 +25,8 @@ public class Config {
private static boolean editModeEnabled = false;
private static boolean debugModeEnabled = false;

private static boolean deleteItemsInCheatModeEnabled = true;

private static boolean jeiOnServer = true;

private static boolean recipeAnimationsEnabled = true;
Expand Down Expand Up @@ -54,6 +56,10 @@ public static boolean isDebugModeEnabled() {
return debugModeEnabled;
}

public static boolean isDeleteItemsInCheatModeActive() {
return deleteItemsInCheatModeEnabled && cheatItemsEnabled && jeiOnServer;
}

public static boolean isJeiOnServer() {
return jeiOnServer;
}
Expand Down Expand Up @@ -102,6 +108,8 @@ public static boolean syncConfig() {
cheatItemsEnabled = configFile.getBoolean(CATEGORY_MODE, "cheatItemsEnabled", cheatItemsEnabled);
editModeEnabled = configFile.getBoolean(CATEGORY_MODE, "editEnabled", editModeEnabled);

deleteItemsInCheatModeEnabled = configFile.getBoolean(CATEGORY_ADVANCED, "deleteItemsInCheatModeEnabled", deleteItemsInCheatModeEnabled);

recipeAnimationsEnabled = configFile.getBoolean(CATEGORY_INTERFACE, "recipeAnimationsEnabled", recipeAnimationsEnabled);

atPrefixRequiredForModName = configFile.getBoolean(CATEGORY_SEARCH, "atPrefixRequiredForModName", atPrefixRequiredForModName);
Expand Down
40 changes: 39 additions & 1 deletion src/main/java/mezz/jei/gui/ItemListOverlay.java
Expand Up @@ -7,12 +7,15 @@
import java.awt.Color;

import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;

import net.minecraftforge.fml.client.config.GuiButtonExt;
Expand All @@ -22,7 +25,9 @@

import mezz.jei.Internal;
import mezz.jei.ItemFilter;
import mezz.jei.JustEnoughItems;
import mezz.jei.api.gui.IDrawable;
import mezz.jei.config.Config;
import mezz.jei.config.Constants;
import mezz.jei.config.JEIModConfigGui;
import mezz.jei.gui.ingredients.GuiItemStackFast;
Expand All @@ -32,6 +37,8 @@
import mezz.jei.input.IKeyable;
import mezz.jei.input.IMouseHandler;
import mezz.jei.input.IShowsRecipeFocuses;
import mezz.jei.network.packets.PacketDeletePlayerItem;
import mezz.jei.network.packets.PacketJEI;
import mezz.jei.util.ItemStackElement;
import mezz.jei.util.MathUtil;
import mezz.jei.util.Translator;
Expand Down Expand Up @@ -191,14 +198,32 @@ public void drawScreen(@Nonnull Minecraft minecraft, int mouseX, int mouseY) {
configButtonIcon.draw(minecraft, configButton.xPosition + 2, configButton.yPosition + 2);

boolean mouseOver = isMouseOver(mouseX, mouseY);
hovered = guiItemStacks.render(hovered, minecraft, mouseOver, mouseX, mouseY);

if (mouseOver && shouldShowDeleteItemTooltip(minecraft)) {
hovered = guiItemStacks.render(null, minecraft, false, mouseX, mouseY);

String deleteItem = Translator.translateToLocal("jei.tooltip.delete.item");
TooltipRenderer.drawHoveringText(minecraft, deleteItem, mouseX, mouseY);
} else {
hovered = guiItemStacks.render(hovered, minecraft, mouseOver, mouseX, mouseY);
}

if (configButtonHoverChecker.checkHover(mouseX, mouseY)) {
String configString = Translator.translateToLocal("jei.tooltip.config");
TooltipRenderer.drawHoveringText(minecraft, configString, mouseX, mouseY);
}
}

private boolean shouldShowDeleteItemTooltip(Minecraft minecraft) {
if (Config.isDeleteItemsInCheatModeActive()) {
EntityPlayer player = minecraft.thePlayer;
if (player.inventory.getItemStack() != null) {
return true;
}
}
return false;
}

public void drawHovered(@Nonnull Minecraft minecraft, int mouseX, int mouseY) {
if (hovered != null) {
RenderHelper.enableGUIStandardItemLighting();
Expand Down Expand Up @@ -238,6 +263,19 @@ public boolean handleMouseClicked(int mouseX, int mouseY, int mouseButton) {
setKeyboardFocus(false);
return false;
}

if (Config.isDeleteItemsInCheatModeActive()) {
Minecraft minecraft = Minecraft.getMinecraft();
EntityPlayerSP player = minecraft.thePlayer;
ItemStack itemStack = player.inventory.getItemStack();
if (itemStack != null) {
player.inventory.setItemStack(null);
PacketJEI packet = new PacketDeletePlayerItem(itemStack);
JustEnoughItems.getProxy().sendPacketToServer(packet);
return true;
}
}

boolean buttonClicked = handleMouseClickedButtons(mouseX, mouseY);
if (buttonClicked) {
setKeyboardFocus(false);
Expand Down
15 changes: 8 additions & 7 deletions src/main/java/mezz/jei/input/InputHandler.java
Expand Up @@ -64,10 +64,11 @@ public boolean handleMouseEvent(int mouseX, int mouseY) {
if (Mouse.getEventButtonState()) {
if (!clickHandled) {
cancelEvent = handleMouseClick(Mouse.getEventButton(), mouseX, mouseY);
clickHandled = true;
clickHandled = cancelEvent;
}
} else {
} else if (clickHandled) {
clickHandled = false;
cancelEvent = true;
}
} else if (Mouse.getEventDWheel() != 0) {
cancelEvent = handleMouseScroll(Mouse.getEventDWheel(), mouseX, mouseY);
Expand All @@ -85,17 +86,17 @@ private boolean handleMouseScroll(int dWheel, int mouseX, int mouseY) {
}

private boolean handleMouseClick(int mouseButton, int mouseX, int mouseY) {
Focus focus = getFocusUnderMouseForClick(mouseX, mouseY);
if (focus != null && handleMouseClickedFocus(mouseButton, focus)) {
return true;
}

for (IMouseHandler clickable : mouseHandlers) {
if (clickable.handleMouseClicked(mouseX, mouseY, mouseButton)) {
return true;
}
}

Focus focus = getFocusUnderMouseForClick(mouseX, mouseY);
if (focus != null && handleMouseClickedFocus(mouseButton, focus)) {
return true;
}

return recipesGui.isOpen();
}

Expand Down
5 changes: 5 additions & 0 deletions src/main/java/mezz/jei/network/PacketHandler.java
Expand Up @@ -14,6 +14,7 @@
import net.minecraftforge.fml.common.network.NetworkRegistry;
import net.minecraftforge.fml.common.network.internal.FMLProxyPacket;

import mezz.jei.network.packets.PacketDeletePlayerItem;
import mezz.jei.network.packets.PacketJEI;
import mezz.jei.network.packets.PacketRecipeTransfer;
import mezz.jei.util.Log;
Expand Down Expand Up @@ -42,6 +43,10 @@ public void onPacket(FMLNetworkEvent.ServerCustomPacketEvent event) {
packet = new PacketRecipeTransfer();
break;
}
case DELETE_ITEM: {
packet = new PacketDeletePlayerItem();
break;
}
default: {
return;
}
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/mezz/jei/network/PacketIdServer.java
@@ -1,7 +1,8 @@
package mezz.jei.network;

public enum PacketIdServer implements IPacketId {
RECIPE_TRANSFER;
RECIPE_TRANSFER,
DELETE_ITEM;

public static final PacketIdServer[] VALUES = values();
}
43 changes: 43 additions & 0 deletions src/main/java/mezz/jei/network/packets/PacketDeletePlayerItem.java
@@ -0,0 +1,43 @@
package mezz.jei.network.packets;

import javax.annotation.Nonnull;
import java.io.IOException;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.network.PacketBuffer;

import mezz.jei.network.IPacketId;
import mezz.jei.network.PacketIdServer;
import mezz.jei.util.StackUtil;

public class PacketDeletePlayerItem extends PacketJEI {
private ItemStack itemStack;

public PacketDeletePlayerItem() {

}

public PacketDeletePlayerItem(@Nonnull ItemStack itemStack) {
this.itemStack = itemStack;
}

@Override
public IPacketId getPacketId() {
return PacketIdServer.DELETE_ITEM;
}

@Override
public void writePacketData(PacketBuffer buf) throws IOException {
buf.writeItemStackToBuffer(itemStack);
}

@Override
public void readPacketData(PacketBuffer buf, EntityPlayer player) throws IOException {
itemStack = buf.readItemStackFromBuffer();
ItemStack playerItem = player.inventory.getItemStack();
if (StackUtil.isIdentical(itemStack, playerItem)) {
player.inventory.setItemStack(null);
}
}
}
3 changes: 3 additions & 0 deletions src/main/resources/assets/jei/lang/en_US.lang
@@ -1,6 +1,7 @@
# Tooltips
jei.tooltip.config=Config
jei.tooltip.show.all.recipes=Show All Recipes
jei.tooltip.delete.item=Click to Delete

# Error Tooltips
jei.tooltip.error.recipe.transfer.missing=Missing Items
Expand Down Expand Up @@ -47,6 +48,8 @@ config.jei.advanced.hideMissingModelsEnabled=Hide Missing Item Models
config.jei.advanced.hideMissingModelsEnabled.comment=Items with missing models will be hidden from the item list.
config.jei.advanced.debugModeEnabled=Debug Mode
config.jei.advanced.debugModeEnabled.comment=Adds random things to help with JEI development.
config.jei.advanced.deleteItemsInCheatModeEnabled=Delete Items in Cheat Mode
config.jei.advanced.deleteItemsInCheatModeEnabled.comment=In cheat mode, drag an ItemStack over the item list and click to delete it. (requires JEI on server)

config.jei.addons=Addons
config.jei.addons.comment=Category for JEI addon config options.
Expand Down

0 comments on commit 532680a

Please sign in to comment.