Starting on record edit

This commit is contained in:
Towdium committed 2016-02-24 15:13:59 +08:00
1 parent e891649d92
commit e227cdc927
24 files changed
+287 -79

No files matched your search

@@ -114,4 +114,60 @@ public class ItemStackWrapper {
else return 0;
}
}
public static class Click {
public static boolean leftClick(ItemStack itemStack, boolean doChange){
if(itemStack == null || itemStack.stackSize>=64){
return false;
}else {
if(doChange){
itemStack.stackSize += 1;
}
return true;
}
}
public static boolean leftShift(ItemStack itemStack, boolean doChange){
if(itemStack == null || itemStack.stackSize>=64){
return false;
}else {
if(doChange){
if(itemStack.stackSize == 1){
itemStack.stackSize = 10;
}else if(itemStack.stackSize <= 54){
itemStack.stackSize += 10;
}else {
itemStack.stackSize = 64;
}
}
return true;
}
}
public static boolean rightClick(ItemStack itemStack, boolean doChange){
if(itemStack == null){
return false;
}else {
if(doChange){
itemStack.stackSize -= 1;
}
return true;
}
}
public static boolean rightShift(ItemStack itemStack, boolean doChange){
if(itemStack == null || itemStack.stackSize>=64){
return false;
}else {
if(doChange){
if(itemStack.stackSize <= 10){
itemStack.stackSize = 0;
} else {
itemStack.stackSize -= 10;
}
}
return true;
}
}
}
}
@@ -8,10 +8,9 @@ import net.minecraftforge.client.event.GuiScreenEvent;
import net.minecraftforge.fml.common.eventhandler.EventPriority;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import org.lwjgl.input.Mouse;
import pers.towdium.justEnoughCalculation.gui.calculator.ContainerCalculator;
import pers.towdium.justEnoughCalculation.gui.calculator.GuiCalculator;
import pers.towdium.justEnoughCalculation.gui.recipeEditor.ContainerRecipeEditor;
import pers.towdium.justEnoughCalculation.gui.recipeEditor.GuiRecipeEditor;
import pers.towdium.justEnoughCalculation.gui.guis.calculator.ContainerCalculator;
import pers.towdium.justEnoughCalculation.gui.guis.calculator.GuiCalculator;
import pers.towdium.justEnoughCalculation.gui.guis.recipeEditor.GuiRecipeEditor;
import pers.towdium.justEnoughCalculation.plugin.JEIPlugin;
import java.util.Date;
@@ -38,7 +37,7 @@ public class GuiEventHandler {
time = new Date().getTime();
if(guiContainer.getSlotUnderMouse() != null){
guiContainer.setActiveSlot(guiContainer.getSlotUnderMouse().getSlotIndex());
((ContainerRecipeEditor)((GuiRecipeEditor) event.gui).inventorySlots).getPlayer().playSound("random.click", 1f, 1f );
event.gui.mc.thePlayer.playSound("random.click", 1f, 1f );
event.setCanceled(true);
return;
}
@@ -47,7 +46,7 @@ public class GuiEventHandler {
boolean over = ((ItemListOverlay)JEIPlugin.runtime.getItemListOverlay()).isMouseOver(x, y);
if(!over || (y>25 && y<guiContainer.height-15)){
((GuiRecipeEditor) event.gui).setActiveSlot(-1);
((ContainerRecipeEditor)((GuiRecipeEditor) event.gui).inventorySlots).getPlayer().playSound("random.click", 1f, 1f );
event.gui.mc.thePlayer.playSound("random.click", 1f, 1f );
event.setCanceled(true);
}
}
@@ -3,12 +3,15 @@ package pers.towdium.justEnoughCalculation.gui;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.network.IGuiHandler;
import pers.towdium.justEnoughCalculation.gui.calculator.ContainerCalculator;
import pers.towdium.justEnoughCalculation.gui.calculator.GuiCalculator;
import pers.towdium.justEnoughCalculation.gui.itemPicker.ContainerItemPicker;
import pers.towdium.justEnoughCalculation.gui.itemPicker.GuiItemPicker;
import pers.towdium.justEnoughCalculation.gui.recipeEditor.ContainerRecipeEditor;
import pers.towdium.justEnoughCalculation.gui.recipeEditor.GuiRecipeEditor;
import pers.towdium.justEnoughCalculation.gui.guis.calculator.ContainerCalculator;
import pers.towdium.justEnoughCalculation.gui.guis.calculator.GuiCalculator;
import pers.towdium.justEnoughCalculation.gui.guis.itemPicker.ContainerItemPicker;
import pers.towdium.justEnoughCalculation.gui.guis.itemPicker.GuiItemPicker;
import pers.towdium.justEnoughCalculation.gui.commom.recipe.ContainerRecipe;
import pers.towdium.justEnoughCalculation.gui.guis.recipeEditor.ContainerRecipeEditor;
import pers.towdium.justEnoughCalculation.gui.guis.recipeEditor.GuiRecipeEditor;
import pers.towdium.justEnoughCalculation.gui.guis.recipePicker.GuiRecipePicker;
/**
* @author Towdium
@@ -18,6 +21,7 @@ public class GuiHandler implements IGuiHandler {
public static final int CALCULATOR = 0;
public static final int ITEM_PICKER = 1;
public static final int RECIPE_EDITOR = 2;
public static final int RECIPE_PICKER = 3;
}
@Override
@@ -30,7 +34,8 @@ public class GuiHandler implements IGuiHandler {
switch (ID) {
case GuiId.CALCULATOR: return new GuiCalculator(new ContainerCalculator(player, player.getHeldItem()));
case GuiId.ITEM_PICKER: return new GuiItemPicker(new ContainerItemPicker());
case GuiId.RECIPE_EDITOR: return new GuiRecipeEditor(new ContainerRecipeEditor(player));
case GuiId.RECIPE_EDITOR: return new GuiRecipeEditor(new ContainerRecipeEditor());
case GuiId.RECIPE_PICKER: return new GuiRecipePicker(new ContainerRecipe());
}
return null;
}
@@ -1,4 +1,4 @@
package pers.towdium.justEnoughCalculation.gui;
package pers.towdium.justEnoughCalculation.gui.commom;
import java.util.ArrayList;
@@ -1,4 +1,4 @@
package pers.towdium.justEnoughCalculation.gui.recipeEditor;
package pers.towdium.justEnoughCalculation.gui.commom.recipe;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
@@ -10,27 +10,25 @@ import pers.towdium.justEnoughCalculation.core.Recipe;
/**
* @author Towdium
*/
public class ContainerRecipeEditor extends Container {
public class ContainerRecipe extends Container {
InventoryRecipeEditor inventoryRecipeEditor;
EntityPlayer player;
InventoryRecipe inventoryRecipe;
public ContainerRecipeEditor(EntityPlayer player){
inventoryRecipeEditor = new InventoryRecipeEditor();
public ContainerRecipe(){
inventoryRecipe = new InventoryRecipe();
int i, left, top;
i = 0; left = 9; top = 9;
for(int a = 0; a < 2; a++){
for(int b =0; b < 2; b++){
addSlotToContainer(new Slot(inventoryRecipeEditor,i+2*a+b,left+b*59,top+a*24));
addSlotToContainer(new Slot(inventoryRecipe,i+2*a+b,left+b*59,top+a*24));
}
}
i = 4; left = 9; top = 69;
for(int a = 0; a < 4; a++){
for(int b =0; b < 3; b++){
addSlotToContainer(new Slot(inventoryRecipeEditor,i+3*a+b,left+b*59,top+a*24));
addSlotToContainer(new Slot(inventoryRecipe,i+3*a+b,left+b*59,top+a*24));
}
}
this.player = player;
}
@Override
@@ -73,10 +71,6 @@ public class ContainerRecipeEditor extends Container {
return null;
}
public EntityPlayer getPlayer() {
return player;
}
public Recipe buildRecipe(){
ItemStack[] output = new ItemStack[4];
boolean flag1 = false, flag2 = false;
@@ -1,4 +1,4 @@
package pers.towdium.justEnoughCalculation.gui.recipeEditor;
package pers.towdium.justEnoughCalculation.gui.commom.recipe;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
@@ -6,27 +6,25 @@ import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.inventory.Slot;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.StatCollector;
import pers.towdium.justEnoughCalculation.JustEnoughCalculation;
import pers.towdium.justEnoughCalculation.core.Recipe;
import pers.towdium.justEnoughCalculation.network.packets.PacketRecipeUpdate;
import java.io.IOException;
/**
* @author Towdium
*/
public class GuiRecipeEditor extends GuiContainer{
GuiScreen parent;
public class GuiRecipe extends GuiContainer{
protected GuiScreen parent;
protected int activeSlot = -1;
public GuiRecipeEditor(ContainerRecipeEditor containerRecipeEditor, GuiScreen parent){
super(containerRecipeEditor);
public GuiRecipe(ContainerRecipe containerRecipe, GuiScreen parent){
super(containerRecipe);
this.parent = parent;
}
public GuiRecipeEditor(ContainerRecipeEditor containerRecipeEditor){
super(containerRecipeEditor);
public GuiRecipe(ContainerRecipe containerRecipe){
super(containerRecipe);
}
@Override
@@ -45,14 +43,12 @@ public class GuiRecipeEditor extends GuiContainer{
buttonList.add(new GuiButton(i+3*a+b, left+b*59, top+a*24, 20, 20, "X"));
}
}
buttonList.add(new GuiButton(16, guiLeft+125, guiTop+7, 44, 20, StatCollector.translateToLocal("gui.recipeEditor.save")));
buttonList.add(new GuiButton(17, guiLeft+125, guiTop+31, 44, 20, StatCollector.translateToLocal("gui.recipeEditor.clear")));
}
@Override
protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) {
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
this.mc.getTextureManager().bindTexture(new ResourceLocation(JustEnoughCalculation.Reference.MODID,"textures/gui/guiRecipeEditor.png"));
this.mc.getTextureManager().bindTexture(new ResourceLocation(JustEnoughCalculation.Reference.MODID,"textures/gui/guiRecipe.png"));
this.drawTexturedModalRect(this.guiLeft, this.guiTop, 0, 0, this.xSize, this.ySize);
if(activeSlot != -1){
Slot slot = inventorySlots.getSlot(activeSlot);
@@ -66,15 +62,6 @@ public class GuiRecipeEditor extends GuiContainer{
if(buttonId <= 15){
Slot slot = inventorySlots.getSlot(buttonId);
slot.inventory.setInventorySlotContents(slot.getSlotIndex(), null);
}else if(buttonId == 16) {
Recipe recipe = ((ContainerRecipeEditor)inventorySlots).buildRecipe();
JustEnoughCalculation.proxy.getPlayerHandler().addRecipe(recipe, null);
JustEnoughCalculation.networkWrapper.sendToServer(new PacketRecipeUpdate(recipe, -1));
mc.displayGuiScreen(parent);
}else if(buttonId == 17) {
for(Slot slot : inventorySlots.inventorySlots){
slot.inventory.setInventorySlotContents(slot.getSlotIndex(), null);
}
}
}
@@ -87,7 +74,7 @@ public class GuiRecipeEditor extends GuiContainer{
Slot slot = getSlotUnderMouse();
if(slot != null && mouseButton == 0 && slot.getStack() == null){
activeSlot = slot.getSlotIndex();
((ContainerRecipeEditor)inventorySlots).getPlayer().playSound("random.click", 1f, 1f );
mc.thePlayer.playSound("random.click", 1f, 1f );
}
}
@@ -107,6 +94,12 @@ public class GuiRecipeEditor extends GuiContainer{
}
}
public void click(int mouseX, int mouseY, int mouseButton){
try {
this.mouseClicked(mouseX, mouseY, mouseButton);
} catch (IOException ignored) {}
}
public int getActiveSlot() {
return activeSlot;
}
@@ -0,0 +1,12 @@
package pers.towdium.justEnoughCalculation.gui.commom.recipe;
import net.minecraft.inventory.InventoryBasic;
/**
* @author Towdium
*/
public class InventoryRecipe extends InventoryBasic {
public InventoryRecipe() {
super("Recipe", false, 16);
}
}
@@ -1,4 +1,4 @@
package pers.towdium.justEnoughCalculation.gui.calculator;
package pers.towdium.justEnoughCalculation.gui.guis.calculator;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
@@ -1,4 +1,4 @@
package pers.towdium.justEnoughCalculation.gui.calculator;
package pers.towdium.justEnoughCalculation.gui.guis.calculator;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
@@ -14,11 +14,9 @@ import net.minecraft.util.StatCollector;
import pers.towdium.justEnoughCalculation.JustEnoughCalculation;
import pers.towdium.justEnoughCalculation.core.Calculator;
import pers.towdium.justEnoughCalculation.core.ItemStackWrapper;
import pers.towdium.justEnoughCalculation.gui.GuiTooltipScreen;
import pers.towdium.justEnoughCalculation.gui.recipeEditor.ContainerRecipeEditor;
import pers.towdium.justEnoughCalculation.gui.recipeEditor.GuiRecipeEditor;
import pers.towdium.justEnoughCalculation.network.PlayerHandlerClient;
import pers.towdium.justEnoughCalculation.network.PlayerHandlerServer;
import pers.towdium.justEnoughCalculation.gui.commom.GuiTooltipScreen;
import pers.towdium.justEnoughCalculation.gui.guis.recipeEditor.ContainerRecipeEditor;
import pers.towdium.justEnoughCalculation.gui.guis.recipeEditor.GuiRecipeEditor;
import pers.towdium.justEnoughCalculation.network.packets.PacketSyncRecord;
import java.io.IOException;
@@ -123,7 +121,7 @@ public class GuiCalculator extends GuiTooltipScreen{
break;
case 2:
JustEnoughCalculation.proxy.getPlayerHandler().syncItemCalculator(inventorySlots.getSlot(0).getStack(), textFieldAmount.getText());
mc.displayGuiScreen(new GuiRecipeEditor(new ContainerRecipeEditor(((ContainerCalculator)inventorySlots).getPlayer()), this));
mc.displayGuiScreen(new GuiRecipeEditor(new ContainerRecipeEditor(), this));
break;
case 6:
switch (mode){
@@ -1,4 +1,4 @@
package pers.towdium.justEnoughCalculation.gui.calculator;
package pers.towdium.justEnoughCalculation.gui.guis.calculator;
import net.minecraft.inventory.InventoryBasic;
import net.minecraft.item.ItemStack;
@@ -1,4 +1,4 @@
package pers.towdium.justEnoughCalculation.gui.itemPicker;
package pers.towdium.justEnoughCalculation.gui.guis.itemPicker;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
@@ -1,4 +1,4 @@
package pers.towdium.justEnoughCalculation.gui.itemPicker;
package pers.towdium.justEnoughCalculation.gui.guis.itemPicker;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiTextField;
@@ -1,4 +1,4 @@
package pers.towdium.justEnoughCalculation.gui.itemPicker;
package pers.towdium.justEnoughCalculation.gui.guis.itemPicker;
import net.minecraft.inventory.InventoryBasic;
@@ -0,0 +1,10 @@
package pers.towdium.justEnoughCalculation.gui.guis.recipeEditor;
import pers.towdium.justEnoughCalculation.gui.commom.recipe.ContainerRecipe;
/**
* @author Towdium
*/
public class ContainerRecipeEditor extends ContainerRecipe {
}
@@ -0,0 +1,55 @@
package pers.towdium.justEnoughCalculation.gui.guis.recipeEditor;
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.inventory.Slot;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.StatCollector;
import pers.towdium.justEnoughCalculation.JustEnoughCalculation;
import pers.towdium.justEnoughCalculation.core.Recipe;
import pers.towdium.justEnoughCalculation.gui.commom.recipe.ContainerRecipe;
import pers.towdium.justEnoughCalculation.gui.commom.recipe.GuiRecipe;
import pers.towdium.justEnoughCalculation.network.packets.PacketRecipeUpdate;
import java.io.IOException;
/**
* @author Towdium
*/
public class GuiRecipeEditor extends GuiRecipe{
public GuiRecipeEditor(ContainerRecipeEditor containerRecipeEditor, GuiScreen parent){
super(containerRecipeEditor, parent);
}
public GuiRecipeEditor(ContainerRecipeEditor containerRecipeEditor){
super(containerRecipeEditor);
}
@Override
public void initGui() {
super.initGui();
buttonList.add(new GuiButton(16, guiLeft+125, guiTop+7, 44, 20, StatCollector.translateToLocal("gui.recipeEditor.save")));
buttonList.add(new GuiButton(17, guiLeft+125, guiTop+31, 44, 20, StatCollector.translateToLocal("gui.recipeEditor.clear")));
}
@Override
protected void actionPerformed(GuiButton button) throws IOException {
super.actionPerformed(button);
int buttonId = button.id;
if(buttonId <= 15){
Slot slot = inventorySlots.getSlot(buttonId);
slot.inventory.setInventorySlotContents(slot.getSlotIndex(), null);
}else if(buttonId == 16) {
Recipe recipe = ((ContainerRecipe)inventorySlots).buildRecipe();
JustEnoughCalculation.proxy.getPlayerHandler().addRecipe(recipe, null);
JustEnoughCalculation.networkWrapper.sendToServer(new PacketRecipeUpdate(recipe, -1));
mc.displayGuiScreen(parent);
}else if(buttonId == 17) {
for(Slot slot : inventorySlots.inventorySlots){
slot.inventory.setInventorySlotContents(slot.getSlotIndex(), null);
}
}
}
}
@@ -0,0 +1,76 @@
package pers.towdium.justEnoughCalculation.gui.guis.recipePicker;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.util.StatCollector;
import pers.towdium.justEnoughCalculation.JustEnoughCalculation;
import pers.towdium.justEnoughCalculation.core.Recipe;
import pers.towdium.justEnoughCalculation.gui.commom.recipe.ContainerRecipe;
import pers.towdium.justEnoughCalculation.gui.commom.recipe.GuiRecipe;
import pers.towdium.justEnoughCalculation.gui.guis.recipeEditor.ContainerRecipeEditor;
import pers.towdium.justEnoughCalculation.gui.guis.recipeEditor.GuiRecipeEditor;
import java.io.IOException;
import java.util.List;
/**
* @author Towdium
*/
public class GuiRecipePicker extends GuiRecipe{
ItemStack dest;
List<Recipe> recipes;
int index;
public GuiRecipePicker(ContainerRecipe containerRecipe, GuiScreen parent){
super(containerRecipe, parent);
}
public GuiRecipePicker(ContainerRecipe containerRecipe){
super(containerRecipe);
}
@Override
public void initGui() {
super.initGui();
buttonList.add(new GuiButton(16, guiLeft+125, guiTop+7, 20, 20, StatCollector.translateToLocal("<")));
buttonList.add(new GuiButton(17, guiLeft+149, guiTop+7, 20, 20, StatCollector.translateToLocal(">")));
buttonList.add(new GuiButton(18, guiLeft+125, guiTop+31, 44, 20, StatCollector.translateToLocal("gui.recipePicker.delete")));
}
@Override
protected void actionPerformed(GuiButton button) throws IOException {
super.actionPerformed(button);
int buttonId = button.id;
if(buttonId == 16) {
if(index>0){
index--;
updateLayout();
}
}else if(buttonId == 17) {
if(index<recipes.size()-1){
index++;
updateLayout();
}
}else if(buttonId == 18) {
JustEnoughCalculation.proxy.getPlayerHandler().removeRecipe(recipes.get(index), null);
mc.displayGuiScreen(parent);
}
}
@Override
protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException {
super.mouseClicked(mouseX, mouseY, mouseButton);
Slot slot = getSlotUnderMouse();
if(slot != null){
GuiRecipeEditor recipeEditor = new GuiRecipeEditor(new ContainerRecipeEditor(), parent);
mc.displayGuiScreen(recipeEditor);
recipeEditor.click(mouseX, mouseY, mouseButton);
recipeEditor.setActiveSlot(slot.getSlotIndex());
}
}
public void updateLayout(){
}
}
@@ -1,15 +0,0 @@
package pers.towdium.justEnoughCalculation.gui.recipeEditor;
import net.minecraft.inventory.InventoryBasic;
/**
* @author Towdium
*/
public class InventoryRecipeEditor extends InventoryBasic {
public InventoryRecipeEditor() {
super("Recipe editor", false, 16);
}
}
@@ -20,7 +20,7 @@ public class ItemCalculator extends Item {
@Override
public ItemStack onItemRightClick(ItemStack itemStackIn, World worldIn, EntityPlayer playerIn) {
playerIn.openGui(JustEnoughCalculation.instance, GuiHandler.GuiId.CALCULATOR, worldIn, 0, 0, 0);
playerIn.openGui(JustEnoughCalculation.instance, GuiHandler.GuiId.RECIPE_PICKER, worldIn, 0, 0, 0);
return itemStackIn;
}
@@ -34,4 +34,8 @@ public interface IPlayerHandler {
void handleLogin(net.minecraftforge.event.entity.player.PlayerEvent.LoadFromFile event);
void handleSave(net.minecraftforge.event.entity.player.PlayerEvent.SaveToFile event);
boolean removeRecipe(Recipe recipe, UUID uuid);
boolean containsRecipe(Recipe recipe, UUID uuid);
}
@@ -143,6 +143,16 @@ public class PlayerHandlerClient implements IPlayerHandler {
}
}
@Override
public boolean removeRecipe(Recipe recipe, UUID uuid) {
return recipes.remove(recipe);
}
@Override
public boolean containsRecipe(Recipe recipe, UUID uuid) {
return recipes.contains(recipe);
}
ImmutableList<int[]> getAllUnsortedRecipeIndexOf(ItemStack itemStack){
ImmutableList.Builder<int[]> builder = new ImmutableList.Builder<>();
int size = recipes.size();
@@ -80,6 +80,16 @@ public class PlayerHandlerServer implements IPlayerHandler {
players.get(UUID.fromString(event.playerUUID)).handleSave(event);
}
@Override
public boolean removeRecipe(Recipe recipe, UUID uuid) {
return false;
}
@Override
public boolean containsRecipe(Recipe recipe, UUID uuid) {
return false;
}
public PlayerHandlerClient getClient(UUID uuid){
return players.get(uuid);
}
@@ -8,7 +8,7 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.item.ItemStack;
import pers.towdium.justEnoughCalculation.core.ItemStackWrapper;
import pers.towdium.justEnoughCalculation.gui.recipeEditor.ContainerRecipeEditor;
import pers.towdium.justEnoughCalculation.gui.guis.recipeEditor.ContainerRecipeEditor;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;