Posted February 5, 20178 yr I have a "recipe" where a player can right click a full cauldron that has 2 entity items in it to create 1 entity item as a product. It consumes 2 gold nuggets and 1 healing potion I or 2 gold ingots and 1 healing potion II. The problem right now is presented below: 2 gold nuggets + 1 healing potion I = 1 healing potion 2 gold ingots + 1 healing potion II = 1 greater healing potion 4 gold nuggets + 1 healing potion I = 2 healing potions 4 gold ingots + 1 healing potion II = 2 greater healing potions 6 gold nuggets + 1 healing potion I = 2 healing potions (remainder of 2 gold nuggets) 6 gold ingots + 1 healing potion II = 2 greater healing potions (remainder of 2 gold ingots) The problematic results are bolded. Code: @SubscribeEvent public void playerInteract(PlayerInteractEvent.RightClickBlock ev) { EntityPlayer p = ev.getEntityPlayer(); if(!p.world.isRemote) { if(p.world.getBlockState(ev.getPos()).getBlock() == Blocks.CAULDRON) { if(p.world.getBlockState(ev.getPos()).getValue(BlockCauldron.LEVEL).intValue() == 3) { if(p.getHeldItemMainhand().getItem() == Items.STICK) { List<EntityItem> entities = p.world.getEntitiesWithinAABB(EntityItem.class, new AxisAlignedBB(ev.getPos())); EntityItem goldNE = null, goldE = null, potion1E = null, potion2E = null; for(EntityItem ei : entities) { ItemStack is = ei.getEntityItem(); Item i = is.getItem(); if(i == Items.GOLD_NUGGET) { if(is.getCount() >= 2) { goldNE = ei; } } else if(i == Items.GOLD_INGOT) { if(is.getCount() >= 2) { goldE = ei; } } else if(i == Items.POTIONITEM) { ItemPotion pot = (ItemPotion) i; List<PotionEffect> effects = PotionUtils.getEffectsFromStack(is); for(PotionEffect eff : effects) { if(eff.getPotion() == Potion.getPotionById(6)) { //TODO: make config to change instant health potion ID if(eff.getAmplifier() == 0) { potion1E = ei; } else if(eff.getAmplifier() == 1) { potion2E = ei; } } } } } if(goldNE != null && potion1E != null) { goldNE.getEntityItem().shrink(2); EntityItem newPot = new EntityItem(p.world, potion1E.posX, potion1E.posY, potion1E.posZ, new ItemStack(QuickConsume.healing_potion, 1)); //PRODUCT 1 p.world.spawnEntity(newPot); p.world.removeEntity(potion1E); return; } if(goldE != null && potion2E != null) { goldE.getEntityItem().shrink(2); EntityItem newPot = new EntityItem(p.world, potion2E.posX, potion2E.posY, potion2E.posZ, new ItemStack(QuickConsume.greater_healing_potion, 1)); //PRODUCT 2 p.world.spawnEntity(newPot); p.world.removeEntity(potion2E); return; } } } } } } Kain
February 5, 20178 yr I believe this event that you are basing this on, fires once for each side (Server, Client) & once for each hand (Left, Right) the player has. As such, there are a maximum of 4 different outcomes (Server, Left)...(Client, Right) that can happen. Also previously known as eAndPi. "Pi, is there a station coming up where we can board your train of thought?" -Kronnn Published Mods: Underworld Handy links: Vic_'s Forge events Own WIP Tutorials.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.