From 47572cc569b8a4f97316d26dabd05a4cb89dfd49 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 24 Jun 2020 12:28:24 +0200 Subject: [PATCH] Added Item Entity --- engine/init.js | 2 +- engine/item_entity.js | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 engine/item_entity.js diff --git a/engine/init.js b/engine/init.js index 0a5061c..2697765 100755 --- a/engine/init.js +++ b/engine/init.js @@ -161,7 +161,7 @@ dragonblocks.loadMod = function(modname){ dragonblocks.loadedMods.push(modname); dragonblocks.loadingMods[modname] = false; } -dragonblocks.modules = ["ressources", "key_handler", "gui", "mapgen", "world", "item", "node", "tool", "group", "builtin", "map_node", "map", "itemstack", "inventory", "inventory_group", "hudbar", "inventory_container", "creative_inventory", "recipe", "craftfield", "menu", "skin", "entity", "map_interaction", "spawned_entity", "timer", "player", "pixel_manipulator", "chat", "chatcommands", "mainmenu"]; +dragonblocks.modules = ["ressources", "key_handler", "gui", "mapgen", "world", "item", "node", "tool", "group", "builtin", "map_node", "map", "itemstack", "inventory", "inventory_group", "hudbar", "inventory_container", "creative_inventory", "recipe", "craftfield", "menu", "skin", "entity", "map_interaction", "spawned_entity", "item_entity", "timer", "player", "pixel_manipulator", "chat", "chatcommands", "mainmenu"]; dragonblocks.moduleCount = dragonblocks.modules.length; dragonblocks.loadModule = function(){ if(dragonblocks.modules[0]){ diff --git a/engine/item_entity.js b/engine/item_entity.js new file mode 100644 index 0000000..d736773 --- /dev/null +++ b/engine/item_entity.js @@ -0,0 +1,42 @@ +/* + * item_entity.js + * + * Copyright 2020 Elias Fleckenstein + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + * + */ + +dragonblocks.registerEntity({ + name: "dragonblocks:item_entity", + width: 0.4, + height: 0.4, + gravity: true, + onpunch: self => { + dragonblocks.dropItem(dragonblocks.player.give(self.meta.itemstring), self.x, self.y); + self.despawn(); + } +}); + +dragonblocks.dropItem = function(itemstack, x, y) { + if (! itemstack || ! itemstack.item || ! itemstack.count) + return; + let entity = dragonblocks.spawnEntity("dragonblocks:item_entity", x, y); + entity.meta.itemstring = itemstack.stringify(); + entity.texture = itemstack.toItem().texture; + entity.updateTexture(); +} -- 2.44.0