Cuberite Forum
Changing Item Drops - Printable Version

+- Cuberite Forum (https://forum.cuberite.org)
+-- Forum: Plugins (https://forum.cuberite.org/forum-1.html)
+--- Forum: Plugin Discussion (https://forum.cuberite.org/forum-8.html)
+--- Thread: Changing Item Drops (/thread-2468.html)



Changing Item Drops - Epsilith - 06-21-2016

I want to make a plugin that makes gold/iron drop ingots instead of the ore, I adapted the example from the docs but can't seem to get it to work (it crashes cuberite). I'm new to cuberite plugin development (lua in general, actually). I already add the hook HOOK_BLOCK_TO_PICKUPS. Please helpTongue


RE: Changing Item Drops - PureTryOut - 06-21-2016

Of course it would help if you showed your code. Do you just have the example from the docs? Do you have a link to the page showing the example?


RE: Changing Item Drops - xoft - 06-21-2016

A plugin shouldn't be able to crash the server. I'd really appreciate if you could post your code so that we can hunt down the bug you've run into.


RE: Changing Item Drops - Epsilith - 06-22-2016

I've used other ways of trying but this is the one I could seem to replicate. Doesn't work and seems to crash cuberite Sad

function OnBlockToPickups(a_World, a_Digger, a_BlockX, a_BlockY, a_BlockZ, a_BlockType, a_BlockMeta, a_Pickups)
if (a_Digger ~= nil) then
return false;
end

if (a_BlockType == E_BLOCK_IRON_ORE) then
return true
end

a_Pickups:Clear();

a_Pickups:Add(cItem(E_ITEM_IRON_INGOT));
return true;
end;



RE: Changing Item Drops - Seadragon91 - 06-22-2016

Hey,

I checked your code and corrected it. 
I think you want to run the code only if it's a player
Also corrected the item that you want to have as a new pickup.
Here you can find a list of all values http://api-docs.cuberite.org/Globals.html

function OnBlockToPickups(a_World, a_Digger, a_BlockX, a_BlockY, a_BlockZ, a_BlockType, a_BlockMeta, a_Pickups)
 -- Check if digger is null or is not a player
 if (a_Digger == nil) or (a_Digger:GetEntityType() ~= cEntity.etPlayer) then
 return false
 end
 
 -- Check if the block is a iron ore
 if (a_BlockType ~= E_BLOCK_IRON_ORE) then
 return true
 end

 -- Clear all defaul pickups
 a_Pickups:Clear();

 -- Add iron ingot
 a_Pickups:Add(cItem(E_ITEM_IRON))
 return true
end


If you mean red lines in the terminal, this can be a error inside of cuberite or something gone wrong in a plugin. If the error is from a plugin it's a stack trace, that contains the plugin name and the line of the error.
In this case I think it was the wrong item type, because it was nil and adding a nil value will cause an error.


RE: Changing Item Drops - Epsilith - 06-22-2016

Omg, thanks. Now I just need to add goldTongue
Problem solvedBig Grin


RE: Changing Item Drops - xoft - 06-22-2016

Epsilith, so was it a crash or just a red error report (and the server continued running)? The red error report is a normal reaction to code errors in plugins.


RE: Changing Item Drops - Epsilith - 06-22-2016

Oh, I though it actually crashed cuberite... But it might be something else, because it still happens. I can't figure out why it does it, though.