Jump to content

[Help 1.8(1.7.10 Aceptable i can adapt)] Bugs Everyhere! Help pls


ResaloliPT

Recommended Posts

:D, I can read which line it mentioning. Could you post how that line looks like. E.g. could you post that part of the code? Besides, what instance is null?

 

I dont think you need to register a craftingManager Class itself, but I would like to see how you register a recipe.

 

About the slotProblem, have you updated the container Class? If so, than you're not using your custom slots yet. And the Id shouldn't be the same indeed.

 

Ps. Your tileEntityClass is an Container Class. I think you accidentialy uploaded the wrong Class.

 

 

the lines with null are on my previous post and the var "instance" (no qoutes) is null xD i may got it wrong :P

and sory about that updating code in 1 min

Link to comment
Share on other sites

Oke, NP.

 

First of all, why don't you use your beautifull custom Slots in your containerClass? it might solve a problem or 2 :P.

About the CraftingManager, there are 2 instances which are null in this case. Yours (line 26) and the vanilla one (line 36), which might reveal the problem.

 

Try remove the onCraftingMatrixChanged method from your ContainerConstructor. As I can tell from the crashlog, the game doesnt like that verry much. Actualy that is the cause of the NPE! if you look at the 3th line underneath the NPE, you'll see that the game is calling the Containers' Constructor, and so the CraftingManger while its not Constructed yet.

Projects:

Discontinued:

- N2ConfigAPI

- Meachanical Crafting Table

 

Latest:

- CollectionUtils

 

Coöperations:

- InGameConfigManager

Link to comment
Share on other sites

Oke, NP.

 

First of all, why don't you use your beautifull custom Slots in your containerClass? it might solve a problem or 2 :P.

About the CraftingManager, there are 2 instances which are null in this case. Yours (line 26) and the vanilla one (line 36), which might reveal the problem.

 

Try remove the onCraftingMatrixChanged method from your ContainerConstructor. As I can tell from the crashlog, the game doesnt like that verry much. Actualy that is the cause of the NPE! if you look at the 3th line underneath the NPE, you'll see that the game is calling the Containers' Constructor, and so the CraftingManger while its not Constructed yet.

 

well no more null things now just all slots on grid geting the same item could u explain more on suing my slots cause im already using them on the contructred DCTCrafting and DCTSlot on my slots and using vannila on vanilla inventory :/

Link to comment
Share on other sites

Nice to hear!

 

Yea, either you havent updated the Container Class yet, or you still use the vanilla slotTypes. Inside the  Container you add the craftingGrid and a resultalot. (This.addSlotToContainer(new [slottype.Class]())) However inside this method you'rd still using Slot.Class and SlotCrafting.Class. try to replace these with your slots. E.g. DCTSlot and DCTCrafting. Cause right now the CraftingGrid is still linked to the PlayerInv..

Projects:

Discontinued:

- N2ConfigAPI

- Meachanical Crafting Table

 

Latest:

- CollectionUtils

 

Coöperations:

- InGameConfigManager

Link to comment
Share on other sites

Nice to hear!

 

Yea, either you havent updated the Container Class yet, or you still use the vanilla slotTypes. Inside the  Container you add the craftingGrid and a resultalot. (This.addSlotToContainer(new [slottype.Class]())) However inside this method you'rd still using Slot.Class and SlotCrafting.Class. try to replace these with your slots. E.g. DCTSlot and DCTCrafting. Cause right now the CraftingGrid is still linked to the PlayerInv..

 

 

omfreakinggod im so sorry xD after updating i wasnt saving.... code is updated for sure now

i was getting like wth this guy is talking about already did what he told but we where looking at diff classes xD my bad

im soo sorry again

Link to comment
Share on other sites

No problem :D.

 

 

One thing I noticex on a first glance is that you swapped out the Slots type. You used the result as your craftingGridSlot and vica versa. Try to swap it out.

 

And after that, could you explain a bit more explicitly what the problem is? Like are only the crafting Slots linked together, or is the player inv. Involved as wel? And is it on shiftClick or in any circumstances.

Projects:

Discontinued:

- N2ConfigAPI

- Meachanical Crafting Table

 

Latest:

- CollectionUtils

 

Coöperations:

- InGameConfigManager

Link to comment
Share on other sites

No problem :D.

 

 

One thing I noticex on a first glance is that you swapped out the Slots type. You used the result as your craftingGridSlot and vica versa. Try to swap it out.

 

And after that, could you explain a bit more explicitly what the problem is? Like are only the crafting Slots linked together, or is the player inv. Involved as wel? And is it on shiftClick or in any circumstances.

 

well that was indeed swaped, fixed that and no more linked slots yay :D

inventory working just fine using shift

now i just cant craft anything... since i still dont get where i register my recipes on my crafting manager, i know how to add to the vanilla crafting but not to just mine :/

 

EDIT: well after tons of tests i found out that my crafting manager is never called neither is my recipes class :/ how can i make my block call its crafting manager + my read/writenbt stuff to save inventory is not being called :/

Link to comment
Share on other sites

Yea, I hoped the onCraftingMatrixChanged would be triggered (which will update the recipe). But unfortunatly it doesnt apparently. I had a lot of problems with it as wel, so I checked for a valid recipe every tick through the Update() methode in the tileEntity.Class.

(I just saw you removed that method comletly? For this purpose you might want to add it back in. Only dont call it in the constructor)

 

About the NBTData problem, you might want to add these methods

@Override
public Packet getDescriptionPacket() {
	NBTTagCompound nbtTagCompound = new NBTTagCompound();
	writeToNBT(nbtTagCompound);
	final int METADATA = 0;
	return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, METADATA, nbtTagCompound);
}

@Override
public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt)
{
	readFromNBT(pkt.func_148857_g());
}

 

This will call both readfromNBT and writeToNBT when a packet is send/recieved.

Projects:

Discontinued:

- N2ConfigAPI

- Meachanical Crafting Table

 

Latest:

- CollectionUtils

 

Coöperations:

- InGameConfigManager

Link to comment
Share on other sites

Yea, I hoped the onCraftingMatrixChanged would be triggered (which will update the recipe). But unfortunatly it doesnt apparently. I had a lot of problems with it as wel, so I checked for a valid recipe every tick through the Update() methode in the tileEntity.Class.

(I just saw you removed that method comletly? For this purpose you might want to add it back in. Only dont call it in the constructor)

 

About the NBTData problem, you might want to add these methods

@Override
public Packet getDescriptionPacket() {
	NBTTagCompound nbtTagCompound = new NBTTagCompound();
	writeToNBT(nbtTagCompound);
	final int METADATA = 0;
	return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, METADATA, nbtTagCompound);
}

@Override
public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt)
{
	readFromNBT(pkt.func_148857_g());
}

 

This will call both readfromNBT and writeToNBT when a packet is send/recieved.

 

yay its crafting now but only in some places...

working crafting slots are X's: x x x 0 0

 

Link to comment
Share on other sites

Yea, I hoped the onCraftingMatrixChanged would be triggered (which will update the recipe). But unfortunatly it doesnt apparently. I had a lot of problems with it as wel, so I checked for a valid recipe every tick through the Update() methode in the tileEntity.Class.

(I just saw you removed that method comletly? For this purpose you might want to add it back in. Only dont call it in the constructor)

 

About the NBTData problem, you might want to add these methods

@Override
public Packet getDescriptionPacket() {
	NBTTagCompound nbtTagCompound = new NBTTagCompound();
	writeToNBT(nbtTagCompound);
	final int METADATA = 0;
	return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, METADATA, nbtTagCompound);
}

@Override
public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt)
{
	readFromNBT(pkt.func_148857_g());
}

 

This will call both readfromNBT and writeToNBT when a packet is send/recieved.

 

yay its crafting now but only im a 3 by 3 but i have this as 5 by 5... (

public InventoryCrafting craftMatrix = new InventoryCrafting(this, 5, 5);

)

and the two thing u sent me about the nbt isnt working they are not being called...

Link to comment
Share on other sites

Do the NBT methods Override existing methods? And are the items saved when you close the gui? Otherwise Don't worry about it :D.

 

About the CraftingProblem, I dont think its the problem of the InventoryCrafting.Class, since they don't adjust any limits on the craftingGrid with and height. But what might be the case are the vanilla recipes itself. Their limmits have been set to 3x3, that means if its checking for relative Coords inside your CraftingTable outside the first 3 slots horizontally and vertically, the check will always be false.

 

A work around? duplicating all the craftingRecipes and add them following your own Recipe Mechanism.

A better way? I work closly together with CreativeMD, which has created an RecipeManager for modders and modpackCreators. I would recommend to check out his API(if he has updated it) since he has done the first option already for you :D.

Projects:

Discontinued:

- N2ConfigAPI

- Meachanical Crafting Table

 

Latest:

- CollectionUtils

 

Coöperations:

- InGameConfigManager

Link to comment
Share on other sites

Do the NBT methods Override existing methods? And are the items saved when you close the gui? Otherwise Don't worry about it :D.

 

About the CraftingProblem, I dont think its the problem of the InventoryCrafting.Class, since they don't adjust any limits on the craftingGrid with and height. But what might be the case are the vanilla recipes itself. Their limmits have been set to 3x3, that means if its checking for relative Coords inside your CraftingTable outside the first 3 slots horizontally and vertically, the check will always be false.

 

A work around? duplicating all the craftingRecipes and add them following your own Recipe Mechanism.

A better way? I work closly together with CreativeMD, which has created an RecipeManager for modders and modpackCreators. I would recommend to check out his API(if he has updated it) since he has done the first option already for you :D.

 

like only those 3x3 are working the others arent

i changed a debug recipe to this

this.addRecipe(new ItemStack(Blocks.diamond_block, 1), new Object[] {"SSSS", "SSSS", "SSSS", 'S', Blocks.dirt});

and then when i place dirt on a 4x4 pattern it doesnt craft the diamond block but when it was only 3x3 it did(when using

this.addRecipe(new ItemStack(Blocks.diamond_block, 1), new Object[] {"SSS", "SSS", "SSS", 'S', Blocks.dirt});

)

 

the nbt its not writing or reading it just not working and the packet things the same arent being called none of them.

is there a way to save the ivnentory every time the crafting grid changed? i tried using markDirty(); but it didnt work

Link to comment
Share on other sites

Oke, you could try to add the detectAndSendChanges() to the container.Class. take a look at this Class for idea's if you wish.

https://github.com/N247S/mechanical_crafting_table/blob/master/src/main/java/mechanical_crafting_table/common/inventory/container/ContainerMechanicalCraftingTable.java

 

About the recipe problem, honestly thats a copy-pasta problem. You copied the vanilla craftingManager.Class, though forgat that its adding, compairing and checking vanilla recipeTypes only. (Which has a limit of 3x3). Therefore try to change it so its adding, compairing and checking your recipeType.

Projects:

Discontinued:

- N2ConfigAPI

- Meachanical Crafting Table

 

Latest:

- CollectionUtils

 

Coöperations:

- InGameConfigManager

Link to comment
Share on other sites

Oke, you could try to add the detectAndSendChanges() to the container.Class. take a look at this Class for idea's if you wish.

https://github.com/N247S/mechanical_crafting_table/blob/master/src/main/java/mechanical_crafting_table/common/inventory/container/ContainerMechanicalCraftingTable.java

 

About the recipe problem, honestly thats a copy-pasta problem. You copied the vanilla craftingManager.Class, though forgat that its adding, compairing and checking vanilla recipeTypes only. (Which has a limit of 3x3). Therefore try to change it so its adding, compairing and checking your recipeType.

 

well i did loads of code and finaly my nbt thing is being called but its always getting nulls because my inventory doesnt contain any items...(not the grid but the inventory[25] itemstack)

i see that inventoryItems has the grid items but the itemstack i declared didnt so thats the reason its null

 

and the crafting thing well i had to change the limits on shapedrecipes and shapelessrecipes i had to do new files and loop trough 5 instead of 3 also added all recipes manualy to my manager but still only working on the corner 3x3 because of that my 4x4 recipe isnt working...

Link to comment
Share on other sites

Hey, I sorry that I let you wait this long, I had some bisnuese to attent to.

 

Anyway, I've been thinking whay possibly the link could be for the Slots added in the container and your tileEntity. And I realised that there is no refference to your tileEntity at all(inside your container). Where you used 2 vanilla IInventory-types (craftmatrix and craftresult) there should be your tileEntity instead(which implements IInventory as well).

 

As for the recipes, you seems to do everything oke. But I got some doubts by the way you added the vanilla recipes. Since they are adding regular recipes to the Arraylist which means it still got its limmit I think. Anyway, did you mentioned that non vanilla recipes aren't working either?...

Projects:

Discontinued:

- N2ConfigAPI

- Meachanical Crafting Table

 

Latest:

- CollectionUtils

 

Coöperations:

- InGameConfigManager

Link to comment
Share on other sites

Hey, I sorry that I let you wait this long, I had some bisnuese to attent to.

 

Anyway, I've been thinking whay possibly the link could be for the Slots added in the container and your tileEntity. And I realised that there is no refference to your tileEntity at all(inside your container). Where you used 2 vanilla IInventory-types (craftmatrix and craftresult) there should be your tileEntity instead(which implements IInventory as well).

 

As for the recipes, you seems to do everything oke. But I got some doubts by the way you added the vanilla recipes. Since they are adding regular recipes to the Arraylist which means it still got its limmit I think. Anyway, did you mentioned that non vanilla recipes aren't working either?...

 

omg *facepalm* myself

 

my fix to 5x5 worx

 

open this topic

start writing reply

open eclipse

start my recipes on constructer

debug client

*facepalm my self hard*

magicly 5x5 working

 

--'

but still nbt not saving

Link to comment
Share on other sites

Read carefully again.

Anyway, I've been thinking what possibly the link could be for the Slots, added in the container and your tileEntity. And I realised that there is no refference to your tileEntity at all(inside your container). Where you used 2 vanilla IInventory-types (craftmatrix and craftresult) there should be your tileEntity instead(which implements IInventory as well).

 

Otherwise it will change/save the itemStack array's in the vanilla IInventories instead.

Projects:

Discontinued:

- N2ConfigAPI

- Meachanical Crafting Table

 

Latest:

- CollectionUtils

 

Coöperations:

- InGameConfigManager

Link to comment
Share on other sites

Read carefully again.

Anyway, I've been thinking what possibly the link could be for the Slots, added in the container and your tileEntity. And I realised that there is no refference to your tileEntity at all(inside your container). Where you used 2 vanilla IInventory-types (craftmatrix and craftresult) there should be your tileEntity instead(which implements IInventory as well).

 

Otherwise it will change/save the itemStack array's in the vanilla IInventories instead.

 

ye sry my bad i did read that but i was doing one thing and saw it worked and then i forgot that xD gimme 10 mins+- to implement that and do some changed will reply back when done

 

EDIT: well all i did dont work i changed the things to my TE then it errors that such methods and costructers didnt exist so i created them then i error on all my code i fixed that and now i got so other errors so i gave up and restarted al over and hope u may give a lead i can follow

Link to comment
Share on other sites

Thats unfortunate to hear :(.

 

Its a good thing you want to start from the beginning again, sometimes you cant see the rain with all the drops in the way. As an example, I can only give a link to a mod in progress, which adds a 4x4 craftingGrid. Though keep in mind that it usses a totally different CraftingSystem! Your system should do the trick(and is way less complicated :D).

https://github.com/N247S/mechanical_crafting_table

Althoug it isnt finnished, the stuff you need should work perfectly fine.

 

I hope this helps you in the right direction.

Projects:

Discontinued:

- N2ConfigAPI

- Meachanical Crafting Table

 

Latest:

- CollectionUtils

 

Coöperations:

- InGameConfigManager

Link to comment
Share on other sites

Thats unfortunate to hear :(.

 

Its a good thing you want to start from the beginning again, sometimes you cant see the rain with all the drops in the way. As an example, I can only give a link to a mod in progress, which adds a 4x4 craftingGrid. Though keep in mind that it usses a totally different CraftingSystem! Your system should do the trick(and is way less complicated :D).

https://github.com/N247S/mechanical_crafting_table

Althoug it isnt finnished, the stuff you need should work perfectly fine.

 

I hope this helps you in the right direction.

 

after being for quite a while like this[ to your code i found out that none base methods on my TE was overriden --' so the called code was from minecraft and not mines so it wasnt being saved on mine itemstack

so after many much breakpointing(this thing rly helps finding problems) i se that the method

@Override
    public void setInventorySlotContents(int i, ItemStack itemstack) {
	inventory[i] = itemstack;
	if (itemstack != null && itemstack.stackSize > getInventoryStackLimit()) {
		itemstack.stackSize = getInventoryStackLimit();
	}
	markDirty();
}

 

is detecting the items i drop on the grid problem is the ID is Always 0 so its setting always the same index on the inventory itemstack array because this is the output slot index

 

EDIT: im just goin nuts with this i organized my project and workspaces and all this stuff and after import my code from github well the crafting stoped working..... it recognizes my recipes but not vanillas when out of 3x3 bounds but when inside it works great so that meast that somthing stupid fixed it but now i doest and the code is still the same from the 1 commit i made....

um not the best at java im still learning what i can i can do some work arounds and clean code and stuff but when it cames from scrach well i dont know how to start and how i do things, i have basics of java but is not its best.

i can make blocks, items, recipes and other simple things but when it cames to TE+Container+guis dam i suck so i try my best to learn that but with such errors i cant get no where

Link to comment
Share on other sites

The best way to learn java is by trail and error. And I have to say that you are doing a great job at it :D.(not sceptical, but meant as a compliment).

 

But because Im not english, I have a hard time to understand what the problem actualy is(if its still existing of course :D). (So if so) Could you clarify the problem a bit more please?

Projects:

Discontinued:

- N2ConfigAPI

- Meachanical Crafting Table

 

Latest:

- CollectionUtils

 

Coöperations:

- InGameConfigManager

Link to comment
Share on other sites

The best way to learn java is by trail and error. And I have to say that you are doing a great job at it :D.(not sceptical, but meant as a compliment).

 

But because Im not english, I have a hard time to understand what the problem actualy is(if its still existing of course :D). (So if so) Could you clarify the problem a bit more please?

 

 

well im not english native so ye it can be even worse to understand xD

 

well all nbt code is working the thing is the only slot being saved is the output wich is a nonsence cause when theres nothing or no recipe matching theres not output so ye i want to save the grid but i cant seem to make it work

and also the crafting as also stoped working from nowhere i did no change and it stoped work i can craft all my recipes no problem but when it comes to vanilla it only works on corner 3x3

 

btw i will always list problems on each commit i do on github

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

    • As the title says i keep on crashing on forge 1.20.1 even without any mods downloaded, i have the latest drivers (nvidia) and vanilla minecraft works perfectly fine for me logs: https://pastebin.com/5UR01yG9
    • Hello everyone, I'm making this post to seek help for my modded block, It's a special block called FrozenBlock supposed to take the place of an old block, then after a set amount of ticks, it's supposed to revert its Block State, Entity, data... to the old block like this :  The problem I have is that the system breaks when handling multi blocks (I tried some fix but none of them worked) :  The bug I have identified is that the function "setOldBlockFields" in the item's "setFrozenBlock" function gets called once for the 1st block of multiblock getting frozen (as it should), but gets called a second time BEFORE creating the first FrozenBlock with the data of the 1st block, hence giving the same data to the two FrozenBlock :   Old Block Fields set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=head] BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@73681674 BlockEntityData : id:"minecraft:bed",x:3,y:-60,z:-6} Old Block Fields set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} Frozen Block Entity set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockPos{x=3, y=-60, z=-6} BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} Frozen Block Entity set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockPos{x=2, y=-60, z=-6} BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} here is the code inside my custom "freeze" item :    @Override     public @NotNull InteractionResult useOn(@NotNull UseOnContext pContext) {         if (!pContext.getLevel().isClientSide() && pContext.getHand() == InteractionHand.MAIN_HAND) {             BlockPos blockPos = pContext.getClickedPos();             BlockPos secondBlockPos = getMultiblockPos(blockPos, pContext.getLevel().getBlockState(blockPos));             if (secondBlockPos != null) {                 createFrozenBlock(pContext, secondBlockPos);             }             createFrozenBlock(pContext, blockPos);             return InteractionResult.SUCCESS;         }         return super.useOn(pContext);     }     public static void createFrozenBlock(UseOnContext pContext, BlockPos blockPos) {         BlockState oldState = pContext.getLevel().getBlockState(blockPos);         BlockEntity oldBlockEntity = oldState.hasBlockEntity() ? pContext.getLevel().getBlockEntity(blockPos) : null;         CompoundTag oldBlockEntityData = oldState.hasBlockEntity() ? oldBlockEntity.serializeNBT() : null;         if (oldBlockEntity != null) {             pContext.getLevel().removeBlockEntity(blockPos);         }         BlockState FrozenBlock = setFrozenBlock(oldState, oldBlockEntity, oldBlockEntityData);         pContext.getLevel().setBlockAndUpdate(blockPos, FrozenBlock);     }     public static BlockState setFrozenBlock(BlockState blockState, @Nullable BlockEntity blockEntity, @Nullable CompoundTag blockEntityData) {         BlockState FrozenBlock = BlockRegister.FROZEN_BLOCK.get().defaultBlockState();         ((FrozenBlock) FrozenBlock.getBlock()).setOldBlockFields(blockState, blockEntity, blockEntityData);         return FrozenBlock;     }  
    • It is an issue with quark - update it to this build: https://www.curseforge.com/minecraft/mc-mods/quark/files/3642325
    • Remove Instant Massive Structures Mod from your server     Add new crash-reports with sites like https://paste.ee/  
  • Topics

×
×
  • Create New...

Important Information

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