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

    • This honestly might just work for you @SubscribeEvent public static void onScreenRender(ScreenEvent.Render.Post event) { final var player = Minecraft.getInstance().player; if(!hasMyEffect(player)) return; // TODO: You provide hasMyEffect float f = Mth.lerp(p_109094_, this.minecraft.player.oSpinningEffectIntensity, this.minecraft.player.spinningEffectIntensity); float f1 = ((Double)this.minecraft.options.screenEffectScale().get()).floatValue(); if(f <= 0F || f1 >= 1F) return; float p_282656_ = ?; final var p_282460_ = event.getGuiGraphics(); int i = p_282460_.guiWidth(); int j = p_282460_.guiHeight(); p_282460_.pose().pushPose(); float f = Mth.lerp(p_282656_, 2.0F, 1.0F); p_282460_.pose().translate((float)i / 2.0F, (float)j / 2.0F, 0.0F); p_282460_.pose().scale(f, f, f); p_282460_.pose().translate((float)(-i) / 2.0F, (float)(-j) / 2.0F, 0.0F); float f1 = 0.2F * p_282656_; float f2 = 0.4F * p_282656_; float f3 = 0.2F * p_282656_; RenderSystem.disableDepthTest(); RenderSystem.depthMask(false); RenderSystem.enableBlend(); RenderSystem.blendFuncSeparate(SourceFactor.ONE, DestFactor.ONE, SourceFactor.ONE, DestFactor.ONE); p_282460_.setColor(f1, f2, f3, 1.0F); p_282460_.blit(NAUSEA_LOCATION, 0, 0, -90, 0.0F, 0.0F, i, j, i, j); p_282460_.setColor(1.0F, 1.0F, 1.0F, 1.0F); RenderSystem.defaultBlendFunc(); RenderSystem.disableBlend(); RenderSystem.depthMask(true); RenderSystem.enableDepthTest(); p_282460_.pose().popPose(); } ย  Note: Most of this is directly copied from GameRenderer as you pointed out you found. The only thing you'll have to likely do is update the `oSpinningEffectIntensity` + `spinningEffectIntensity` variables on the player when your effect is applied. Which values should be there? Not 100% sure, might be a game of guess and check, but `handleNetherPortalClient` in LocalPlayer has some hard coded you might be able to start with.
    • Dalam dunia perjudian online yang berkembang pesat, mencari platform yang dapat memberikan kemenangan maksimal dan hasil terbaik adalah impian setiap penjudi. OLXTOTO, dengan bangga, mempersembahkan dirinya sebagai jawaban atas pencarian itu. Sebagai platform terbesar untuk kemenangan maksimal dan hasil optimal, OLXTOTO telah menciptakan gelombang besar di komunitas perjudian online. Satu dari banyak keunggulan yang dimiliki OLXTOTO adalah koleksi permainan yang luas dan beragam. Dari togel hingga slot online, dari live casino hingga permainan kartu klasik, OLXTOTO memiliki sesuatu untuk setiap pemain. Dibangun dengan teknologi terkini dan dikembangkan oleh para ahli industri, setiap permainan di platform ini dirancang untuk memberikan pengalaman yang tak tertandingi bagi para penjudi. Namun, keunggulan OLXTOTO tidak hanya terletak pada variasi permainan yang mereka tawarkan. Mereka juga menonjol karena komitmen mereka terhadap keamanan dan keadilan. Dengan sistem keamanan tingkat tinggi dan proses audit yang ketat, OLXTOTO memastikan bahwa setiap putaran permainan berjalan dengan adil dan transparan. Para pemain dapat merasa aman dan yakin bahwa pengalaman berjudi mereka di OLXTOTO tidak akan terganggu oleh masalah keamanan atau keadilan. Tak hanya itu, OLXTOTO juga terkenal karena layanan pelanggan yang luar biasa. Tim dukungan mereka selalu siap sedia untuk membantu para pemain dengan segala pertanyaan atau masalah yang mereka hadapi. Dengan respon cepat dan solusi yang efisien, OLXTOTO memastikan bahwa pengalaman berjudi para pemain tetap mulus dan menyenangkan. Dengan semua fitur dan keunggulan yang ditawarkannya, tidak mengherankan bahwa OLXTOTO telah menjadi pilihan utama bagi jutaan penjudi online di seluruh dunia. Jika Anda mencari platform yang dapat memberikan kemenangan maksimal dan hasil optimal, tidak perlu mencari lebih jauh dari OLXTOTO. Bergabunglah dengan OLXTOTO hari ini dan mulailah petualangan Anda menuju kemenangan besar dan hasil terbaik!
    • Selamat datang diย OLXTOTO,ย situs slot gacorย terpanas yang sedang booming di industri perjudian online. Jika Anda mencari pengalaman bermain yang luar biasa, makaย OLXTOTOย adalah tempat yang tepat untuk Anda. Dapatkan sensasi tidak biasa dengan variasiย slot onlineย terlengkap dan peluang memenangkan jackpotย slot maxwinย yang sering. Di sini, Anda akan merasakan keseruan yang luar biasa dalam bermainย judi slot. DAFTAR OLXTOTO DISINI LOGIN OLXTOTO DISINI AKUN PRO OLXTOTO DISINI ย  Jackpot Slot Maxwin Sering Untuk Peluang Besar Di OLXTOTO, kami tidak hanya memberikan hadiah slot biasa, tapi juga memberikan kesempatan kepada pemain untuk memenangkan jackpotย slot maxwinย yang sering. Dengan demikian, Anda dapat meraih keberuntungan besar dan memenangkan ribuan rupiah sebagai hadiahย jackpot slot maxwinย kami. Jackpot slot maxwinย merupakan peluang besar bagi para pemain judi slot untuk meraih keuntungan yang lebih besar. Dalam permainan kami, Anda tidak harus terpaku pada kemenangan biasa saja. Kami hadir denganย jackpot slot maxwinย yang sering, sehingga Anda memiliki peluang yang lebih besar untuk meraih kemenangan besar dengan hadiah yang menggiurkan. Dalam permainan judi slot, pengalaman bermain bukan hanya tentang keseruan dan hiburan semata. Kami memahami bahwa para pemain juga menginginkan kesempatan untuk meraih keberuntungan besar. Oleh karena itu, OLXTOTO hadir dengan jackpot slot maxwin yang sering untuk memberikan peluang besar kepada para pemain kami. Peluang Besar Menang Jackpot Slot Maxwin Peluang menang jackpot slot maxwin di OLXTOTO sangatlah besar. Anda tidak perlu khawatir tentang batasan atau pembatasan dalam meraih jackpot tersebut. Kami ingin memberikan kesempatan kepada semua pemain kami untuk merasakan sensasi menang dalam jumlah yang luar biasa. Jackpot slot maxwin kami dibuka untuk semua pemain judi slot di OLXTOTO. Anda memiliki peluang yang sama dengan pemain lainnya untuk memenangkan hadiah jackpot yang besar. Kami percaya bahwa semua orang memiliki kesempatan untuk meraih keberuntungan besar, dan itulah mengapa kami menyediakan jackpot slot maxwin yang sering untuk memenuhi harapan dan keinginan Anda. ย  Kesimpulan OLXTOTO adalahย situs slot gacorย terbaik yang memberikan pengalaman bermain judi slot online yang tak terlupakan. Dengan variasi slot online terlengkap dan peluang memenangkan jackpot slot maxwin yang sering, OLXTOTO menjadi pilihan terbaik bagi para pemain yang mencari kesenangan dan kemenangan besar dalam perjudian online. Di samping itu, OLXTOTO juga menawarkan layanan pelanggan yang ramah dan responsif, siap membantu setiap pemain dalam mengatasi masalah teknis atau pertanyaan seputar perjudian online. Kami menjaga integritas game dan memberikan lingkungan bermain yang adil serta menjalankan kebijakan perlindungan pelanggan yang cermat. Bergabunglah dengan OLXTOTO sekarang dan nikmati pengalaman bermain slot online yang luar biasa. Jadilah bagian dari komunitas perjudian yang mengagumkan ini dan raih kesempatan untuk meraih kemenangan besar. Dapatkan akses mudah dan praktis ke situs OLXTOTO dan rasakan sensasi bermain judi slot yang tak terlupakan. ย 
    • OLXTOTO: Platform Maxwin dan Gacor Terbesar Sepanjang Masa Di dunia perjudian online yang begitu kompetitif, mencari platform yang dapat memberikan kemenangan maksimal (Maxwin) dan hasil terbaik (Gacor) adalah prioritas bagi para penjudi yang cerdas. Dalam upaya ini, OLXTOTO telah muncul sebagai pemain kunci yang mengubah lanskap perjudian online dengan menawarkan pengalaman tanpa tandingan. ย  ย  Sejak diluncurkan, OLXTOTO telah menjadi sorotan industri perjudian online. Dikenal sebagai "Platform Maxwin dan Gacor Terbesar Sepanjang Masa", OLXTOTO telah menarik perhatian pemain dari seluruh dunia dengan reputasinya yang solid dan kinerja yang luar biasa. Salah satu fitur utama yang membedakan OLXTOTO dari pesaingnya adalah komitmen mereka untuk memberikan pengalaman berjudi yang unik dan memuaskan. Dengan koleksi game yang luas dan beragam, termasuk togel, slot online, live casino, dan banyak lagi, OLXTOTO menawarkan sesuatu untuk semua orang. Dibangun dengan teknologi terkini dan didukung oleh tim ahli yang berdedikasi, platform ini memastikan bahwa setiap pengalaman berjudi di OLXTOTO tidak hanya menghibur, tetapi juga menguntungkan. Namun, keunggulan OLXTOTO tidak hanya terletak pada permainan yang mereka tawarkan. Mereka juga terkenal karena keamanan dan keadilan yang mereka berikan kepada para pemain mereka. Dengan sistem keamanan tingkat tinggi dan audit rutin yang dilakukan oleh otoritas regulasi independen, para pemain dapat yakin bahwa setiap putaran permainan di OLXTOTO adalah adil dan transparan. Tidak hanya itu, OLXTOTO juga dikenal karena layanan pelanggan yang luar biasa. Dengan tim dukungan yang ramah dan responsif, para pemain dapat yakin bahwa setiap pertanyaan atau masalah mereka akan ditangani dengan cepat dan efisien. Dengan semua fitur dan keunggulan yang ditawarkannya, tidak mengherankan bahwa OLXTOTO telah menjadi platform pilihan bagi para penjudi online yang mencari kemenangan maksimal dan hasil terbaik. Jadi, jika Anda ingin bergabung dengan jutaan pemain yang telah merasakan keajaiban OLXTOTO, jangan ragu untuk mendaftar dan mulai bermain hari ini! ย 
    • OLXTOTO adalah bandar slot yang terkenal dan terpercaya di Indonesia. Mereka menawarkan berbagai jenis permainan slot yang menarik dan menghibur. Dengan tampilan yang menarik dan grafis yang berkualitas tinggi, pemain akan merasa seperti berada di kasino sungguhan. OLXTOTO juga menyediakan layanan pelanggan yang ramah dan responsif, siap membantu pemain dengan segala pertanyaan atau masalah yang mereka hadapi. Daftar =ย ย https://surkale.me/Olxtotodotcom1
  • Topics

×
×
  • Create New...

Important Information

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