Add 'slingshot' mod
parent
5f01a745b2
commit
ab9c885823
|
@ -38,6 +38,7 @@ The game includes the mods from the default [minetest_game](https://github.com/m
|
|||
* [enchanting][] ([GPL / WTFPL / CC BY-SA-NA][lic.enchanting]) -- version: [13ea31c Git][ver.enchanting] *2016-12-16*
|
||||
* equipment/
|
||||
* [airtanks][] ([MIT][lic.airtanks]) -- version: [fc01ffb Git][ver.airtanks] *2017-04-01* ([patched][patch.airtanks])
|
||||
* [slingshot][] ([MIT][lic.slingshot] / [CC0][lic.cc0]) -- version: [f30e13d Git][ver.slingshot] *2017-06-01*
|
||||
* [xtraarmor][] ([CC BY-SA][lic.ccbysa3.0]) -- version: 0.3
|
||||
* farming/
|
||||
* [crops][] ([LGPL / CC BY-SA / CC BY / CC0][lic.crops]) -- version: [2b1bb37 Git][ver.crops] *2017-03-31* ([patched][patch.crops])
|
||||
|
@ -267,6 +268,7 @@ The game includes the mods from the default [minetest_game](https://github.com/m
|
|||
[rainbow_ore]: https://forum.minetest.net/viewtopic.php?id=13519
|
||||
[signs_lib]: https://forum.minetest.net/viewtopic.php?f=11&t=13762
|
||||
[simple_protection]: https://forum.minetest.net/viewtopic.php?t=9035
|
||||
[slingshot]: https://github.com/AntumDeluge/mtmod-slingshot
|
||||
[sneeker]: https://github.com/AntumDeluge/mtmod-sneeker
|
||||
[snowdrift]: https://forum.minetest.net/viewtopic.php?t=6854
|
||||
[spawneggs]: https://forum.minetest.net/viewtopic.php?t=6214
|
||||
|
@ -354,6 +356,7 @@ The game includes the mods from the default [minetest_game](https://github.com/m
|
|||
[lic.quartz]: mods/materials/quartz/LICENSE.txt
|
||||
[lic.rainbow_ore]: mods/materials/rainbow_ore/README.md
|
||||
[lic.signs_lib]: mods/signs/signs_lib/copyright.txt
|
||||
[lic.slingshot]: mods/equipment/slingshot/LICENSE.txt
|
||||
[lic.snowdrift]: mods/weather/snowdrift/license.txt
|
||||
[lic.spawneggs]: mods/spawning/spawneggs/README.txt
|
||||
[lic.spectator_mode]: mods/admin/spectator_mode/LICENSE
|
||||
|
@ -464,6 +467,7 @@ The game includes the mods from the default [minetest_game](https://github.com/m
|
|||
[ver.rainbow_ore]: https://github.com/FsxShader2012/rainbow_ore/tree/6e77693
|
||||
[ver.signs_lib]: https://github.com/minetest-mods/signs_lib/tree/2c36937
|
||||
[ver.simple_protection]: https://github.com/SmallJoker/simple_protection/tree/23c024f
|
||||
[ver.slingshot]: https://github.com/AntumDeluge/mtmod-slingshot/tree/f30e13d
|
||||
[ver.sneeker]: https://github.com/AntumDeluge/mtmod-sneeker/tree/258d366
|
||||
[ver.snowdrift]: https://github.com/paramat/snowdrift/tree/fcb0537
|
||||
[ver.spawneggs]: https://github.com/thefamilygrog66/spawneggs/tree/4650370
|
||||
|
|
|
@ -0,0 +1,121 @@
|
|||
Creative Commons Legal Code
|
||||
|
||||
CC0 1.0 Universal
|
||||
|
||||
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
|
||||
LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
|
||||
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
|
||||
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
|
||||
REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
|
||||
PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
|
||||
THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
|
||||
HEREUNDER.
|
||||
|
||||
Statement of Purpose
|
||||
|
||||
The laws of most jurisdictions throughout the world automatically confer
|
||||
exclusive Copyright and Related Rights (defined below) upon the creator
|
||||
and subsequent owner(s) (each and all, an "owner") of an original work of
|
||||
authorship and/or a database (each, a "Work").
|
||||
|
||||
Certain owners wish to permanently relinquish those rights to a Work for
|
||||
the purpose of contributing to a commons of creative, cultural and
|
||||
scientific works ("Commons") that the public can reliably and without fear
|
||||
of later claims of infringement build upon, modify, incorporate in other
|
||||
works, reuse and redistribute as freely as possible in any form whatsoever
|
||||
and for any purposes, including without limitation commercial purposes.
|
||||
These owners may contribute to the Commons to promote the ideal of a free
|
||||
culture and the further production of creative, cultural and scientific
|
||||
works, or to gain reputation or greater distribution for their Work in
|
||||
part through the use and efforts of others.
|
||||
|
||||
For these and/or other purposes and motivations, and without any
|
||||
expectation of additional consideration or compensation, the person
|
||||
associating CC0 with a Work (the "Affirmer"), to the extent that he or she
|
||||
is an owner of Copyright and Related Rights in the Work, voluntarily
|
||||
elects to apply CC0 to the Work and publicly distribute the Work under its
|
||||
terms, with knowledge of his or her Copyright and Related Rights in the
|
||||
Work and the meaning and intended legal effect of CC0 on those rights.
|
||||
|
||||
1. Copyright and Related Rights. A Work made available under CC0 may be
|
||||
protected by copyright and related or neighboring rights ("Copyright and
|
||||
Related Rights"). Copyright and Related Rights include, but are not
|
||||
limited to, the following:
|
||||
|
||||
i. the right to reproduce, adapt, distribute, perform, display,
|
||||
communicate, and translate a Work;
|
||||
ii. moral rights retained by the original author(s) and/or performer(s);
|
||||
iii. publicity and privacy rights pertaining to a person's image or
|
||||
likeness depicted in a Work;
|
||||
iv. rights protecting against unfair competition in regards to a Work,
|
||||
subject to the limitations in paragraph 4(a), below;
|
||||
v. rights protecting the extraction, dissemination, use and reuse of data
|
||||
in a Work;
|
||||
vi. database rights (such as those arising under Directive 96/9/EC of the
|
||||
European Parliament and of the Council of 11 March 1996 on the legal
|
||||
protection of databases, and under any national implementation
|
||||
thereof, including any amended or successor version of such
|
||||
directive); and
|
||||
vii. other similar, equivalent or corresponding rights throughout the
|
||||
world based on applicable law or treaty, and any national
|
||||
implementations thereof.
|
||||
|
||||
2. Waiver. To the greatest extent permitted by, but not in contravention
|
||||
of, applicable law, Affirmer hereby overtly, fully, permanently,
|
||||
irrevocably and unconditionally waives, abandons, and surrenders all of
|
||||
Affirmer's Copyright and Related Rights and associated claims and causes
|
||||
of action, whether now known or unknown (including existing as well as
|
||||
future claims and causes of action), in the Work (i) in all territories
|
||||
worldwide, (ii) for the maximum duration provided by applicable law or
|
||||
treaty (including future time extensions), (iii) in any current or future
|
||||
medium and for any number of copies, and (iv) for any purpose whatsoever,
|
||||
including without limitation commercial, advertising or promotional
|
||||
purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
|
||||
member of the public at large and to the detriment of Affirmer's heirs and
|
||||
successors, fully intending that such Waiver shall not be subject to
|
||||
revocation, rescission, cancellation, termination, or any other legal or
|
||||
equitable action to disrupt the quiet enjoyment of the Work by the public
|
||||
as contemplated by Affirmer's express Statement of Purpose.
|
||||
|
||||
3. Public License Fallback. Should any part of the Waiver for any reason
|
||||
be judged legally invalid or ineffective under applicable law, then the
|
||||
Waiver shall be preserved to the maximum extent permitted taking into
|
||||
account Affirmer's express Statement of Purpose. In addition, to the
|
||||
extent the Waiver is so judged Affirmer hereby grants to each affected
|
||||
person a royalty-free, non transferable, non sublicensable, non exclusive,
|
||||
irrevocable and unconditional license to exercise Affirmer's Copyright and
|
||||
Related Rights in the Work (i) in all territories worldwide, (ii) for the
|
||||
maximum duration provided by applicable law or treaty (including future
|
||||
time extensions), (iii) in any current or future medium and for any number
|
||||
of copies, and (iv) for any purpose whatsoever, including without
|
||||
limitation commercial, advertising or promotional purposes (the
|
||||
"License"). The License shall be deemed effective as of the date CC0 was
|
||||
applied by Affirmer to the Work. Should any part of the License for any
|
||||
reason be judged legally invalid or ineffective under applicable law, such
|
||||
partial invalidity or ineffectiveness shall not invalidate the remainder
|
||||
of the License, and in such case Affirmer hereby affirms that he or she
|
||||
will not (i) exercise any of his or her remaining Copyright and Related
|
||||
Rights in the Work or (ii) assert any associated claims and causes of
|
||||
action with respect to the Work, in either case contrary to Affirmer's
|
||||
express Statement of Purpose.
|
||||
|
||||
4. Limitations and Disclaimers.
|
||||
|
||||
a. No trademark or patent rights held by Affirmer are waived, abandoned,
|
||||
surrendered, licensed or otherwise affected by this document.
|
||||
b. Affirmer offers the Work as-is and makes no representations or
|
||||
warranties of any kind concerning the Work, express, implied,
|
||||
statutory or otherwise, including without limitation warranties of
|
||||
title, merchantability, fitness for a particular purpose, non
|
||||
infringement, or the absence of latent or other defects, accuracy, or
|
||||
the present or absence of errors, whether or not discoverable, all to
|
||||
the greatest extent permissible under applicable law.
|
||||
c. Affirmer disclaims responsibility for clearing rights of other persons
|
||||
that may apply to the Work or any use thereof, including without
|
||||
limitation any person's Copyright and Related Rights in the Work.
|
||||
Further, Affirmer disclaims responsibility for obtaining any necessary
|
||||
consents, permissions or other rights required for any use of the
|
||||
Work.
|
||||
d. Affirmer understands and acknowledges that Creative Commons is not a
|
||||
party to this document and has no duty or obligation with respect to
|
||||
this CC0 or use of the Work.
|
|
@ -0,0 +1,21 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright © 2007 Jordan Irwin
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||
of the Software, and to permit persons to whom the Software is furnished to do
|
||||
so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
|
@ -0,0 +1,45 @@
|
|||
# Slingshot Mod for Minetest
|
||||
|
||||
### Description:
|
||||
|
||||
Adds a slingshot that can throw inventory items as ammunition
|
||||
|
||||
![Screenshot](screenshot.png)
|
||||
|
||||
Depends:
|
||||
- default
|
||||
|
||||
|
||||
### Licensing:
|
||||
|
||||
- Original code by [AiTechEye][]: [CC0][lic.cc0]
|
||||
- Code by Jordan Irwin: [MIT][lic.mit]
|
||||
|
||||
|
||||
### Functions:
|
||||
|
||||
- *Right-click*: Changes ammo slot between left & right of slingshot
|
||||
- *Left-click*: Throws items from selected ammo slot
|
||||
|
||||
|
||||
### Crafting:
|
||||
|
||||
* `SI` = default:steel_ingot
|
||||
* `SB` = default:steelblock
|
||||
|
||||
Craft recipe:
|
||||
|
||||
╔════╦════╦════╗
|
||||
║ SI ║ ║ SI ║
|
||||
╠════╬════╬════╣
|
||||
║ ║ SB ║ ║
|
||||
╠════╬════╬════╣
|
||||
║ ║ SI ║ ║
|
||||
╚════╩════╩════╝
|
||||
|
||||
|
||||
|
||||
[AiTechEye]: https://forum.minetest.net/memberlist.php?mode=viewprofile&u=16172
|
||||
|
||||
[lic.cc0]: LICENSE-cc0.txt
|
||||
[lic.mit]: LICENSE.txt
|
|
@ -0,0 +1,11 @@
|
|||
-- Craft recipes for slingshot mod
|
||||
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'slingshot:slingshot',
|
||||
recipe = {
|
||||
{'default:steel_ingot', '', 'default:steel_ingot'},
|
||||
{'', 'default:steelblock', ''},
|
||||
{'', 'default:steel_ingot', ''},
|
||||
}
|
||||
})
|
|
@ -0,0 +1 @@
|
|||
default
|
|
@ -0,0 +1 @@
|
|||
Adds a slingshot that can throw inventory items as ammunition.
|
|
@ -0,0 +1,59 @@
|
|||
-- Functions for slingshot mod
|
||||
|
||||
|
||||
slingshot.tmp_throw = {}
|
||||
slingshot.tmp_throw_timer = 0
|
||||
slingshot.tmp_time = tonumber(minetest.setting_get('item_entity_ttl')) or 890
|
||||
|
||||
|
||||
minetest.register_globalstep(function(dtime)
|
||||
slingshot.tmp_throw_timer = slingshot.tmp_throw_timer + dtime
|
||||
if slingshot.tmp_throw_timer < 0.2 then return end
|
||||
slingshot.tmp_throw_timer = 0
|
||||
for i, t in pairs(slingshot.tmp_throw) do
|
||||
t.timer = t.timer-0.25
|
||||
if t.timer <= 0 or t.ob == nil or t.ob:getpos() == nil then table.remove(slingshot.tmp_throw, i) return end
|
||||
for ii, ob in pairs(minetest.get_objects_inside_radius(t.ob:getpos(), 1.5)) do
|
||||
if (not ob:get_luaentity()) or (ob:get_luaentity() and (ob:get_luaentity().name ~= '__builtin:item')) then
|
||||
if (not ob:is_player()) or (ob:is_player() and ob:get_player_name(ob) ~= t.user and minetest.setting_getbool('enable_pvp') == true) then
|
||||
ob:set_hp(ob:get_hp()-5)
|
||||
ob:punch(ob, {full_punch_interval=1.0, damage_groups={fleshy=4}}, 'default:bronze_pick', nil)
|
||||
t.ob:setvelocity({x=0, y=0, z=0})
|
||||
if ob:get_hp() <= 0 and ob:is_player() == false then ob:remove() end
|
||||
t.ob:setacceleration({x=0, y=-10,z=0})
|
||||
t.ob:setvelocity({x=0, y=-10, z=0})
|
||||
table.remove(slingshot.tmp_throw, i)
|
||||
minetest.sound_play('slingshot_hard_punch', {pos=ob:getpos(), gain = 1.0, max_hear_distance = 5,})
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
function slingshot.on_use(itemstack, user)
|
||||
local veloc = 15
|
||||
local pos = user:getpos()
|
||||
local upos = {x=pos.x, y=pos.y+2, z=pos.z}
|
||||
local dir = user:get_look_dir()
|
||||
local item = itemstack:to_table()
|
||||
local mode = minetest.deserialize(item['metadata'])
|
||||
if mode == nil then mode = 1 else mode = mode.mode end
|
||||
|
||||
local item = user:get_inventory():get_stack('main', user:get_wield_index()+mode):get_name()
|
||||
if item == '' then return itemstack end
|
||||
local e = minetest.add_item({x=pos.x, y=pos.y+2, z=pos.z}, item)
|
||||
e:setvelocity({x=dir.x*veloc, y=dir.y*veloc, z=dir.z*veloc})
|
||||
e:setacceleration({x=dir.x*-3, y=-5, z=dir.z*-3})
|
||||
e:get_luaentity().age = slingshot.tmp_time
|
||||
table.insert(slingshot.tmp_throw, {ob=e, timer=2, user=user:get_player_name()})
|
||||
|
||||
if item == 'slingshot:slingshot' then
|
||||
itemstack:set_wear(9999999)
|
||||
end
|
||||
|
||||
user:get_inventory():remove_item('main', item)
|
||||
minetest.sound_play('slingshot_throw', {pos=pos, gain = 1.0, max_hear_distance = 5,})
|
||||
return itemstack
|
||||
end
|
|
@ -0,0 +1,15 @@
|
|||
|
||||
slingshot = {}
|
||||
slingshot.modname = minetest.get_current_modname()
|
||||
slingshot.modpath = minetest.get_modpath(slingshot.modname)
|
||||
|
||||
|
||||
local scripts = {
|
||||
'functions',
|
||||
'register',
|
||||
'crafting',
|
||||
}
|
||||
|
||||
for index, script in ipairs(scripts) do
|
||||
dofile(slingshot.modpath .. '/' .. script .. '.lua')
|
||||
end
|
|
@ -0,0 +1,2 @@
|
|||
name = slingshot
|
||||
version = 10.0
|
|
@ -0,0 +1,41 @@
|
|||
-- Registrations for slinghot mod
|
||||
|
||||
|
||||
minetest.register_tool('slingshot:slingshot', {
|
||||
description = 'Slingshot',
|
||||
range = 4,
|
||||
inventory_image = 'slingshot.png',
|
||||
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
if pointed_thing.ref and pointed_thing.ref:is_player() == false and pointed_thing.ref:get_luaentity().name == '__builtin:item' then
|
||||
pointed_thing.ref:punch(user, {full_punch_interval=1.0, damage_groups={fleshy=4}}, 'default:bronze_pick', nil)
|
||||
return itemstack
|
||||
end
|
||||
slingshot.on_use(itemstack, user)
|
||||
return itemstack
|
||||
end,
|
||||
|
||||
on_place = function(itemstack, user, pointed_thing)
|
||||
local item = itemstack:to_table()
|
||||
local meta = minetest.deserialize(item['metadata'])
|
||||
local mode = 0
|
||||
if meta == nil then meta = {} mode = 1 end
|
||||
if meta.mode == nil then meta.mode = 1 end
|
||||
mode = (meta.mode)
|
||||
if mode == 1 then
|
||||
mode = -1
|
||||
minetest.chat_send_player(user:get_player_name(), 'Use stack to left')
|
||||
else
|
||||
mode = 1
|
||||
minetest.chat_send_player(user:get_player_name(), 'Use stack to right ')
|
||||
end
|
||||
meta.mode = mode
|
||||
item.metadata = minetest.serialize(meta)
|
||||
item.meta = minetest.serialize(meta)
|
||||
itemstack:replace(item)
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
|
||||
|
||||
minetest.register_alias('slingshot', 'slingshot:slingshot')
|
Binary file not shown.
After Width: | Height: | Size: 291 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 544 B |
Loading…
Reference in New Issue