Jump to content

Create a Cauldron Thingy That Takes items and outputs results.


EmeraldJelly

Recommended Posts

CauldronRecipe(List<Item> items, ItemStack output) 

See that list? You are currently throwing it in the garbage can.

    for (int i = 0; i < itemStacks.size(); i++) {
        for (ItemStack itemstack1 : itemStacks) {

See these two loops? They iterate over the same items. They will always match. You need to get the first list (from the constructor) into the second loop.

Edited by Draco18s

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

  • Replies 67
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

private ItemStack resultItem = ItemStack.EMPTY;
List<ItemStack> items = new ArrayList<ItemStack>();

public CauldronRecipe(List<ItemStack> items, ItemStack output) {
   this.resultItem = output;
   this.items = items;
}

 

 

for (int i = 0; i < itemStacks.size(); i++) {
    ItemStack itemstack = itemStacks.get(i);
    if (itemstack != ItemStack.EMPTY) {
        boolean flag = false;

        for (ItemStack itemstack1 : this.items) {

 

Like that? Where do I check for matching now, like when I throw the items in and get the list what class of mine (and how) do I check if it matches..

Edited by EmeraldJelly
Link to comment
Share on other sites

Well, you need to make sure that your matches method isn't modifying the recipe.

You can do this by cloning the list that has items removed from it, and removing from the clone.

Edited by Draco18s

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

That does not answer my question.. The list is a public static final. Final's cannot be modified.

 

2 hours ago, EmeraldJelly said:

Like that? Where do I check for matching now, like when I throw the items in and get the list what class of mine (and how) do I check if it matches..

 

Edited by EmeraldJelly
Link to comment
Share on other sites

29 minutes ago, EmeraldJelly said:

That does not answer my question.. The list is a public static final. Final's cannot be modified.

 

 

You were advised to clone the list.  Therefore, don't make the new list public static final.

Link to comment
Share on other sites

ok then I wont, but that still doesn't answer my question. Considered it cloned and non final. But still.

 

 

Here is everything I have. Rather then giving me bits and pieces in many different replies of small tiny things I got wrong, I kindly ask for you to tell me what and where I need to put specific things to get this all to work together nicely.

 

Recipe List Class

Spoiler

package emeraldjelly.mystica.util.recipe.cauldron;

import emeraldjelly.mystica.init.ModItems;
import emeraldjelly.mystica.util.recipe.recipetypes.CauldronRecipe;
import net.minecraft.item.ItemStack;

import java.util.ArrayList;
import java.util.Arrays;

public class CauldronRecipes {

    public static CauldronRecipe EMPTYLACRIMA = new CauldronRecipe(new ArrayList<ItemStack>
            (Arrays.asList(new ItemStack(ModItems.LACRIMITESHARDS), new ItemStack(ModItems.LACRIMITESHARDS))), new ItemStack(ModItems.LACRIMITESHARDS));
}

 

 

Recipe Class

Spoiler

package emeraldjelly.mystica.util.recipe.recipetypes;
;
import emeraldjelly.mystica.api.ICauldronRecipe;
import emeraldjelly.mystica.init.ModItems;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.OreDictionary;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


public class CauldronRecipe implements ICauldronRecipe { //What am  Missing in this class? Where do I make all of this code happen?

    private ItemStack resultItem = ItemStack.EMPTY;
    List<ItemStack> items = new ArrayList<ItemStack>();

    public CauldronRecipe(List<ItemStack> items, ItemStack output) {
       this.resultItem = output;
       this.items = items;
    }

    @Override
    public boolean matches(List<ItemStack> itemStacks) {
        List<ItemStack> items1 = items;
        for (int i = 0; i < itemStacks.size(); i++) {
            ItemStack itemstack = itemStacks.get(i);
            if (itemstack != ItemStack.EMPTY) {
                boolean flag = false;
                for (ItemStack itemstack1 : items1) {
                    if (!itemstack.hasTagCompound() && itemstack.getItem() == itemstack1.getItem() && (
                            itemstack1.getMetadata() == OreDictionary.WILDCARD_VALUE ||
                                    itemstack.getMetadata() == itemstack1.getMetadata())) {
                        flag = true;
                        itemStacks.remove(itemstack1);
                        break;
                    }
                }
                if (!flag) {
                    return false;
                }
            }
        }
        return itemStacks.isEmpty();
    }

    @Override
    public ItemStack getCraftingResult() {
        return resultItem;
    }
}

 

 

TileEntity Class

Spoiler

package emeraldjelly.mystica.blocks.tileentity;
import emeraldjelly.mystica.util.recipe.recipetypes.CauldronRecipe;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetworkManager;
import net.minecraft.network.play.server.SPacketUpdateTileEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EntitySelectors;
import net.minecraft.util.ITickable;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.world.World;
import net.minecraftforge.items.ItemStackHandler;

import java.util.ArrayList;
import java.util.List;

public class TileEntitySorcerersCauldron extends TileEntity implements ITickable { //Do i need to Implement anything else?

    public static AxisAlignedBB AABB = new AxisAlignedBB(0, 0, 0, 1, 1.2D, 1);
    static List<ItemStack> items = new ArrayList<>();

    private int cooldown;
    private ItemStackHandler handler;

    public TileEntitySorcerersCauldron() {
        this.cooldown = 0;
        this.handler = new ItemStackHandler(5);
    }

    @Override
    public NBTTagCompound writeToNBT(NBTTagCompound compound) {
        compound.setInteger("Cooldown", this.cooldown);
        compound.setTag("ItemStackHandler", this.handler.serializeNBT());
        return super.writeToNBT(compound);
    }

    @Override
    public void readFromNBT(NBTTagCompound compound) {
        this.cooldown = compound.getInteger("Cooldown");
        this.handler.deserializeNBT(compound.getCompoundTag("ItemStackHandler"));
        super.readFromNBT(compound);
    }

    @Override
    public void update() {
        this.cooldown++;
        this.cooldown %= 100;

        populateCauldronList(getCaptureItems(world));
    }

    public  List<EntityItem> getCaptureItems(World worldIn) {
        return worldIn.<EntityItem>getEntitiesWithinAABB(EntityItem.class, AABB, EntitySelectors.IS_ALIVE);
    }

    public void populateCauldronList(List<EntityItem> entityItems) {
        for (int i = 0; i < entityItems.size(); i++) {
           items.add(new ItemStack(entityItems.get(i).getItem().getItem()));
        }
        checkAndCraft(items);
    }

    public void checkAndCraft(List<ItemStack> itemsList) {

    }

    @Override
    public SPacketUpdateTileEntity getUpdatePacket() {
        NBTTagCompound nbt = new NBTTagCompound();
        this.writeToNBT(nbt);
        int metadata = getBlockMetadata();
        return new SPacketUpdateTileEntity(this.pos, metadata, nbt);
    }

    @Override
    public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) {
        this.readFromNBT(pkt.getNbtCompound());
    }

    @Override
    public NBTTagCompound getUpdateTag() {
        NBTTagCompound nbt = new NBTTagCompound();
        this.writeToNBT(nbt);
        return nbt;
    }

    @Override
    public void handleUpdateTag(NBTTagCompound tag) {
        this.readFromNBT(tag);
    }

    @Override
    public NBTTagCompound getTileData() {
        NBTTagCompound nbt = new NBTTagCompound();
        this.writeToNBT(nbt);
        return nbt;
    }
}

 

 

 

Edited by EmeraldJelly
Link to comment
Share on other sites

static wasn't an appropriate keyword anyway. You want the list to be per recipe.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

Post your current code and describe the problem that is still affecting you. I also recommend using the debugger.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

I stopped reading when I hit matches with variables:  itemstack, itemStacks, itemstack1.  None of these are descriptive.  Slightly better than 11l1ll11, 1ll1l11l and 11llll1l1.

If you are confused, it would help to unconfuse by rewriting the code so that it made sense.  Variables like "flag" don't help.

 

I believe I recognize the Furnace here, but that was obfuscated code to begin with.

Link to comment
Share on other sites

15 minutes ago, jhdoran said:

I stopped reading when I hit matches with variables:  itemstack, itemStacks, itemstack1.  None of these are descriptive.  Slightly better than 11l1ll11, 1ll1l11l and 11llll1l1.

If you are confused, it would help to unconfuse by rewriting the code so that it made sense.  Variables like "flag" don't help.

 

I believe I recognize the Furnace here, but that was obfuscated code to begin with.

Uh there is no Furnace involved... And 

 

31 minutes ago, Draco18s said:

Post your current code and describe the problem that is still affecting you. I also recommend using the debugger.

 

 

My current code is the one I posted above...

1 hour ago, EmeraldJelly said:

ok then I wont, but that still doesn't answer my question. Considered it cloned and non final. But still.

 

 

Here is everything I have. Rather then giving me bits and pieces in many different replies of small tiny things I got wrong, I kindly ask for you to tell me what and where I need to put specific things to get this all to work together nicely.

 

Recipe List Class

  Reveal hidden contents


package emeraldjelly.mystica.util.recipe.cauldron;

import emeraldjelly.mystica.init.ModItems;
import emeraldjelly.mystica.util.recipe.recipetypes.CauldronRecipe;
import net.minecraft.item.ItemStack;

import java.util.ArrayList;
import java.util.Arrays;

public class CauldronRecipes {

    public static CauldronRecipe EMPTYLACRIMA = new CauldronRecipe(new ArrayList<ItemStack>
            (Arrays.asList(new ItemStack(ModItems.LACRIMITESHARDS), new ItemStack(ModItems.LACRIMITESHARDS))), new ItemStack(ModItems.LACRIMITESHARDS));
}

 

 

Recipe Class

  Reveal hidden contents


package emeraldjelly.mystica.util.recipe.recipetypes;
;
import emeraldjelly.mystica.api.ICauldronRecipe;
import emeraldjelly.mystica.init.ModItems;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.OreDictionary;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


public class CauldronRecipe implements ICauldronRecipe { //What am  Missing in this class? Where do I make all of this code happen?

    private ItemStack resultItem = ItemStack.EMPTY;
    List<ItemStack> items = new ArrayList<ItemStack>();

    public CauldronRecipe(List<ItemStack> items, ItemStack output) {
       this.resultItem = output;
       this.items = items;
    }

    @Override
    public boolean matches(List<ItemStack> itemStacks) {
        List<ItemStack> items1 = items;
        for (int i = 0; i < itemStacks.size(); i++) {
            ItemStack itemstack = itemStacks.get(i);
            if (itemstack != ItemStack.EMPTY) {
                boolean flag = false;
                for (ItemStack itemstack1 : items1) {
                    if (!itemstack.hasTagCompound() && itemstack.getItem() == itemstack1.getItem() && (
                            itemstack1.getMetadata() == OreDictionary.WILDCARD_VALUE ||
                                    itemstack.getMetadata() == itemstack1.getMetadata())) {
                        flag = true;
                        itemStacks.remove(itemstack1);
                        break;
                    }
                }
                if (!flag) {
                    return false;
                }
            }
        }
        return itemStacks.isEmpty();
    }

    @Override
    public ItemStack getCraftingResult() {
        return resultItem;
    }
}

 

 

TileEntity Class

  Reveal hidden contents


package emeraldjelly.mystica.blocks.tileentity;
import emeraldjelly.mystica.util.recipe.recipetypes.CauldronRecipe;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetworkManager;
import net.minecraft.network.play.server.SPacketUpdateTileEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EntitySelectors;
import net.minecraft.util.ITickable;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.world.World;
import net.minecraftforge.items.ItemStackHandler;

import java.util.ArrayList;
import java.util.List;

public class TileEntitySorcerersCauldron extends TileEntity implements ITickable { //Do i need to Implement anything else?

    public static AxisAlignedBB AABB = new AxisAlignedBB(0, 0, 0, 1, 1.2D, 1);
    static List<ItemStack> items = new ArrayList<>();

    private int cooldown;
    private ItemStackHandler handler;

    public TileEntitySorcerersCauldron() {
        this.cooldown = 0;
        this.handler = new ItemStackHandler(5);
    }

    @Override
    public NBTTagCompound writeToNBT(NBTTagCompound compound) {
        compound.setInteger("Cooldown", this.cooldown);
        compound.setTag("ItemStackHandler", this.handler.serializeNBT());
        return super.writeToNBT(compound);
    }

    @Override
    public void readFromNBT(NBTTagCompound compound) {
        this.cooldown = compound.getInteger("Cooldown");
        this.handler.deserializeNBT(compound.getCompoundTag("ItemStackHandler"));
        super.readFromNBT(compound);
    }

    @Override
    public void update() {
        this.cooldown++;
        this.cooldown %= 100;

        populateCauldronList(getCaptureItems(world));
    }

    public  List<EntityItem> getCaptureItems(World worldIn) {
        return worldIn.<EntityItem>getEntitiesWithinAABB(EntityItem.class, AABB, EntitySelectors.IS_ALIVE);
    }

    public void populateCauldronList(List<EntityItem> entityItems) {
        for (int i = 0; i < entityItems.size(); i++) {
           items.add(new ItemStack(entityItems.get(i).getItem().getItem()));
        }
        checkAndCraft(items);
    }

    public void checkAndCraft(List<ItemStack> itemsList) {

    }

    @Override
    public SPacketUpdateTileEntity getUpdatePacket() {
        NBTTagCompound nbt = new NBTTagCompound();
        this.writeToNBT(nbt);
        int metadata = getBlockMetadata();
        return new SPacketUpdateTileEntity(this.pos, metadata, nbt);
    }

    @Override
    public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) {
        this.readFromNBT(pkt.getNbtCompound());
    }

    @Override
    public NBTTagCompound getUpdateTag() {
        NBTTagCompound nbt = new NBTTagCompound();
        this.writeToNBT(nbt);
        return nbt;
    }

    @Override
    public void handleUpdateTag(NBTTagCompound tag) {
        this.readFromNBT(tag);
    }

    @Override
    public NBTTagCompound getTileData() {
        NBTTagCompound nbt = new NBTTagCompound();
        this.writeToNBT(nbt);
        return nbt;
    }
}

 

 

 

 

MY PROBLEM IS AS FOLLOWS:

 

I want to know how the HELL I can get check to see if the items picked up by the cauldron matches using the matches code FROM the TileEntity class. Inputting the list of items put in FROM the getCapturedItems method, and outputting and spawning in the world the correct output correlating to the recipe that it matches...

 

I will describe the steps I want to take, please tell me how to take them.

(ALL WITHIN THE TILEENTITY CLASS)

Step 1: put dropped items into a list.

Step 2: check to see if those items match any recipes.

Step 3: grab that recipes output.

Step 4: spawn the output into the world.

Step 5: clear the list of dropped items.

Edited by EmeraldJelly
Link to comment
Share on other sites

15 minutes ago, EmeraldJelly said:

I want to know how the HELL I can get check to see if the items picked up by the cauldron matches using the matches code FROM the TileEntity class.

The TE passes a list of item stacks (its contents) to the recipe's matches method. That method compares the contents as I originally described.

15 minutes ago, EmeraldJelly said:

Inputting the list of items put in FROM the getCapturedItems method, and outputting and spawning in the world the correct output correlating to the recipe that it matches...

Captured Drops should be stored in an ItemStackHandler inventory.

 

15 minutes ago, EmeraldJelly said:

Step 1: put dropped items into a list.

Step 2: check to see if those items match any recipes.

Step 3: grab that recipes output.

Step 4: spawn the output into the world.

Step 5: clear the list of dropped items.

1. ItemStackHandler as any other inventory. Creating a list from this should not in any way require my help. It's basic Java

2. See above.

3. For each recipe, does it match, if so, get that recipe's output. You will already have a reference to the recipe in order to check matches, just use that same reference.

4. new EntityItem(...); entity.spawnInWorld(...)

5. If the recipe matches, remove its recipe inputs from the TE's inventory

Edited by Draco18s

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

1 minute ago, Draco18s said:

The TE passes a list of item stacks (its contents) to the recipe's matches method. That method compares the contents as I originally described.

Captured Drops should be stored in an ItemStackHandler inventory.

 

1. ItemStackHandler as any other inventory. Creating a list from this should not in any way require my help. It's basic Java

2. See above.

3. For each recipe, does it match, if so, get that recipe's output. You will already have a reference to the recipe in order to check matches, just use that same reference.

4. new EntityItem(); entity.spawnInWorld()

5. If the recipe matches, remove its recipe inputs from the TE's inventory

 

 

This ALL makes sense to me now just 1 missing piece of the puzzle. How do I make the TE communicate with the Recipe class? Because it flat out wont let me call matches from the TE class. And I cannot extend more then 1 thing. 

Link to comment
Share on other sites

That's what CaudronRecipes is for. It should contain a list of all ICauldronRecipe instances.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

I have a class like this for one of my "machines":

https://github.com/Draco18s/ReasonableRealism/blob/1.12.1/src/main/java/com/draco18s/ores/recipes/OreProcessingRecipes.java

(Actually, three machines)

Edited by Draco18s

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

and which one of your tile entities uses that? All im asking is what LINE of code do I use to get my TileEntity to send that information over to the recipe classes and in return get a true or false for match and the output item. Where do I put that.

Edited by EmeraldJelly
Link to comment
Share on other sites

I use a library API reference. But your CauldronRecipes class can just contain a static reference to the list of ICauldronRecipe instances.

https://github.com/Draco18s/ReasonableRealism/blob/1.12.1/src/main/java/com/draco18s/ores/entities/TileEntitySifter.java#L91

static.PNG

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

In your TE:

 

CauldronRecipes.getResult(myItems)

 

1 hour ago, Draco18s said:

It should contain a list of all ICauldronRecipe instances.

1 hour ago, Draco18s said:

3. For each recipe, does it match, if so, get that recipe's output. You will already have a reference to the recipe in order to check matches, just use that same reference.

 

In CauldronRecipes:

public static ItemStack getResult(List<ItemStack> items) {
    foreach(ICauldronRecipe recipe in RECIPES) {
      if(recipe.matches(items)) {
        //do stuff
      }
    }
}

 

 

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

Oml.. I think that is it LOL Here ill send you my final code and you can tell me if there is anything I missed but I dont think so THANK YOU, YOU ARE A GOD XD!!! (Oh also I think my getCaptureEntities Method is flawed, what do I do there XD)

 

TileEntity

Spoiler

package emeraldjelly.mystica.blocks.tileentity;
import emeraldjelly.mystica.api.ICauldronRecipe;
import emeraldjelly.mystica.util.recipe.cauldron.CauldronRecipes;
import emeraldjelly.mystica.util.recipe.recipetypes.CauldronRecipe;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetworkManager;
import net.minecraft.network.play.server.SPacketUpdateTileEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EntitySelectors;
import net.minecraft.util.ITickable;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.world.World;
import net.minecraftforge.items.ItemStackHandler;

import java.util.ArrayList;
import java.util.List;

public class TileEntitySorcerersCauldron extends TileEntity implements ITickable { //Do i need to Implement anything else?

    public static AxisAlignedBB AABB = new AxisAlignedBB(0, 0, 0, 1, 1.2D, 1);
    static List<ItemStack> items = new ArrayList<>();

    private int cooldown;
    private ItemStackHandler handler;

    public TileEntitySorcerersCauldron() {
        this.cooldown = 0;
        this.handler = new ItemStackHandler(5);
    }

    @Override
    public NBTTagCompound writeToNBT(NBTTagCompound compound) {
        compound.setInteger("Cooldown", this.cooldown);
        compound.setTag("ItemStackHandler", this.handler.serializeNBT());
        return super.writeToNBT(compound);
    }

    @Override
    public void readFromNBT(NBTTagCompound compound) {
        this.cooldown = compound.getInteger("Cooldown");
        this.handler.deserializeNBT(compound.getCompoundTag("ItemStackHandler"));
        super.readFromNBT(compound);
    }

    @Override
    public void update() {
        this.cooldown++;
        this.cooldown %= 100;

        populateCauldronList(getCaptureItems(world));
    }

    public  List<EntityItem> getCaptureItems(World worldIn) {
        return worldIn.<EntityItem>getEntitiesWithinAABB(EntityItem.class, AABB, EntitySelectors.IS_ALIVE);
    }

    public void populateCauldronList(List<EntityItem> entityItems) {
        for (int i = 0; i < entityItems.size(); i++) {
           items.add(new ItemStack(entityItems.get(i).getItem().getItem()));
        }
        checkAndCraft(items);
    }

    public void checkAndCraft(List<ItemStack> itemsList) {
        EntityItem entityItem = new EntityItem(world, pos.getX(), pos.getY(), pos.getZ(), CauldronRecipes.getResult(items));
    }

    @Override
    public SPacketUpdateTileEntity getUpdatePacket() {
        NBTTagCompound nbt = new NBTTagCompound();
        this.writeToNBT(nbt);
        int metadata = getBlockMetadata();
        return new SPacketUpdateTileEntity(this.pos, metadata, nbt);
    }

    @Override
    public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) {
        this.readFromNBT(pkt.getNbtCompound());
    }

    @Override
    public NBTTagCompound getUpdateTag() {
        NBTTagCompound nbt = new NBTTagCompound();
        this.writeToNBT(nbt);
        return nbt;
    }

    @Override
    public void handleUpdateTag(NBTTagCompound tag) {
        this.readFromNBT(tag);
    }

    @Override
    public NBTTagCompound getTileData() {
        NBTTagCompound nbt = new NBTTagCompound();
        this.writeToNBT(nbt);
        return nbt;
    }
}

 

 

CauldronRecipes

Spoiler

package emeraldjelly.mystica.util.recipe.cauldron;

import emeraldjelly.mystica.api.ICauldronRecipe;
import emeraldjelly.mystica.init.ModItems;
import emeraldjelly.mystica.util.recipe.recipetypes.CauldronRecipe;
import net.minecraft.item.ItemStack;
import paulscode.sound.ICodec;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class CauldronRecipes {

    public static void init() {
        RECIPES.add(EMPTYLACRIMA);
    }

    public static List<ICauldronRecipe> RECIPES = new ArrayList<ICauldronRecipe>();

    public static final CauldronRecipe EMPTYLACRIMA = new CauldronRecipe(new ArrayList<ItemStack>
            (Arrays.asList(new ItemStack(ModItems.LACRIMITESHARDS), new ItemStack(ModItems.LACRIMITESHARDS))), new ItemStack(ModItems.LACRIMITESHARDS));


    public static ItemStack getResult(List<ItemStack> items) {
        for (ICauldronRecipe recipe : RECIPES) {
            if (recipe.matches(items)) {
                return recipe.getCraftingResult();
            }
        }
        return null;
    }



}

 

CauldronRecipe

Spoiler

package emeraldjelly.mystica.util.recipe.recipetypes;
;
import emeraldjelly.mystica.api.ICauldronRecipe;
import emeraldjelly.mystica.init.ModItems;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.OreDictionary;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


public class CauldronRecipe implements ICauldronRecipe { //What am  Missing in this class? Where do I make all of this code happen?

    static public ItemStack resultItem = ItemStack.EMPTY;
    static List<ItemStack> items = new ArrayList<ItemStack>();

    public  CauldronRecipe(List<ItemStack> items, ItemStack output) {
       this.resultItem = output;
       this.items = items;
    }

    @Override
    public boolean matches(List<ItemStack> itemStacks) {
        List<ItemStack> items1 = items;
        for (int i = 0; i < itemStacks.size(); i++) {
            ItemStack itemstack = itemStacks.get(i);
            if (itemstack != ItemStack.EMPTY) {
                boolean flag = false;
                for (ItemStack itemstack1 : items1) {
                    if (!itemstack.hasTagCompound() && itemstack.getItem() == itemstack1.getItem() && (
                            itemstack1.getMetadata() == OreDictionary.WILDCARD_VALUE ||
                                    itemstack.getMetadata() == itemstack1.getMetadata())) {
                        flag = true;
                        itemStacks.remove(itemstack1);
                        break;
                    }
                }
                if (!flag) {
                    return false;
                }
            }
        }
        return itemStacks.isEmpty();
    }

    @Override
    public ItemStack getCraftingResult() {
        return resultItem;
    }
}

 

ICauldronRecipe

Spoiler

package emeraldjelly.mystica.api;

import net.minecraft.item.ItemStack;

import java.util.List;

public interface ICauldronRecipe {
    /**
     * Used to check if a recipe matches current crafting inventory
     */
    boolean matches(List<ItemStack> itemStacks);


    /**
     * Returns an Item that is the result of this recipe
     */
    ItemStack getCraftingResult();
}

 

Edited by EmeraldJelly
Link to comment
Share on other sites

19 hours ago, EmeraldJelly said:

Oml.. I think that is it LOL Here ill send you my final code and you can tell me if there is anything I missed but I dont think so THANK YOU, YOU ARE A GOD XD!!! (Oh also I think my getCaptureEntities Method is flawed, what do I do there XD)

 

TileEntity

  Reveal hidden contents


package emeraldjelly.mystica.blocks.tileentity;
import emeraldjelly.mystica.api.ICauldronRecipe;
import emeraldjelly.mystica.util.recipe.cauldron.CauldronRecipes;
import emeraldjelly.mystica.util.recipe.recipetypes.CauldronRecipe;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetworkManager;
import net.minecraft.network.play.server.SPacketUpdateTileEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EntitySelectors;
import net.minecraft.util.ITickable;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.world.World;
import net.minecraftforge.items.ItemStackHandler;

import java.util.ArrayList;
import java.util.List;

public class TileEntitySorcerersCauldron extends TileEntity implements ITickable { //Do i need to Implement anything else?

    public static AxisAlignedBB AABB = new AxisAlignedBB(0, 0, 0, 1, 1.2D, 1);
    static List<ItemStack> items = new ArrayList<>();

    private int cooldown;
    private ItemStackHandler handler;

    public TileEntitySorcerersCauldron() {
        this.cooldown = 0;
        this.handler = new ItemStackHandler(5);
    }

    @Override
    public NBTTagCompound writeToNBT(NBTTagCompound compound) {
        compound.setInteger("Cooldown", this.cooldown);
        compound.setTag("ItemStackHandler", this.handler.serializeNBT());
        return super.writeToNBT(compound);
    }

    @Override
    public void readFromNBT(NBTTagCompound compound) {
        this.cooldown = compound.getInteger("Cooldown");
        this.handler.deserializeNBT(compound.getCompoundTag("ItemStackHandler"));
        super.readFromNBT(compound);
    }

    @Override
    public void update() {
        this.cooldown++;
        this.cooldown %= 100;

        populateCauldronList(getCaptureItems(world));
    }

    public  List<EntityItem> getCaptureItems(World worldIn) {
        return worldIn.<EntityItem>getEntitiesWithinAABB(EntityItem.class, AABB, EntitySelectors.IS_ALIVE);
    }

    public void populateCauldronList(List<EntityItem> entityItems) {
        for (int i = 0; i < entityItems.size(); i++) {
           items.add(new ItemStack(entityItems.get(i).getItem().getItem()));
        }
        checkAndCraft(items);
    }

    public void checkAndCraft(List<ItemStack> itemsList) {
        EntityItem entityItem = new EntityItem(world, pos.getX(), pos.getY(), pos.getZ(), CauldronRecipes.getResult(items));
    }

    @Override
    public SPacketUpdateTileEntity getUpdatePacket() {
        NBTTagCompound nbt = new NBTTagCompound();
        this.writeToNBT(nbt);
        int metadata = getBlockMetadata();
        return new SPacketUpdateTileEntity(this.pos, metadata, nbt);
    }

    @Override
    public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) {
        this.readFromNBT(pkt.getNbtCompound());
    }

    @Override
    public NBTTagCompound getUpdateTag() {
        NBTTagCompound nbt = new NBTTagCompound();
        this.writeToNBT(nbt);
        return nbt;
    }

    @Override
    public void handleUpdateTag(NBTTagCompound tag) {
        this.readFromNBT(tag);
    }

    @Override
    public NBTTagCompound getTileData() {
        NBTTagCompound nbt = new NBTTagCompound();
        this.writeToNBT(nbt);
        return nbt;
    }
}

 

 

CauldronRecipes

  Reveal hidden contents


package emeraldjelly.mystica.util.recipe.cauldron;

import emeraldjelly.mystica.api.ICauldronRecipe;
import emeraldjelly.mystica.init.ModItems;
import emeraldjelly.mystica.util.recipe.recipetypes.CauldronRecipe;
import net.minecraft.item.ItemStack;
import paulscode.sound.ICodec;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class CauldronRecipes {

    public static void init() {
        RECIPES.add(EMPTYLACRIMA);
    }

    public static List<ICauldronRecipe> RECIPES = new ArrayList<ICauldronRecipe>();

    public static final CauldronRecipe EMPTYLACRIMA = new CauldronRecipe(new ArrayList<ItemStack>
            (Arrays.asList(new ItemStack(ModItems.LACRIMITESHARDS), new ItemStack(ModItems.LACRIMITESHARDS))), new ItemStack(ModItems.LACRIMITESHARDS));


    public static ItemStack getResult(List<ItemStack> items) {
        for (ICauldronRecipe recipe : RECIPES) {
            if (recipe.matches(items)) {
                return recipe.getCraftingResult();
            }
        }
        return null;
    }



}

 

CauldronRecipe

  Reveal hidden contents


package emeraldjelly.mystica.util.recipe.recipetypes;
;
import emeraldjelly.mystica.api.ICauldronRecipe;
import emeraldjelly.mystica.init.ModItems;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.OreDictionary;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


public class CauldronRecipe implements ICauldronRecipe { //What am  Missing in this class? Where do I make all of this code happen?

    static public ItemStack resultItem = ItemStack.EMPTY;
    static List<ItemStack> items = new ArrayList<ItemStack>();

    public  CauldronRecipe(List<ItemStack> items, ItemStack output) {
       this.resultItem = output;
       this.items = items;
    }

    @Override
    public boolean matches(List<ItemStack> itemStacks) {
        List<ItemStack> items1 = items;
        for (int i = 0; i < itemStacks.size(); i++) {
            ItemStack itemstack = itemStacks.get(i);
            if (itemstack != ItemStack.EMPTY) {
                boolean flag = false;
                for (ItemStack itemstack1 : items1) {
                    if (!itemstack.hasTagCompound() && itemstack.getItem() == itemstack1.getItem() && (
                            itemstack1.getMetadata() == OreDictionary.WILDCARD_VALUE ||
                                    itemstack.getMetadata() == itemstack1.getMetadata())) {
                        flag = true;
                        itemStacks.remove(itemstack1);
                        break;
                    }
                }
                if (!flag) {
                    return false;
                }
            }
        }
        return itemStacks.isEmpty();
    }

    @Override
    public ItemStack getCraftingResult() {
        return resultItem;
    }
}

 

ICauldronRecipe

  Reveal hidden contents


package emeraldjelly.mystica.api;

import net.minecraft.item.ItemStack;

import java.util.List;

public interface ICauldronRecipe {
    /**
     * Used to check if a recipe matches current crafting inventory
     */
    boolean matches(List<ItemStack> itemStacks);


    /**
     * Returns an Item that is the result of this recipe
     */
    ItemStack getCraftingResult();
}

 

 

 

It Crashes my game......

 

Spoiler

[17:54:28] [main/FATAL] [net.minecraft.client.Minecraft]: Reported exception thrown!
net.minecraft.util.ReportedException: Colliding entity with block
    at net.minecraft.world.World.updateEntities(World.java:1942) ~[World.class:?]
    at net.minecraft.client.Minecraft.runTick(Minecraft.java:1972) ~[Minecraft.class:?]
    at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1186) ~[Minecraft.class:?]
    at net.minecraft.client.Minecraft.run(Minecraft.java:441) [Minecraft.class:?]
    at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_151]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_151]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_151]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_151]
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_151]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_151]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_151]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_151]
    at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    at GradleStart.main(GradleStart.java:25) [start/:?]
Caused by: java.lang.NullPointerException
    at net.minecraft.entity.item.EntityItem.<init>(EntityItem.java:66) ~[EntityItem.class:?]
    at emeraldjelly.mystica.blocks.tileentity.TileEntitySorcerersCauldron.checkAndCraft(TileEntitySorcerersCauldron.java:65) ~[TileEntitySorcerersCauldron.class:?]
    at emeraldjelly.mystica.blocks.tileentity.TileEntitySorcerersCauldron.onCollideAddItems(TileEntitySorcerersCauldron.java:58) ~[TileEntitySorcerersCauldron.class:?]
    at emeraldjelly.mystica.blocks.SorcerersCauldron.onEntityCollidedWithBlock(SorcerersCauldron.java:43) ~[SorcerersCauldron.class:?]
    at net.minecraft.entity.Entity.doBlockCollisions(Entity.java:1152) ~[Entity.class:?]
    at net.minecraft.entity.Entity.move(Entity.java:1070) ~[Entity.class:?]
    at net.minecraft.entity.item.EntityItem.onUpdate(EntityItem.java:132) ~[EntityItem.class:?]
    at net.minecraft.world.World.updateEntityWithOptionalForce(World.java:2168) ~[World.class:?]
    at net.minecraft.world.World.updateEntity(World.java:2127) ~[World.class:?]
    at net.minecraft.world.World.updateEntities(World.java:1928) ~[World.class:?]
    ... 16 more
[17:54:28] [main/INFO] [STDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:629]: ---- Minecraft Crash Report ----
// Ouch. That hurt :(

Time: 4/5/18 5:54 PM
Description: Colliding entity with block

java.lang.NullPointerException: Colliding entity with block
    at net.minecraft.entity.item.EntityItem.<init>(EntityItem.java:66)
    at emeraldjelly.mystica.blocks.tileentity.TileEntitySorcerersCauldron.checkAndCraft(TileEntitySorcerersCauldron.java:65)
    at emeraldjelly.mystica.blocks.tileentity.TileEntitySorcerersCauldron.onCollideAddItems(TileEntitySorcerersCauldron.java:58)
    at emeraldjelly.mystica.blocks.SorcerersCauldron.onEntityCollidedWithBlock(SorcerersCauldron.java:43)
    at net.minecraft.entity.Entity.doBlockCollisions(Entity.java:1152)
    at net.minecraft.entity.Entity.move(Entity.java:1070)
    at net.minecraft.entity.item.EntityItem.onUpdate(EntityItem.java:132)
    at net.minecraft.world.World.updateEntityWithOptionalForce(World.java:2168)
    at net.minecraft.world.World.updateEntity(World.java:2127)
    at net.minecraft.world.World.updateEntities(World.java:1928)
    at net.minecraft.client.Minecraft.runTick(Minecraft.java:1972)
    at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1186)
    at net.minecraft.client.Minecraft.run(Minecraft.java:441)
    at net.minecraft.client.main.Main.main(Main.java:118)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97)
    at GradleStart.main(GradleStart.java:25)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Thread: Client thread
Stacktrace:
    at net.minecraft.entity.item.EntityItem.<init>(EntityItem.java:66)
    at emeraldjelly.mystica.blocks.tileentity.TileEntitySorcerersCauldron.checkAndCraft(TileEntitySorcerersCauldron.java:65)
    at emeraldjelly.mystica.blocks.tileentity.TileEntitySorcerersCauldron.onCollideAddItems(TileEntitySorcerersCauldron.java:58)
    at emeraldjelly.mystica.blocks.SorcerersCauldron.onEntityCollidedWithBlock(SorcerersCauldron.java:43)

-- Block being collided with --
Details:
    Block: myt:sorcerers_cauldron
    Block location: World: (1353,237,197), Chunk: (at 9,14,5 in 84,12; contains blocks 1344,0,192 to 1359,255,207), Region: (2,0; contains chunks 64,0 to 95,31, blocks 1024,0,0 to 1535,255,511)
Stacktrace:
    at net.minecraft.entity.Entity.doBlockCollisions(Entity.java:1152)

-- Entity being checked for collision --
Details:
    Entity Type: minecraft:item (net.minecraft.entity.item.EntityItem)
    Entity ID: 70
    Entity Name: item.item.lacrimite_shards
    Entity's Exact location: 1353.13, 237.00, 197.12
    Entity's Block location: World: (1353,237,197), Chunk: (at 9,14,5 in 84,12; contains blocks 1344,0,192 to 1359,255,207), Region: (2,0; contains chunks 64,0 to 95,31, blocks 1024,0,0 to 1535,255,511)
    Entity's Momentum: 0.00, 0.00, 0.00
    Entity's Passengers: []
    Entity's Vehicle: ~~ERROR~~ NullPointerException: null
Stacktrace:
    at net.minecraft.entity.Entity.move(Entity.java:1070)
    at net.minecraft.entity.item.EntityItem.onUpdate(EntityItem.java:132)
    at net.minecraft.world.World.updateEntityWithOptionalForce(World.java:2168)
    at net.minecraft.world.World.updateEntity(World.java:2127)

-- Entity being ticked --
Details:
    Entity Type: minecraft:item (net.minecraft.entity.item.EntityItem)
    Entity ID: 70
    Entity Name: item.item.lacrimite_shards
    Entity's Exact location: 1353.13, 237.00, 197.12
    Entity's Block location: World: (1353,237,197), Chunk: (at 9,14,5 in 84,12; contains blocks 1344,0,192 to 1359,255,207), Region: (2,0; contains chunks 64,0 to 95,31, blocks 1024,0,0 to 1535,255,511)
    Entity's Momentum: 0.00, 0.00, 0.00
    Entity's Passengers: []
    Entity's Vehicle: ~~ERROR~~ NullPointerException: null
Stacktrace:
    at net.minecraft.world.World.updateEntities(World.java:1928)

-- Affected level --
Details:
    Level name: MpServer
    All players: 1 total; [EntityPlayerSP['Player109'/21, l='MpServer', x=1353.90, y=237.00, z=195.75]]
    Chunk stats: MultiplayerChunkCache: 623, 623
    Level seed: 0
    Level generator: ID 01 - flat, ver 0. Features enabled: false
    Level generator options: 
    Level spawn location: World: (1276,4,173), Chunk: (at 12,0,13 in 79,10; contains blocks 1264,0,160 to 1279,255,175), Region: (2,0; contains chunks 64,0 to 95,31, blocks 1024,0,0 to 1535,255,511)
    Level time: 165317 game time, 5850 day time
    Level dimension: 0
    Level storage version: 0x00000 - Unknown?
    Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
    Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
    Forced entities: 14 total; [EntityItem['item.item.lacrimite_shards'/70, l='MpServer', x=1353.13, y=237.00, z=197.12], EntityChicken['Chicken'/7, l='MpServer', x=1275.25, y=237.00, z=204.23], EntityPig['Pig'/10, l='MpServer', x=1309.38, y=237.00, z=159.29], EntityPig['Pig'/11, l='MpServer', x=1310.60, y=237.00, z=177.26], EntityCow['Cow'/12, l='MpServer', x=1310.55, y=237.00, z=239.85], EntitySheep['Sheep'/13, l='MpServer', x=1315.24, y=237.00, z=270.53], EntitySheep['Sheep'/14, l='MpServer', x=1328.78, y=237.00, z=219.06], EntitySheep['Sheep'/15, l='MpServer', x=1348.24, y=237.00, z=138.40], EntityItemFrame['entity.ItemFrame.name'/16, l='MpServer', x=1348.03, y=238.50, z=202.50], EntityItemFrame['entity.ItemFrame.name'/17, l='MpServer', x=1348.03, y=238.50, z=203.50], EntityItemFrame['entity.ItemFrame.name'/18, l='MpServer', x=1348.03, y=238.50, z=204.50], EntityItemFrame['entity.ItemFrame.name'/19, l='MpServer', x=1348.03, y=238.50, z=205.50], EntityPig['Pig'/20, l='MpServer', x=1408.28, y=237.00, z=216.75], EntityPlayerSP['Player109'/21, l='MpServer', x=1353.90, y=237.00, z=195.75]]
    Retry entities: 0 total; []
    Server brand: fml,forge
    Server type: Integrated singleplayer server
Stacktrace:
    at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:461)
    at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2896)
    at net.minecraft.client.Minecraft.run(Minecraft.java:462)
    at net.minecraft.client.main.Main.main(Main.java:118)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97)
    at GradleStart.main(GradleStart.java:25)

-- System Details --
Details:
    Minecraft Version: 1.12.2
    Operating System: Mac OS X (x86_64) version 10.13.3
    Java Version: 1.8.0_151, Oracle Corporation
    Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
    Memory: 507934096 bytes (484 MB) / 1094713344 bytes (1044 MB) up to 1908932608 bytes (1820 MB)
    JVM Flags: 0 total; 
    IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
    FML: MCP 9.42 Powered by Forge 14.23.2.2640 5 mods loaded, 5 mods active
    States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored

    | State     | ID        | Version      | Source                           | Signature |
    |:--------- |:--------- |:------------ |:-------------------------------- |:--------- |
    | UCHIJAAAA | minecraft | 1.12.2       | minecraft.jar                    | None      |
    | UCHIJAAAA | mcp       | 9.42         | minecraft.jar                    | None      |
    | UCHIJAAAA | FML       | 8.0.99.99    | forgeSrc-1.12.2-14.23.2.2640.jar | None      |
    | UCHIJAAAA | forge     | 14.23.2.2640 | forgeSrc-1.12.2-14.23.2.2640.jar | None      |
    | UCHIJAAAA | myt       | a0.1         | Mystica_main                     | None      |

    Loaded coremods (and transformers): 
    GL info: ' Vendor: 'Intel Inc.' Version: '2.1 INTEL-10.30.14' Renderer: 'Intel(R) Iris(TM) Graphics 550'
    Launched Version: 1.12.2
    LWJGL: 2.9.2
    OpenGL: Intel(R) Iris(TM) Graphics 550 GL version 2.1 INTEL-10.30.14, Intel Inc.
    GL Caps: Using GL 1.3 multitexturing.
Using GL 1.3 texture combiners.
Using framebuffer objects because ARB_framebuffer_object is supported and separate blending is supported.
Shaders are available because OpenGL 2.1 is supported.
VBOs are available because OpenGL 1.5 is supported.

    Using VBOs: Yes
    Is Modded: Definitely; Client brand changed to 'fml,forge'
    Type: Client (map_client.txt)
    Resource Packs: 
    Current Language: English (US)
    Profiler Position: N/A (disabled)
    CPU: 4x Intel(R) Core(TM) i5-6267U CPU @ 2.90GHz
[17:54:28] [main/INFO] [STDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:629]: #@!@# Game crashed! Crash report saved to: #@!@# /Users/nicholasbrewster/Desktop/Coding/Modding/Mystica/run/./crash-reports/crash-2018-04-05_17.54.28-client.txt
AL lib: (EE) alc_cleanup: 1 device not closed

Process finished with exit code 255


[17:54:28] [main/FATAL] [net.minecraft.client.Minecraft]: Reported exception thrown!
net.minecraft.util.ReportedException: Colliding entity with block
	at net.minecraft.world.World.updateEntities(World.java:1942) ~[World.class:?]
	at net.minecraft.client.Minecraft.runTick(Minecraft.java:1972) ~[Minecraft.class:?]
	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1186) ~[Minecraft.class:?]
	at net.minecraft.client.Minecraft.run(Minecraft.java:441) [Minecraft.class:?]
	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_151]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_151]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_151]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_151]
	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_151]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_151]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_151]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_151]
	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
	at GradleStart.main(GradleStart.java:25) [start/:?]
Caused by: java.lang.NullPointerException
	at net.minecraft.entity.item.EntityItem.<init>(EntityItem.java:66) ~[EntityItem.class:?]
	at emeraldjelly.mystica.blocks.tileentity.TileEntitySorcerersCauldron.checkAndCraft(TileEntitySorcerersCauldron.java:65) ~[TileEntitySorcerersCauldron.class:?]
	at emeraldjelly.mystica.blocks.tileentity.TileEntitySorcerersCauldron.onCollideAddItems(TileEntitySorcerersCauldron.java:58) ~[TileEntitySorcerersCauldron.class:?]
	at emeraldjelly.mystica.blocks.SorcerersCauldron.onEntityCollidedWithBlock(SorcerersCauldron.java:43) ~[SorcerersCauldron.class:?]
	at net.minecraft.entity.Entity.doBlockCollisions(Entity.java:1152) ~[Entity.class:?]
	at net.minecraft.entity.Entity.move(Entity.java:1070) ~[Entity.class:?]
	at net.minecraft.entity.item.EntityItem.onUpdate(EntityItem.java:132) ~[EntityItem.class:?]
	at net.minecraft.world.World.updateEntityWithOptionalForce(World.java:2168) ~[World.class:?]
	at net.minecraft.world.World.updateEntity(World.java:2127) ~[World.class:?]
	at net.minecraft.world.World.updateEntities(World.java:1928) ~[World.class:?]
	... 16 more
[17:54:28] [main/INFO] [STDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:629]: ---- Minecraft Crash Report ----
// Ouch. That hurt :(

Time: 4/5/18 5:54 PM
Description: Colliding entity with block

java.lang.NullPointerException: Colliding entity with block
	at net.minecraft.entity.item.EntityItem.<init>(EntityItem.java:66)
	at emeraldjelly.mystica.blocks.tileentity.TileEntitySorcerersCauldron.checkAndCraft(TileEntitySorcerersCauldron.java:65)
	at emeraldjelly.mystica.blocks.tileentity.TileEntitySorcerersCauldron.onCollideAddItems(TileEntitySorcerersCauldron.java:58)
	at emeraldjelly.mystica.blocks.SorcerersCauldron.onEntityCollidedWithBlock(SorcerersCauldron.java:43)
	at net.minecraft.entity.Entity.doBlockCollisions(Entity.java:1152)
	at net.minecraft.entity.Entity.move(Entity.java:1070)
	at net.minecraft.entity.item.EntityItem.onUpdate(EntityItem.java:132)
	at net.minecraft.world.World.updateEntityWithOptionalForce(World.java:2168)
	at net.minecraft.world.World.updateEntity(World.java:2127)
	at net.minecraft.world.World.updateEntities(World.java:1928)
	at net.minecraft.client.Minecraft.runTick(Minecraft.java:1972)
	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1186)
	at net.minecraft.client.Minecraft.run(Minecraft.java:441)
	at net.minecraft.client.main.Main.main(Main.java:118)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
	at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97)
	at GradleStart.main(GradleStart.java:25)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Thread: Client thread
Stacktrace:
	at net.minecraft.entity.item.EntityItem.<init>(EntityItem.java:66)
	at emeraldjelly.mystica.blocks.tileentity.TileEntitySorcerersCauldron.checkAndCraft(TileEntitySorcerersCauldron.java:65)
	at emeraldjelly.mystica.blocks.tileentity.TileEntitySorcerersCauldron.onCollideAddItems(TileEntitySorcerersCauldron.java:58)
	at emeraldjelly.mystica.blocks.SorcerersCauldron.onEntityCollidedWithBlock(SorcerersCauldron.java:43)

-- Block being collided with --
Details:
	Block: myt:sorcerers_cauldron
	Block location: World: (1353,237,197), Chunk: (at 9,14,5 in 84,12; contains blocks 1344,0,192 to 1359,255,207), Region: (2,0; contains chunks 64,0 to 95,31, blocks 1024,0,0 to 1535,255,511)
Stacktrace:
	at net.minecraft.entity.Entity.doBlockCollisions(Entity.java:1152)

-- Entity being checked for collision --
Details:
	Entity Type: minecraft:item (net.minecraft.entity.item.EntityItem)
	Entity ID: 70
	Entity Name: item.item.lacrimite_shards
	Entity's Exact location: 1353.13, 237.00, 197.12
	Entity's Block location: World: (1353,237,197), Chunk: (at 9,14,5 in 84,12; contains blocks 1344,0,192 to 1359,255,207), Region: (2,0; contains chunks 64,0 to 95,31, blocks 1024,0,0 to 1535,255,511)
	Entity's Momentum: 0.00, 0.00, 0.00
	Entity's Passengers: []
	Entity's Vehicle: ~~ERROR~~ NullPointerException: null
Stacktrace:
	at net.minecraft.entity.Entity.move(Entity.java:1070)
	at net.minecraft.entity.item.EntityItem.onUpdate(EntityItem.java:132)
	at net.minecraft.world.World.updateEntityWithOptionalForce(World.java:2168)
	at net.minecraft.world.World.updateEntity(World.java:2127)

-- Entity being ticked --
Details:
	Entity Type: minecraft:item (net.minecraft.entity.item.EntityItem)
	Entity ID: 70
	Entity Name: item.item.lacrimite_shards
	Entity's Exact location: 1353.13, 237.00, 197.12
	Entity's Block location: World: (1353,237,197), Chunk: (at 9,14,5 in 84,12; contains blocks 1344,0,192 to 1359,255,207), Region: (2,0; contains chunks 64,0 to 95,31, blocks 1024,0,0 to 1535,255,511)
	Entity's Momentum: 0.00, 0.00, 0.00
	Entity's Passengers: []
	Entity's Vehicle: ~~ERROR~~ NullPointerException: null
Stacktrace:
	at net.minecraft.world.World.updateEntities(World.java:1928)

-- Affected level --
Details:
	Level name: MpServer
	All players: 1 total; [EntityPlayerSP['Player109'/21, l='MpServer', x=1353.90, y=237.00, z=195.75]]
	Chunk stats: MultiplayerChunkCache: 623, 623
	Level seed: 0
	Level generator: ID 01 - flat, ver 0. Features enabled: false
	Level generator options: 
	Level spawn location: World: (1276,4,173), Chunk: (at 12,0,13 in 79,10; contains blocks 1264,0,160 to 1279,255,175), Region: (2,0; contains chunks 64,0 to 95,31, blocks 1024,0,0 to 1535,255,511)
	Level time: 165317 game time, 5850 day time
	Level dimension: 0
	Level storage version: 0x00000 - Unknown?
	Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
	Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
	Forced entities: 14 total; [EntityItem['item.item.lacrimite_shards'/70, l='MpServer', x=1353.13, y=237.00, z=197.12], EntityChicken['Chicken'/7, l='MpServer', x=1275.25, y=237.00, z=204.23], EntityPig['Pig'/10, l='MpServer', x=1309.38, y=237.00, z=159.29], EntityPig['Pig'/11, l='MpServer', x=1310.60, y=237.00, z=177.26], EntityCow['Cow'/12, l='MpServer', x=1310.55, y=237.00, z=239.85], EntitySheep['Sheep'/13, l='MpServer', x=1315.24, y=237.00, z=270.53], EntitySheep['Sheep'/14, l='MpServer', x=1328.78, y=237.00, z=219.06], EntitySheep['Sheep'/15, l='MpServer', x=1348.24, y=237.00, z=138.40], EntityItemFrame['entity.ItemFrame.name'/16, l='MpServer', x=1348.03, y=238.50, z=202.50], EntityItemFrame['entity.ItemFrame.name'/17, l='MpServer', x=1348.03, y=238.50, z=203.50], EntityItemFrame['entity.ItemFrame.name'/18, l='MpServer', x=1348.03, y=238.50, z=204.50], EntityItemFrame['entity.ItemFrame.name'/19, l='MpServer', x=1348.03, y=238.50, z=205.50], EntityPig['Pig'/20, l='MpServer', x=1408.28, y=237.00, z=216.75], EntityPlayerSP['Player109'/21, l='MpServer', x=1353.90, y=237.00, z=195.75]]
	Retry entities: 0 total; []
	Server brand: fml,forge
	Server type: Integrated singleplayer server
Stacktrace:
	at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:461)
	at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2896)
	at net.minecraft.client.Minecraft.run(Minecraft.java:462)
	at net.minecraft.client.main.Main.main(Main.java:118)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
	at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97)
	at GradleStart.main(GradleStart.java:25)

-- System Details --
Details:
	Minecraft Version: 1.12.2
	Operating System: Mac OS X (x86_64) version 10.13.3
	Java Version: 1.8.0_151, Oracle Corporation
	Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
	Memory: 507934096 bytes (484 MB) / 1094713344 bytes (1044 MB) up to 1908932608 bytes (1820 MB)
	JVM Flags: 0 total; 
	IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
	FML: MCP 9.42 Powered by Forge 14.23.2.2640 5 mods loaded, 5 mods active
	States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored

	| State     | ID        | Version      | Source                           | Signature |
	|:--------- |:--------- |:------------ |:-------------------------------- |:--------- |
	| UCHIJAAAA | minecraft | 1.12.2       | minecraft.jar                    | None      |
	| UCHIJAAAA | mcp       | 9.42         | minecraft.jar                    | None      |
	| UCHIJAAAA | FML       | 8.0.99.99    | forgeSrc-1.12.2-14.23.2.2640.jar | None      |
	| UCHIJAAAA | forge     | 14.23.2.2640 | forgeSrc-1.12.2-14.23.2.2640.jar | None      |
	| UCHIJAAAA | myt       | a0.1         | Mystica_main                     | None      |

	Loaded coremods (and transformers): 
	GL info: ' Vendor: 'Intel Inc.' Version: '2.1 INTEL-10.30.14' Renderer: 'Intel(R) Iris(TM) Graphics 550'
	Launched Version: 1.12.2
	LWJGL: 2.9.2
	OpenGL: Intel(R) Iris(TM) Graphics 550 GL version 2.1 INTEL-10.30.14, Intel Inc.
	GL Caps: Using GL 1.3 multitexturing.
Using GL 1.3 texture combiners.
Using framebuffer objects because ARB_framebuffer_object is supported and separate blending is supported.
Shaders are available because OpenGL 2.1 is supported.
VBOs are available because OpenGL 1.5 is supported.

	Using VBOs: Yes
	Is Modded: Definitely; Client brand changed to 'fml,forge'
	Type: Client (map_client.txt)
	Resource Packs: 
	Current Language: English (US)
	Profiler Position: N/A (disabled)
	CPU: 4x Intel(R) Core(TM) i5-6267U CPU @ 2.90GHz
[17:54:28] [main/INFO] [STDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:629]: #@!@# Game crashed! Crash report saved to: #@!@# /Users/nicholasbrewster/Desktop/Coding/Modding/Mystica/run/./crash-reports/crash-2018-04-05_17.54.28-client.txt
AL lib: (EE) alc_cleanup: 1 device not closed

Process finished with exit code 255

 

 

Link to comment
Share on other sites

You're attempting to spawn the recipe result before you've checked to make sure that there IS a result.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

7 minutes ago, Draco18s said:

You're attempting to spawn the recipe result before you've checked to make sure that there IS a result.

I added a simple != null check, but again I think the problem is, it's not Capturing the items correctly, can you help me fix that, I believe its the only thing stopping this from working properly.

Link to comment
Share on other sites

Your AABB is static, that won't work. Each TE needs to have its own AABB collection volume, or they will only pull items from the world origin

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements




  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • 🤑DAFTAR & LOGIN🤑 🤑DAFTAR & LOGIN🤑 🤑DAFTAR & LOGIN🤑   Daftar Slot Asusslot adalah bocoran slot rekomendasi gacor dari Asusslot yang bisa anda temukan di SLOT Asusslot. Situs SLOT Asusslot hari ini yang kami bagikan di sini adalah yang terbaik dan bersiaplah untuk mengalami sensasi tak terlupakan dalam permainan slot online. Temukan game SLOT Asusslot terbaik dengan 100 pilihan provider ternama yang dipercaya akan memberikan kepuasan dan kemenangan hari ini untuk meraih x500. RTP SLOT Asusslot merupakan SLOT Asusslot hari ini yang telah menjadi pilihan utama bagi pemain judi online di seluruh Indonesia. Setiap harinya jutaan pemain memasuki dunia maya untuk memperoleh hiburan seru dan kemenangan besar dalam bermain slot dengan adanya bocoran RTP SLOT Asusslot. Tidak ada yang lebih menyenangkan daripada mengungguli mesin slot dan meraih jackpot x500 yang menggiurkan di situs SLOT Asusslot hari ini yang telah disediakan SLOT Asusslot. Menangkan jackpot besar x500 rajanya maxwin dari segala slot dan raih kemenangan spektakuler di situs Asusslot terbaik 2024 adalah tempat yang menyediakan mesin slot dengan peluang kemenangan lebih tinggi daripada situs slot lainnya. Bagi anda yang mencari pengalaman judi slot paling seru dan mendebarkan, situs bo SLOT Asusslot terbaik 2024 adalah pilihan yang tepat. Jelajahi dunia slot online melalui situs SLOT Asusslot di link SLOT Asusslot.
    • 🤑DAFTAR & LOGIN🤑 🤑DAFTAR & LOGIN🤑 🤑DAFTAR & LOGIN🤑 Daftar Slot Galeri555 adalah bocoran slot rekomendasi gacor dari Galeri555 yang bisa anda temukan di SLOT Galeri555. Situs SLOT Galeri555 hari ini yang kami bagikan di sini adalah yang terbaik dan bersiaplah untuk mengalami sensasi tak terlupakan dalam permainan slot online. Temukan game SLOT Galeri555 terbaik dengan 100 pilihan provider ternama yang dipercaya akan memberikan kepuasan dan kemenangan hari ini untuk meraih x500. RTP SLOT Galeri555 merupakan SLOT Galeri555 hari ini yang telah menjadi pilihan utama bagi pemain judi online di seluruh Indonesia. Setiap harinya jutaan pemain memasuki dunia maya untuk memperoleh hiburan seru dan kemenangan besar dalam bermain slot dengan adanya bocoran RTP SLOT Galeri555. Tidak ada yang lebih menyenangkan daripada mengungguli mesin slot dan meraih jackpot x500 yang menggiurkan di situs SLOT Galeri555 hari ini yang telah disediakan SLOT Galeri555. Menangkan jackpot besar x500 rajanya maxwin dari segala slot dan raih kemenangan spektakuler di situs Galeri555 terbaik 2024 adalah tempat yang menyediakan mesin slot dengan peluang kemenangan lebih tinggi daripada situs slot lainnya. Bagi anda yang mencari pengalaman judi slot paling seru dan mendebarkan, situs bo SLOT Galeri555 terbaik 2024 adalah pilihan yang tepat. Jelajahi dunia slot online melalui situs SLOT Galeri555 di link SLOT Galeri555.
    • 🤑DAFTAR & LOGIN🤑 🤑DAFTAR & LOGIN🤑 🤑DAFTAR & LOGIN🤑 Daftar Slot Kocok303 adalah bocoran slot rekomendasi gacor dari Kocok303 yang bisa anda temukan di SLOT Kocok303. Situs SLOT Kocok303 hari ini yang kami bagikan di sini adalah yang terbaik dan bersiaplah untuk mengalami sensasi tak terlupakan dalam permainan slot online. Temukan game SLOT Kocok303 terbaik dengan 100 pilihan provider ternama yang dipercaya akan memberikan kepuasan dan kemenangan hari ini untuk meraih x500. RTP SLOT Kocok303 merupakan SLOT Kocok303 hari ini yang telah menjadi pilihan utama bagi pemain judi online di seluruh Indonesia. Setiap harinya jutaan pemain memasuki dunia maya untuk memperoleh hiburan seru dan kemenangan besar dalam bermain slot dengan adanya bocoran RTP SLOT Kocok303. Tidak ada yang lebih menyenangkan daripada mengungguli mesin slot dan meraih jackpot x500 yang menggiurkan di situs SLOT Kocok303 hari ini yang telah disediakan SLOT Kocok303. Menangkan jackpot besar x500 rajanya maxwin dari segala slot dan raih kemenangan spektakuler di situs Kocok303 terbaik 2024 adalah tempat yang menyediakan mesin slot dengan peluang kemenangan lebih tinggi daripada situs slot lainnya. Bagi anda yang mencari pengalaman judi slot paling seru dan mendebarkan, situs bo SLOT Kocok303 terbaik 2024 adalah pilihan yang tepat. Jelajahi dunia slot online melalui situs SLOT Kocok303 di link SLOT Kocok303.
    • 🤑DAFTAR & LOGIN🤑 🤑DAFTAR & LOGIN🤑 🤑DAFTAR & LOGIN🤑 Slot Aster88 adalah bocoran slot rekomendasi gacor dari Aster88 yang bisa anda temukan di SLOT Aster88. Situs SLOT Aster88 hari ini yang kami bagikan di sini adalah yang terbaik dan bersiaplah untuk mengalami sensasi tak terlupakan dalam permainan slot online. Temukan game SLOT Aster88 terbaik dengan 100 pilihan provider ternama yang dipercaya akan memberikan kepuasan dan kemenangan hari ini untuk meraih x500. RTP SLOT Aster88 merupakan SLOT Aster88 hari ini yang telah menjadi pilihan utama bagi pemain judi online di seluruh Indonesia. Setiap harinya jutaan pemain memasuki dunia maya untuk memperoleh hiburan seru dan kemenangan besar dalam bermain slot dengan adanya bocoran RTP SLOT Aster88. Tidak ada yang lebih menyenangkan daripada mengungguli mesin slot dan meraih jackpot x500 yang menggiurkan di situs SLOT Aster88 hari ini yang telah disediakan SLOT Aster88. Menangkan jackpot besar x500 rajanya maxwin dari segala slot dan raih kemenangan spektakuler di situs Aster88 terbaik 2024 adalah tempat yang menyediakan mesin slot dengan peluang kemenangan lebih tinggi daripada situs slot lainnya. Bagi anda yang mencari pengalaman judi slot paling seru dan mendebarkan, situs bo SLOT Aster88 terbaik 2024 adalah pilihan yang tepat. Jelajahi dunia slot online melalui situs SLOT Aster88 di link SLOT Aster88.
    • 🚀Link Daftar Klik Disini🚀 Tips Bermain Slot Bank Jago agar Meraih Maxwin dan Jackpot di MAXWINBET77 Bermain slot online Bank jago adalah cara yang seru dan mengasyikkan untuk mencari keuntungan besar di MAXWINBET77. Jika kamu ingin meningkatkan peluangmu untuk meraih maxwin dan jackpot secara terus-menerus, ada beberapa tips dan strategi yang bisa kamu terapkan. Berikut adalah panduan lengkapnya: Pilih Slot dengan RTP Tinggi: RTP (Return to Player) adalah persentase rata-rata dari total taruhan yang dikembalikan kepada pemain sebagai kemenangan. Pilihlah mesin slot Bank jago yang memiliki RTP tinggi, karena ini meningkatkan peluangmu untuk meraih kemenangan dalam jangka panjang. Kenali Fitur Bonus: Setiap slot Bank jago memiliki fitur bonus yang berbeda, seperti putaran gratis, simbol liar (wild), dan bonus game. Pelajari dengan baik fitur-fitur ini karena mereka dapat membantu meningkatkan peluang meraih kemenangan besar. Kelola Taruhan dengan Bijak: Tentukan batasan taruhan yang sesuai dengan budget dan jangan tergoda untuk bertaruh melebihi kemampuan finansialmu. Terapkan strategi taruhan yang bijak untuk memaksimalkan penggunaan saldo. Mainkan Slot Bank jago Progresif: Jika tujuanmu adalah meraih jackpot besar, coba mainkan slot Bank jago progresif di MAXWINBET77. Jackpot pada jenis slot Bank ini terus bertambah seiring dengan taruhan pemain lainnya, sehingga dapat mencapai jumlah yang sangat besar. Manfaatkan Promosi dan Bonus: MAXWINBET77 sering kali menawarkan promosi dan bonus kepada pemainnya. Manfaatkan bonus-bonus ini untuk meningkatkan peluangmu meraih kemenangan tanpa menggunakan modal tambahan. Berkonsentrasi dan Bersabar: Fokuslah saat bermain slot bank jago dan jangan terburu-buru. Bersabarlah meskipun tidak langsung mendapatkan hasil yang diharapkan. Kadang-kadang diperlukan waktu dan keberuntungan untuk mencapai maxwin atau jackpot. Baca Aturan Permainan: Sebelum bermain, pastikan untuk membaca aturan dan pembayaran pada slot Bank Jago yang dipilih. Mengetahui cara kerja mesin slot akan membantu mengoptimalkan strategi bermainmu. Dengan menerapkan tips-tips di atas dan tetap bermain secara bertanggung jawab, kamu dapat meningkatkan peluang meraih maxwin dan jackpot di Slot Bank Jago MAXWINBET77. Selamat bermain dan semoga sukses meraih kemenangan besar Anda Hari Ini.
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.