Charakterbewegungen hinzugefügt, Deko hinzugefügt, Kochrezepte angepasst
This commit is contained in:
parent
95945c0306
commit
a0c893ca0b
1124 changed files with 64294 additions and 763 deletions
657
mods/moreblocks/invsaw/.luacheckrc
Normal file
657
mods/moreblocks/invsaw/.luacheckrc
Normal file
|
@ -0,0 +1,657 @@
|
|||
std = "lua51+luajit+minetest+invsaw"
|
||||
unused_args = false
|
||||
max_line_length = 120
|
||||
|
||||
stds.minetest = {
|
||||
read_globals = {
|
||||
"DIR_DELIM",
|
||||
"dump",
|
||||
"dump2",
|
||||
|
||||
math = {
|
||||
fields = {
|
||||
abs = {},
|
||||
acos = {},
|
||||
asin = {},
|
||||
atan = {},
|
||||
atan2 = {},
|
||||
ceil = {},
|
||||
cos = {},
|
||||
cosh = {},
|
||||
deg = {},
|
||||
exp = {},
|
||||
factorial = {},
|
||||
floor = {},
|
||||
fmod = {},
|
||||
frexp = {},
|
||||
huge = {},
|
||||
hypot = {},
|
||||
ldexp = {},
|
||||
log = {},
|
||||
log10 = {},
|
||||
max = {},
|
||||
min = {},
|
||||
modf = {},
|
||||
pi = {},
|
||||
pow = {},
|
||||
rad = {},
|
||||
random = {},
|
||||
randomseed = {},
|
||||
round = {},
|
||||
sign = {},
|
||||
sin = {},
|
||||
sinh = {},
|
||||
sqrt = {},
|
||||
tan = {},
|
||||
tanh = {},
|
||||
},
|
||||
},
|
||||
table = {
|
||||
fields = {
|
||||
copy = {},
|
||||
concat = {},
|
||||
foreach = {},
|
||||
foreachi = {},
|
||||
getn = {},
|
||||
indexof = {},
|
||||
insert = {},
|
||||
insert_all = {},
|
||||
key_value_swap = {},
|
||||
maxn = {},
|
||||
move = {},
|
||||
remove = {},
|
||||
shuffle = {},
|
||||
sort = {},
|
||||
},
|
||||
},
|
||||
string = {
|
||||
fields = {
|
||||
byte = {},
|
||||
char = {},
|
||||
dump = {},
|
||||
find = {},
|
||||
format = {},
|
||||
gmatch = {},
|
||||
len = {},
|
||||
lower = {},
|
||||
match = {},
|
||||
rep = {},
|
||||
reverse = {},
|
||||
split = {},
|
||||
sub = {},
|
||||
trim = {},
|
||||
upper = {},
|
||||
},
|
||||
},
|
||||
vector = {
|
||||
fields = {
|
||||
add = {},
|
||||
angle = {},
|
||||
apply = {},
|
||||
check = {},
|
||||
combine = {},
|
||||
copy = {},
|
||||
cross = {},
|
||||
dir_to_rotation = {},
|
||||
direction = {},
|
||||
distance = {},
|
||||
divide = {},
|
||||
dot = {},
|
||||
equals = {},
|
||||
floor = {},
|
||||
from_string = {},
|
||||
length = {},
|
||||
metatable = {},
|
||||
multiply = {},
|
||||
new = {},
|
||||
normalize = {},
|
||||
offset = {},
|
||||
rotate = {},
|
||||
rotate_around_axis = {},
|
||||
round = {},
|
||||
sort = {},
|
||||
subtract = {},
|
||||
to_string = {},
|
||||
zero = {},
|
||||
},
|
||||
},
|
||||
|
||||
ItemStack = {
|
||||
fields = {
|
||||
add_item = {},
|
||||
add_wear = {},
|
||||
add_wear_by_uses = {},
|
||||
clear = {},
|
||||
get_count = {},
|
||||
get_definition = {},
|
||||
get_description = {},
|
||||
get_free_space = {},
|
||||
get_meta = {},
|
||||
get_metadata = {},
|
||||
get_name = {},
|
||||
get_short_description = {},
|
||||
get_stack_max = {},
|
||||
get_tool_capabilities = {},
|
||||
get_wear = {},
|
||||
is_empty = {},
|
||||
is_known = {},
|
||||
item_fits = {},
|
||||
peek_item = {},
|
||||
replace = {},
|
||||
set_count = {},
|
||||
set_metadata = {},
|
||||
set_name = {},
|
||||
set_wear = {},
|
||||
take_item = {},
|
||||
to_string = {},
|
||||
to_table = {},
|
||||
},
|
||||
},
|
||||
PerlinNoise = {
|
||||
fields = {
|
||||
get_2d = {},
|
||||
get_3d = {},
|
||||
},
|
||||
},
|
||||
PerlinNoiseMap = {
|
||||
fields = {
|
||||
calc_2d_map = {},
|
||||
calc_3d_map = {},
|
||||
get_2d_map = {},
|
||||
get_2d_map_flat = {},
|
||||
get_3d_map = {},
|
||||
get_3d_map_flat = {},
|
||||
get_map_slice = {},
|
||||
},
|
||||
},
|
||||
PseudoRandom = {
|
||||
fields = {
|
||||
next = {},
|
||||
},
|
||||
},
|
||||
PcgRandom = {
|
||||
fields = {
|
||||
next = {},
|
||||
rand_normal_dist = {},
|
||||
},
|
||||
},
|
||||
SecureRandom = {
|
||||
fields = {
|
||||
next_bytes = {},
|
||||
},
|
||||
},
|
||||
Settings = {
|
||||
fields = {
|
||||
get = {},
|
||||
get_bool = {},
|
||||
get_flags = {},
|
||||
get_names = {},
|
||||
get_np_group = {},
|
||||
remove = {},
|
||||
set = {},
|
||||
set_bool = {},
|
||||
set_np_group = {},
|
||||
to_table = {},
|
||||
write = {},
|
||||
},
|
||||
},
|
||||
VoxelArea = {
|
||||
fields = {
|
||||
MaxEdge = {},
|
||||
MinEdge = {},
|
||||
contains = {},
|
||||
containsi = {},
|
||||
containsp = {},
|
||||
getExtent = {},
|
||||
getVolume = {},
|
||||
index = {},
|
||||
indexp = {},
|
||||
iter = {},
|
||||
iterp = {},
|
||||
new = {},
|
||||
position = {},
|
||||
ystride = {},
|
||||
zstride = {},
|
||||
},
|
||||
},
|
||||
VoxelManip = {
|
||||
fields = {
|
||||
calc_lighting = {},
|
||||
get_data = {},
|
||||
get_emerged_area = {},
|
||||
get_light_data = {},
|
||||
get_node_at = {},
|
||||
get_param2_data = {},
|
||||
read_from_map = {},
|
||||
set_data = {},
|
||||
set_light_data = {},
|
||||
set_lighting = {},
|
||||
set_node_at = {},
|
||||
set_param2_data = {},
|
||||
update_liquids = {},
|
||||
update_map = {},
|
||||
was_modified = {},
|
||||
write_to_map = {},
|
||||
},
|
||||
},
|
||||
|
||||
minetest = {
|
||||
fields = {
|
||||
CONTENT_AIR = {},
|
||||
CONTENT_IGNORE = {},
|
||||
CONTENT_UNKNOWN = {},
|
||||
EMERGE_CANCELLED = {},
|
||||
EMERGE_ERRORED = {},
|
||||
EMERGE_FROM_DISK = {},
|
||||
EMERGE_FROM_MEMORY = {},
|
||||
EMERGE_GENERATED = {},
|
||||
LIGHT_MAX = {},
|
||||
MAP_BLOCKSIZE = {},
|
||||
PLAYER_MAX_BREATH_DEFAULT = {},
|
||||
PLAYER_MAX_HP_DEFAULT = {},
|
||||
add_entity = {},
|
||||
add_item = {},
|
||||
add_node = {},
|
||||
add_node_level = {},
|
||||
add_particle = {},
|
||||
add_particlespawner = {},
|
||||
after = {},
|
||||
async_event_handler = {},
|
||||
async_jobs = {},
|
||||
auth_reload = {},
|
||||
ban_player = {},
|
||||
builtin_auth_handler = {},
|
||||
bulk_set_node = {},
|
||||
calculate_knockback = {},
|
||||
callback_origins = {},
|
||||
cancel_shutdown_requests = {},
|
||||
chat_send_all = {},
|
||||
chat_send_player = {},
|
||||
chatcommands = {},
|
||||
check_for_falling = {},
|
||||
check_password_entry = {},
|
||||
check_player_privs = {},
|
||||
check_single_for_falling = {},
|
||||
clear_craft = {},
|
||||
clear_objects = {},
|
||||
clear_registered_biomes = {},
|
||||
clear_registered_decorations = {},
|
||||
clear_registered_ores = {},
|
||||
clear_registered_schematics = {},
|
||||
close_formspec = {},
|
||||
colorize = {},
|
||||
colorspec_to_bytes = {},
|
||||
colorspec_to_colorstring = {},
|
||||
compare_block_status = {},
|
||||
compress = {},
|
||||
cpdir = {},
|
||||
craft_predict = {},
|
||||
craftitemdef_default = {},
|
||||
create_detached_inventory = {},
|
||||
create_detached_inventory_raw = {},
|
||||
create_schematic = {},
|
||||
debug = {},
|
||||
decode_base64 = {},
|
||||
decompress = {},
|
||||
delete_area = {},
|
||||
delete_particlespawner = {},
|
||||
deserialize = {},
|
||||
detached_inventories = {},
|
||||
dig_node = {},
|
||||
dir_to_facedir = {},
|
||||
dir_to_wallmounted = {},
|
||||
dir_to_yaw = {},
|
||||
disconnect_player = {},
|
||||
do_async_callback = {},
|
||||
do_item_eat = {},
|
||||
dynamic_add_media = {},
|
||||
dynamic_media_callbacks = {},
|
||||
emerge_area = {},
|
||||
encode_base64 = {},
|
||||
encode_png = {},
|
||||
env = {},
|
||||
explode_scrollbar_event = {},
|
||||
explode_table_event = {},
|
||||
explode_textlist_event = {},
|
||||
facedir_to_dir = {},
|
||||
features = {},
|
||||
find_node_near = {},
|
||||
find_nodes_in_area = {},
|
||||
find_nodes_in_area_under_air = {},
|
||||
find_nodes_with_meta = {},
|
||||
find_path = {},
|
||||
fix_light = {},
|
||||
forceload_block = {},
|
||||
forceload_free_block = {},
|
||||
format_chat_message = {},
|
||||
formspec_escape = {},
|
||||
generate_decorations = {},
|
||||
generate_ores = {},
|
||||
get_all_craft_recipes = {},
|
||||
get_artificial_light = {},
|
||||
get_auth_handler = {},
|
||||
get_background_escape_sequence = {},
|
||||
get_ban_description = {},
|
||||
get_ban_list = {},
|
||||
get_biome_data = {},
|
||||
get_biome_id = {},
|
||||
get_biome_name = {},
|
||||
get_builtin_path = {},
|
||||
get_color_escape_sequence = {},
|
||||
get_connected_players = {},
|
||||
get_content_id = {},
|
||||
get_craft_recipe = {},
|
||||
get_craft_result = {},
|
||||
get_current_modname = {},
|
||||
get_day_count = {},
|
||||
get_decoration_id = {},
|
||||
get_dig_params = {},
|
||||
get_dir_list = {},
|
||||
get_gametime = {},
|
||||
get_gen_notify = {},
|
||||
get_heat = {},
|
||||
get_hit_params = {},
|
||||
get_humidity = {},
|
||||
get_inventory = {},
|
||||
get_item_group = {},
|
||||
get_last_run_mod = {},
|
||||
get_mapgen_object = {},
|
||||
get_mapgen_params = {},
|
||||
get_mapgen_setting = {},
|
||||
get_mapgen_setting_noiseparams = {},
|
||||
get_meta = {},
|
||||
get_mod_storage = {},
|
||||
get_modnames = {},
|
||||
get_modpath = {},
|
||||
get_name_from_content_id = {},
|
||||
get_natural_light = {},
|
||||
get_node = {},
|
||||
get_node_drops = {},
|
||||
get_node_group = {},
|
||||
get_node_level = {},
|
||||
get_node_light = {},
|
||||
get_node_max_level = {},
|
||||
get_node_or_nil = {},
|
||||
get_node_timer = {},
|
||||
get_noiseparams = {},
|
||||
get_objects_in_area = {},
|
||||
get_objects_inside_radius = {},
|
||||
get_password_hash = {},
|
||||
get_perlin = {},
|
||||
get_perlin_map = {},
|
||||
get_player_by_name = {},
|
||||
get_player_information = {},
|
||||
get_player_ip = {},
|
||||
get_player_privs = {},
|
||||
get_player_radius_area = {},
|
||||
get_pointed_thing_position = {},
|
||||
get_position_from_hash = {},
|
||||
get_server_max_lag = {},
|
||||
get_server_status = {},
|
||||
get_server_uptime = {},
|
||||
get_spawn_level = {},
|
||||
get_timeofday = {},
|
||||
get_tool_wear_after_use = {},
|
||||
get_translated_string = {},
|
||||
get_translator = {},
|
||||
get_us_time = {},
|
||||
get_user_path = {},
|
||||
get_version = {},
|
||||
get_voxel_manip = {},
|
||||
get_worldpath = {},
|
||||
global_exists = {},
|
||||
handle_async = {},
|
||||
handle_node_drops = {},
|
||||
has_feature = {},
|
||||
hash_node_position = {},
|
||||
hud_replace_builtin = {},
|
||||
inventorycube = {},
|
||||
is_area_protected = {},
|
||||
is_colored_paramtype = {},
|
||||
is_creative_enabled = {},
|
||||
is_nan = {},
|
||||
is_player = {},
|
||||
is_protected = {},
|
||||
is_singleplayer = {},
|
||||
is_yes = {},
|
||||
item_drop = {},
|
||||
item_eat = {},
|
||||
item_place = {},
|
||||
item_place_node = {},
|
||||
item_place_object = {},
|
||||
item_secondary_use = {},
|
||||
itemstring_with_color = {},
|
||||
itemstring_with_palette = {},
|
||||
kick_player = {},
|
||||
line_of_sight = {},
|
||||
load_area = {},
|
||||
log = {},
|
||||
luaentities = {},
|
||||
mkdir = {},
|
||||
mod_channel_join = {},
|
||||
mvdir = {},
|
||||
node_dig = {},
|
||||
node_punch = {},
|
||||
nodedef_default = {},
|
||||
noneitemdef_default = {},
|
||||
notify_authentication_modified = {},
|
||||
object_refs = {},
|
||||
on_craft = {},
|
||||
override_chatcommand = {},
|
||||
override_item = {},
|
||||
parse_coordinates = {},
|
||||
parse_json = {},
|
||||
parse_relative_number = {},
|
||||
place_node = {},
|
||||
place_schematic = {},
|
||||
place_schematic_on_vmanip = {},
|
||||
player_exists = {},
|
||||
pointed_thing_to_face_pos = {},
|
||||
pos_to_string = {},
|
||||
print = {},
|
||||
privs_to_string = {},
|
||||
punch_node = {},
|
||||
raillike_group = {},
|
||||
raycast = {},
|
||||
read_schematic = {},
|
||||
record_protection_violation = {},
|
||||
register_abm = {},
|
||||
register_alias = {},
|
||||
register_alias_force = {},
|
||||
register_allow_player_inventory_action = {},
|
||||
register_async_dofile = {},
|
||||
register_authentication_handler = {},
|
||||
register_biome = {},
|
||||
register_can_bypass_userlimit = {},
|
||||
register_chatcommand = {},
|
||||
register_craft = {},
|
||||
register_craft_predict = {},
|
||||
register_craftitem = {},
|
||||
register_decoration = {},
|
||||
register_entity = {},
|
||||
register_globalstep = {},
|
||||
register_item = {},
|
||||
register_lbm = {},
|
||||
register_node = {},
|
||||
register_on_auth_fail = {},
|
||||
register_on_authplayer = {},
|
||||
register_on_chat_message = {},
|
||||
register_on_chatcommand = {},
|
||||
register_on_cheat = {},
|
||||
register_on_craft = {},
|
||||
register_on_dieplayer = {},
|
||||
register_on_dignode = {},
|
||||
register_on_generated = {},
|
||||
register_on_item_eat = {},
|
||||
register_on_joinplayer = {},
|
||||
register_on_leaveplayer = {},
|
||||
register_on_liquid_transformed = {},
|
||||
register_on_mapgen_init = {},
|
||||
register_on_modchannel_message = {},
|
||||
register_on_mods_loaded = {},
|
||||
register_on_newplayer = {},
|
||||
register_on_placenode = {},
|
||||
register_on_player_hpchange = {},
|
||||
register_on_player_inventory_action = {},
|
||||
register_on_player_receive_fields = {},
|
||||
register_on_prejoinplayer = {},
|
||||
register_on_priv_grant = {},
|
||||
register_on_priv_revoke = {},
|
||||
register_on_protection_violation = {},
|
||||
register_on_punchnode = {},
|
||||
register_on_punchplayer = {},
|
||||
register_on_respawnplayer = {},
|
||||
register_on_rightclickplayer = {},
|
||||
register_on_shutdown = {},
|
||||
register_ore = {},
|
||||
register_playerevent = {},
|
||||
register_privilege = {},
|
||||
register_schematic = {},
|
||||
register_tool = {},
|
||||
registered_abms = {other_fields = true},
|
||||
registered_aliases = {other_fields = true},
|
||||
registered_allow_player_inventory_actions = {other_fields = true},
|
||||
registered_biomes = {other_fields = true},
|
||||
registered_can_bypass_userlimit = {other_fields = true},
|
||||
registered_chatcommands = {other_fields = true},
|
||||
registered_craft_predicts = {other_fields = true},
|
||||
registered_craftitems = {other_fields = true},
|
||||
registered_decorations = {other_fields = true},
|
||||
registered_entities = {other_fields = true},
|
||||
registered_globalsteps = {other_fields = true},
|
||||
registered_items = {other_fields = true},
|
||||
registered_lbms = {other_fields = true},
|
||||
registered_nodes = {other_fields = true},
|
||||
registered_on_authplayers = {other_fields = true},
|
||||
registered_on_chat_messages = {other_fields = true},
|
||||
registered_on_chatcommands = {other_fields = true},
|
||||
registered_on_cheats = {other_fields = true},
|
||||
registered_on_crafts = {other_fields = true},
|
||||
registered_on_dieplayers = {other_fields = true},
|
||||
registered_on_dignodes = {other_fields = true},
|
||||
registered_on_generateds = {other_fields = true},
|
||||
registered_on_item_eats = {other_fields = true},
|
||||
registered_on_joinplayers = {other_fields = true},
|
||||
registered_on_leaveplayers = {other_fields = true},
|
||||
registered_on_liquid_transformed = {other_fields = true},
|
||||
registered_on_modchannel_message = {other_fields = true},
|
||||
registered_on_mods_loaded = {other_fields = true},
|
||||
registered_on_newplayers = {other_fields = true},
|
||||
registered_on_placenodes = {other_fields = true},
|
||||
registered_on_player_hpchange = {other_fields = true},
|
||||
registered_on_player_hpchanges = {other_fields = true},
|
||||
registered_on_player_inventory_actions = {other_fields = true},
|
||||
registered_on_player_receive_fields = {other_fields = true},
|
||||
registered_on_prejoinplayers = {other_fields = true},
|
||||
registered_on_priv_grant = {other_fields = true},
|
||||
registered_on_priv_revoke = {other_fields = true},
|
||||
registered_on_protection_violation = {other_fields = true},
|
||||
registered_on_punchnodes = {other_fields = true},
|
||||
registered_on_punchplayers = {other_fields = true},
|
||||
registered_on_respawnplayers = {other_fields = true},
|
||||
registered_on_rightclickplayers = {other_fields = true},
|
||||
registered_on_shutdown = {other_fields = true},
|
||||
registered_ores = {other_fields = true},
|
||||
registered_playerevents = {other_fields = true},
|
||||
registered_privileges = {other_fields = true},
|
||||
registered_tools = {other_fields = true},
|
||||
remove_detached_inventory = {},
|
||||
remove_detached_inventory_raw = {},
|
||||
remove_node = {},
|
||||
remove_player = {},
|
||||
remove_player_auth = {},
|
||||
request_http_api = {},
|
||||
request_insecure_environment = {},
|
||||
request_shutdown = {},
|
||||
rgba = {},
|
||||
rmdir = {},
|
||||
rollback_get_last_node_actor = {},
|
||||
rollback_get_node_actions = {},
|
||||
rollback_punch_callbacks = {},
|
||||
rollback_revert_actions_by = {},
|
||||
rotate_and_place = {},
|
||||
rotate_node = {},
|
||||
run_callbacks = {},
|
||||
run_priv_callbacks = {},
|
||||
safe_file_write = {},
|
||||
send_join_message = {},
|
||||
send_leave_message = {},
|
||||
serialize = {},
|
||||
serialize_roundtrip = {},
|
||||
serialize_schematic = {},
|
||||
set_gen_notify = {},
|
||||
set_last_run_mod = {},
|
||||
set_mapgen_params = {},
|
||||
set_mapgen_setting = {},
|
||||
set_mapgen_setting_noiseparams = {},
|
||||
set_node = {},
|
||||
set_node_level = {},
|
||||
set_noiseparams = {},
|
||||
set_player_password = {},
|
||||
set_player_privs = {},
|
||||
set_timeofday = {},
|
||||
setting_get = {},
|
||||
setting_get_pos = {},
|
||||
setting_getbool = {},
|
||||
setting_save = {},
|
||||
setting_set = {},
|
||||
setting_setbool = {},
|
||||
settings = {
|
||||
fields = {
|
||||
get = {},
|
||||
get_bool = {},
|
||||
get_np_group = {},
|
||||
get_flags = {},
|
||||
set = {},
|
||||
set_bool = {},
|
||||
set_np_group = {},
|
||||
remove = {},
|
||||
get_names = {},
|
||||
write = {},
|
||||
to_table = {},
|
||||
},
|
||||
},
|
||||
sha1 = {},
|
||||
show_formspec = {},
|
||||
show_general_help_formspec = {},
|
||||
show_privs_help_formspec = {},
|
||||
sound_fade = {},
|
||||
sound_play = {},
|
||||
sound_stop = {},
|
||||
spawn_falling_node = {},
|
||||
spawn_item = {},
|
||||
spawn_tree = {},
|
||||
string_to_area = {},
|
||||
string_to_pos = {},
|
||||
string_to_privs = {},
|
||||
strip_background_colors = {},
|
||||
strip_colors = {},
|
||||
strip_foreground_colors = {},
|
||||
strip_param2_color = {},
|
||||
swap_node = {},
|
||||
tooldef_default = {},
|
||||
transforming_liquid_add = {},
|
||||
translate = {},
|
||||
unban_player_or_ip = {},
|
||||
unregister_biome = {},
|
||||
unregister_chatcommand = {},
|
||||
unregister_item = {},
|
||||
wallmounted_to_dir = {},
|
||||
wrap_text = {},
|
||||
write_json = {},
|
||||
yaw_to_dir = {},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
stds.invsaw = {
|
||||
globals = {
|
||||
"invsaw",
|
||||
},
|
||||
read_globals = {
|
||||
"fmod",
|
||||
"stairsplus",
|
||||
"unified_inventory",
|
||||
},
|
||||
}
|
32
mods/moreblocks/invsaw/api.lua
Normal file
32
mods/moreblocks/invsaw/api.lua
Normal file
|
@ -0,0 +1,32 @@
|
|||
local server_is_creative = minetest.settings:get_bool("creative_mode", false)
|
||||
|
||||
function invsaw.has_saw_in_inventory(player)
|
||||
local inv = player:get_inventory()
|
||||
return inv:contains_item("main", invsaw.settings.saw_item)
|
||||
end
|
||||
|
||||
function invsaw.can_use_saw(player)
|
||||
return (
|
||||
server_is_creative
|
||||
or minetest.check_player_privs(player, invsaw.settings.creative_priv)
|
||||
or minetest.check_player_privs(player, invsaw.settings.priv)
|
||||
)
|
||||
end
|
||||
|
||||
function invsaw.allow_use_saw(player)
|
||||
return (
|
||||
server_is_creative
|
||||
or minetest.check_player_privs(player, invsaw.settings.creative_priv)
|
||||
or (minetest.check_player_privs(player, invsaw.settings.priv) and invsaw.has_saw_in_inventory(player))
|
||||
)
|
||||
end
|
||||
|
||||
function invsaw.check_use_status(player)
|
||||
if invsaw.can_use_saw(player) then
|
||||
invsaw.initialize_inventory(player)
|
||||
else
|
||||
invsaw.drop_inventory(player)
|
||||
end
|
||||
end
|
||||
|
||||
minetest.register_on_joinplayer(invsaw.check_use_status)
|
29
mods/moreblocks/invsaw/formspec.lua
Normal file
29
mods/moreblocks/invsaw/formspec.lua
Normal file
|
@ -0,0 +1,29 @@
|
|||
local station = stairsplus.api.station
|
||||
local circular_saw = stairsplus.api.circular_saw
|
||||
|
||||
function invsaw.show_formspec(player)
|
||||
local name = player:get_player_name()
|
||||
local meta = player:get_meta()
|
||||
local inv = player:get_inventory()
|
||||
|
||||
minetest.show_formspec(name, "invsaw", circular_saw.build_formspec(meta, inv))
|
||||
end
|
||||
|
||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
local meta = player:get_meta()
|
||||
local inv = player:get_inventory()
|
||||
|
||||
if fields.saw then
|
||||
if invsaw.allow_use_saw(player) then
|
||||
invsaw.show_formspec(player)
|
||||
end
|
||||
|
||||
return true
|
||||
elseif station.on_receive_fields(meta, inv, formname, fields, player) then
|
||||
if invsaw.allow_use_saw(player) then
|
||||
invsaw.show_formspec(player)
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
end)
|
9
mods/moreblocks/invsaw/init.lua
Normal file
9
mods/moreblocks/invsaw/init.lua
Normal file
|
@ -0,0 +1,9 @@
|
|||
invsaw = fmod.create()
|
||||
|
||||
invsaw.users = {}
|
||||
|
||||
invsaw.dofile("privs")
|
||||
invsaw.dofile("api")
|
||||
invsaw.dofile("inventory")
|
||||
invsaw.dofile("formspec")
|
||||
invsaw.dofile("unified_inventory")
|
78
mods/moreblocks/invsaw/inventory.lua
Normal file
78
mods/moreblocks/invsaw/inventory.lua
Normal file
|
@ -0,0 +1,78 @@
|
|||
local station = stairsplus.api.station
|
||||
|
||||
function invsaw.initialize_inventory(player)
|
||||
local meta = player:get_meta()
|
||||
local inv = player:get_inventory()
|
||||
|
||||
station.initialize_metadata(meta, inv, { "legacy" })
|
||||
station.initialize_inventory(inv, { "legacy" })
|
||||
end
|
||||
|
||||
function invsaw.drop_inventory(player)
|
||||
local pos = player:get_pos()
|
||||
local inv = player:get_inventory()
|
||||
for _, listname in ipairs({ "stairsplus:input", "stairsplus:micro", "stairsplus:recycle" }) do
|
||||
for i = 1, inv:get_size(listname) do
|
||||
local item = inv:get_stack(listname, i)
|
||||
if not item:is_empty() then
|
||||
minetest.add_item(pos, item)
|
||||
end
|
||||
end
|
||||
inv:set_size(listname, 0)
|
||||
end
|
||||
inv:set_size("stairsplus:output", 0)
|
||||
end
|
||||
|
||||
local function is_stairsplus_inventory(listname)
|
||||
return (
|
||||
listname == "stairsplus:input"
|
||||
or listname == "stairsplus:micro"
|
||||
or listname == "stairsplus:recycle"
|
||||
or listname == "stairsplus:output"
|
||||
)
|
||||
end
|
||||
|
||||
minetest.register_allow_player_inventory_action(function(player, action, inv, info)
|
||||
local meta = player:get_meta()
|
||||
if action == "move" then
|
||||
local from_is_stairsplus = is_stairsplus_inventory(info.from_list)
|
||||
local to_is_stairsplus = is_stairsplus_inventory(info.to_list)
|
||||
if from_is_stairsplus and to_is_stairsplus then
|
||||
return station.allow_inventory_move(
|
||||
meta,
|
||||
inv,
|
||||
info.from_list,
|
||||
info.from_index,
|
||||
info.to_list,
|
||||
info.to_index,
|
||||
info.count,
|
||||
player
|
||||
)
|
||||
elseif to_is_stairsplus then
|
||||
local stack = inv:get_stack(info.from_list, info.from_index)
|
||||
return station.allow_inventory_put(meta, inv, info.to_list, info.to_index, stack, player)
|
||||
end
|
||||
elseif action == "put" and is_stairsplus_inventory(info.listname) then
|
||||
return station.allow_inventory_put(meta, inv, info.listname, info.index, info.stack, player)
|
||||
end
|
||||
end)
|
||||
|
||||
minetest.register_on_player_inventory_action(function(player, action, inv, info)
|
||||
local meta = player:get_meta()
|
||||
if action == "move" and is_stairsplus_inventory(info.from_list) and not is_stairsplus_inventory(info.to_list) then
|
||||
local stack = inv:get_stack(info.to_list, info.to_index)
|
||||
stack:set_count(info.count)
|
||||
station.on_inventory_take(meta, inv, info.from_list, info.from_index, stack, player)
|
||||
elseif
|
||||
action == "move"
|
||||
and not is_stairsplus_inventory(info.from_list)
|
||||
and is_stairsplus_inventory(info.to_list)
|
||||
then
|
||||
local stack = inv:get_stack(info.from_list, info.from_index)
|
||||
station.on_inventory_put(meta, inv, info.to_list, info.to_index, stack, player)
|
||||
elseif action == "put" and is_stairsplus_inventory(info.listname) then
|
||||
station.on_inventory_put(meta, inv, info.listname, info.index, info.stack, player)
|
||||
elseif action == "take" and is_stairsplus_inventory(info.listname) then
|
||||
station.on_inventory_take(meta, inv, info.listname, info.index, info.stack, player)
|
||||
end
|
||||
end)
|
3
mods/moreblocks/invsaw/locale/default.txt
Normal file
3
mods/moreblocks/invsaw/locale/default.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
# textdomain: invsaw
|
||||
|
||||
Circular Saw=
|
3
mods/moreblocks/invsaw/locale/invsaw.ru.tr
Normal file
3
mods/moreblocks/invsaw/locale/invsaw.ru.tr
Normal file
|
@ -0,0 +1,3 @@
|
|||
# textdomain: invsaw
|
||||
|
||||
Circular Saw=Циркулярная пила
|
9
mods/moreblocks/invsaw/mod.conf
Normal file
9
mods/moreblocks/invsaw/mod.conf
Normal file
|
@ -0,0 +1,9 @@
|
|||
name = invsaw
|
||||
title = inventory saw
|
||||
description = "circular saw in the unified inventory"
|
||||
website = https://content.minetest.net/packages/rheo/moreblocks/.
|
||||
author = Hugo Locurcio, fluxionary, others (see commit log)
|
||||
license = LGPL-3.0-or-later
|
||||
media_license = CC-BY-SA-4.0
|
||||
version = 2024-12-23
|
||||
depends = fmod, stairsplus, unified_inventory
|
48
mods/moreblocks/invsaw/privs.lua
Normal file
48
mods/moreblocks/invsaw/privs.lua
Normal file
|
@ -0,0 +1,48 @@
|
|||
-- luacheck: globals minetest
|
||||
|
||||
local creative_priv = invsaw.settings.creative_priv
|
||||
local priv = invsaw.settings.priv
|
||||
|
||||
local function on_priv_change(name)
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if player then
|
||||
invsaw.check_use_status(player)
|
||||
end
|
||||
end
|
||||
|
||||
local function override_on_priv_change(old)
|
||||
return function(name, cause)
|
||||
on_priv_change(name)
|
||||
if old then
|
||||
old(name, cause)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if minetest.registered_privileges[priv] then
|
||||
local def = minetest.registered_privileges[priv]
|
||||
def.on_grant = override_on_priv_change(def.on_grant)
|
||||
def.on_revoke = override_on_priv_change(def.on_revoke)
|
||||
else
|
||||
minetest.register_privilege(priv, {
|
||||
description = "Allow use of the circular saw in inventory",
|
||||
give_to_singleplayer = true,
|
||||
give_to_admin = false,
|
||||
on_grant = on_priv_change,
|
||||
on_revoke = on_priv_change,
|
||||
})
|
||||
end
|
||||
|
||||
if minetest.registered_privileges[creative_priv] then
|
||||
local def = minetest.registered_privileges[creative_priv]
|
||||
def.on_grant = override_on_priv_change(def.on_grant)
|
||||
def.on_revoke = override_on_priv_change(def.on_revoke)
|
||||
else
|
||||
minetest.register_privilege(creative_priv, {
|
||||
description = "Allow use of the inventory saw creatively",
|
||||
give_to_singleplayer = true,
|
||||
give_to_admin = false,
|
||||
on_grant = on_priv_change,
|
||||
on_revoke = on_priv_change,
|
||||
})
|
||||
end
|
8
mods/moreblocks/invsaw/settingtypes.txt
Normal file
8
mods/moreblocks/invsaw/settingtypes.txt
Normal file
|
@ -0,0 +1,8 @@
|
|||
# Will be created if it doesn't already exist
|
||||
invsaw.priv (Priv to use the inventory saw) string interact
|
||||
|
||||
# Will be created if it doesn't already exist
|
||||
invsaw.creative_priv (Priv to use the inventory saw w/out a saw item) string creative
|
||||
|
||||
# The item that a normal player has to have to use the saw in inventory
|
||||
invsaw.saw_item (Saw item) string stairsplus:circular_saw
|
10
mods/moreblocks/invsaw/unified_inventory.lua
Normal file
10
mods/moreblocks/invsaw/unified_inventory.lua
Normal file
|
@ -0,0 +1,10 @@
|
|||
local ui = unified_inventory
|
||||
|
||||
ui.register_button("saw", {
|
||||
type = "image",
|
||||
image = "stairsplus_saw_button.png",
|
||||
tooltip = invsaw.S("Circular Saw"),
|
||||
condition = function(player)
|
||||
return invsaw.allow_use_saw(player)
|
||||
end,
|
||||
})
|
Loading…
Add table
Add a link
Reference in a new issue