mirror of
https://github.com/minetest/minetest.git
synced 2024-11-27 10:03:45 +01:00
Remove special handling of creative mode
This commit is contained in:
parent
9eaf93d41d
commit
0a18dda158
@ -273,25 +273,23 @@ function minetest.node_dig(pos, node, digger)
|
|||||||
minetest.log('action', digger:get_player_name() .. " digs "
|
minetest.log('action', digger:get_player_name() .. " digs "
|
||||||
.. node.name .. " at " .. minetest.pos_to_string(pos))
|
.. node.name .. " at " .. minetest.pos_to_string(pos))
|
||||||
|
|
||||||
if not minetest.setting_getbool("creative_mode") then
|
local wielded = digger:get_wielded_item()
|
||||||
local wielded = digger:get_wielded_item()
|
local drops = minetest.get_node_drops(node.name, wielded:get_name())
|
||||||
local drops = minetest.get_node_drops(node.name, wielded:get_name())
|
|
||||||
|
|
||||||
-- Wear out tool
|
-- Wear out tool
|
||||||
local tp = wielded:get_tool_capabilities()
|
local tp = wielded:get_tool_capabilities()
|
||||||
local dp = minetest.get_dig_params(def.groups, tp)
|
local dp = minetest.get_dig_params(def.groups, tp)
|
||||||
wielded:add_wear(dp.wear)
|
wielded:add_wear(dp.wear)
|
||||||
digger:set_wielded_item(wielded)
|
digger:set_wielded_item(wielded)
|
||||||
|
|
||||||
-- Add dropped items to object's inventory
|
-- Add dropped items to object's inventory
|
||||||
if digger:get_inventory() then
|
if digger:get_inventory() then
|
||||||
local _, dropped_item
|
local _, dropped_item
|
||||||
for _, dropped_item in ipairs(drops) do
|
for _, dropped_item in ipairs(drops) do
|
||||||
digger:get_inventory():add_item("main", dropped_item)
|
digger:get_inventory():add_item("main", dropped_item)
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local oldmetadata = nil
|
local oldmetadata = nil
|
||||||
if def.after_dig_node then
|
if def.after_dig_node then
|
||||||
oldmetadata = minetest.env:get_meta(pos):to_table()
|
oldmetadata = minetest.env:get_meta(pos):to_table()
|
||||||
|
@ -292,13 +292,6 @@ public:
|
|||||||
ServerActiveObject *puncher,
|
ServerActiveObject *puncher,
|
||||||
float time_from_last_punch)
|
float time_from_last_punch)
|
||||||
{
|
{
|
||||||
// Directly delete item in creative mode
|
|
||||||
if(g_settings->getBool("creative_mode") == true)
|
|
||||||
{
|
|
||||||
m_removed = true;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Take item into inventory
|
// Take item into inventory
|
||||||
ItemStack item = createItemStack();
|
ItemStack item = createItemStack();
|
||||||
Inventory *inv = puncher->getInventory();
|
Inventory *inv = puncher->getInventory();
|
||||||
@ -1143,16 +1136,6 @@ void PlayerSAO::disconnected()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PlayerSAO::createCreativeInventory()
|
|
||||||
{
|
|
||||||
if(m_inventory != &m_player->inventory)
|
|
||||||
delete m_inventory;
|
|
||||||
|
|
||||||
m_inventory = new Inventory(m_player->inventory);
|
|
||||||
m_inventory->clearContents();
|
|
||||||
scriptapi_get_creative_inventory(m_env->getLua(), this);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string PlayerSAO::getPropertyPacket()
|
std::string PlayerSAO::getPropertyPacket()
|
||||||
{
|
{
|
||||||
m_prop.is_visible = (getHP() != 0);
|
m_prop.is_visible = (getHP() != 0);
|
||||||
|
@ -163,8 +163,6 @@ public:
|
|||||||
|
|
||||||
void disconnected();
|
void disconnected();
|
||||||
|
|
||||||
void createCreativeInventory();
|
|
||||||
|
|
||||||
Player* getPlayer()
|
Player* getPlayer()
|
||||||
{
|
{
|
||||||
return m_player;
|
return m_player;
|
||||||
|
@ -514,19 +514,13 @@ void IDropAction::apply(InventoryManager *mgr, ServerActiveObject *player, IGame
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Don't remove from inventory in creative mode
|
// Take item from source list
|
||||||
if(g_settings->getBool("creative_mode") == true
|
ItemStack item2 = list_from->takeItem(from_i, actually_dropped_count);
|
||||||
&& from_inv.type == InventoryLocation::PLAYER){
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
// Take item from source list
|
|
||||||
ItemStack item2 = list_from->takeItem(from_i, actually_dropped_count);
|
|
||||||
|
|
||||||
if(item2.count != actually_dropped_count)
|
if(item2.count != actually_dropped_count)
|
||||||
errorstream<<"Could not take dropped count of items"<<std::endl;
|
errorstream<<"Could not take dropped count of items"<<std::endl;
|
||||||
|
|
||||||
mgr->setInventoryModified(from_inv);
|
mgr->setInventoryModified(from_inv);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
infostream<<"IDropAction::apply(): dropped "
|
infostream<<"IDropAction::apply(): dropped "
|
||||||
|
@ -150,7 +150,6 @@ public:
|
|||||||
|
|
||||||
u8 light;
|
u8 light;
|
||||||
|
|
||||||
// In creative mode, this is the invisible backup inventory
|
|
||||||
Inventory inventory;
|
Inventory inventory;
|
||||||
|
|
||||||
u16 hp;
|
u16 hp;
|
||||||
|
@ -5326,21 +5326,6 @@ void scriptapi_on_leaveplayer(lua_State *L, ServerActiveObject *player)
|
|||||||
scriptapi_run_callbacks(L, 1, RUN_CALLBACKS_MODE_FIRST);
|
scriptapi_run_callbacks(L, 1, RUN_CALLBACKS_MODE_FIRST);
|
||||||
}
|
}
|
||||||
|
|
||||||
void scriptapi_get_creative_inventory(lua_State *L, ServerActiveObject *player)
|
|
||||||
{
|
|
||||||
realitycheck(L);
|
|
||||||
assert(lua_checkstack(L, 20));
|
|
||||||
StackUnroller stack_unroller(L);
|
|
||||||
|
|
||||||
Inventory *inv = player->getInventory();
|
|
||||||
assert(inv);
|
|
||||||
|
|
||||||
lua_getglobal(L, "minetest");
|
|
||||||
lua_getfield(L, -1, "creative_inventory");
|
|
||||||
luaL_checktype(L, -1, LUA_TTABLE);
|
|
||||||
inventory_set_list_from_lua(inv, "main", L, -1, PLAYER_INVENTORY_SIZE);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void get_auth_handler(lua_State *L)
|
static void get_auth_handler(lua_State *L)
|
||||||
{
|
{
|
||||||
lua_getglobal(L, "minetest");
|
lua_getglobal(L, "minetest");
|
||||||
|
@ -61,7 +61,6 @@ void scriptapi_on_dieplayer(lua_State *L, ServerActiveObject *player);
|
|||||||
bool scriptapi_on_respawnplayer(lua_State *L, ServerActiveObject *player);
|
bool scriptapi_on_respawnplayer(lua_State *L, ServerActiveObject *player);
|
||||||
void scriptapi_on_joinplayer(lua_State *L, ServerActiveObject *player);
|
void scriptapi_on_joinplayer(lua_State *L, ServerActiveObject *player);
|
||||||
void scriptapi_on_leaveplayer(lua_State *L, ServerActiveObject *player);
|
void scriptapi_on_leaveplayer(lua_State *L, ServerActiveObject *player);
|
||||||
void scriptapi_get_creative_inventory(lua_State *L, ServerActiveObject *player);
|
|
||||||
bool scriptapi_get_auth(lua_State *L, const std::string &playername,
|
bool scriptapi_get_auth(lua_State *L, const std::string &playername,
|
||||||
std::string *dst_password, std::set<std::string> *dst_privs);
|
std::string *dst_password, std::set<std::string> *dst_privs);
|
||||||
void scriptapi_create_auth(lua_State *L, const std::string &playername,
|
void scriptapi_create_auth(lua_State *L, const std::string &playername,
|
||||||
|
@ -3131,8 +3131,7 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id)
|
|||||||
// Placement was handled in lua
|
// Placement was handled in lua
|
||||||
|
|
||||||
// Apply returned ItemStack
|
// Apply returned ItemStack
|
||||||
if(g_settings->getBool("creative_mode") == false)
|
playersao->setWieldedItem(item);
|
||||||
playersao->setWieldedItem(item);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// If item has node placement prediction, always send the above
|
// If item has node placement prediction, always send the above
|
||||||
@ -3158,8 +3157,7 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id)
|
|||||||
item, playersao, pointed))
|
item, playersao, pointed))
|
||||||
{
|
{
|
||||||
// Apply returned ItemStack
|
// Apply returned ItemStack
|
||||||
if(g_settings->getBool("creative_mode") == false)
|
playersao->setWieldedItem(item);
|
||||||
playersao->setWieldedItem(item);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // action == 4
|
} // action == 4
|
||||||
@ -4380,9 +4378,7 @@ void Server::UpdateCrafting(u16 peer_id)
|
|||||||
|
|
||||||
// Get a preview for crafting
|
// Get a preview for crafting
|
||||||
ItemStack preview;
|
ItemStack preview;
|
||||||
// No crafting in creative mode
|
getCraftingResult(&player->inventory, preview, false, this);
|
||||||
if(g_settings->getBool("creative_mode") == false)
|
|
||||||
getCraftingResult(&player->inventory, preview, false, this);
|
|
||||||
|
|
||||||
// Put the new preview in
|
// Put the new preview in
|
||||||
InventoryList *plist = player->inventory.getList("craftpreview");
|
InventoryList *plist = player->inventory.getList("craftpreview");
|
||||||
@ -4717,10 +4713,6 @@ PlayerSAO* Server::emergePlayer(const char *name, u16 peer_id)
|
|||||||
|
|
||||||
scriptapi_on_joinplayer(m_lua, playersao);
|
scriptapi_on_joinplayer(m_lua, playersao);
|
||||||
|
|
||||||
/* Creative mode */
|
|
||||||
if(g_settings->getBool("creative_mode"))
|
|
||||||
playersao->createCreativeInventory();
|
|
||||||
|
|
||||||
return playersao;
|
return playersao;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user