2024-11-27 15:27:59 -06:00

171 lines
4.5 KiB
Lua

local modpath = core.get_modpath(core.get_current_modname())
dofile(modpath .. "/stats.lua")
-- player setup
core.register_on_joinplayer(function(player)
if player == nil then return end
local name = player:get_player_name()
player:get_inventory():set_width("main", 8)
player:get_inventory():set_size("main", 8 * 4)
player:hud_set_hotbar_itemcount(8)
player:set_lighting({
volumetric_light = { strength = 0.1 },
saturation = 1.1,
shadows = { intensity = 0.33 },
exposure = {
luminance_min = -3.5,
luminance_max = -2.5,
exposure_correction = 0.35,
speed_dark_bright = 1500,
speed_bright_dark = 700,
},
})
-- creative mode privs
if core.is_creative_enabled(name) then
core.set_player_privs(name, PyuTest.util.tableconcat({
fly = true,
fast = true,
creative = true,
}, core.get_player_privs(name)))
end
end)
-- player hand
core.register_item(":", {
type = "none",
description = "Hands",
wield_image = "pyutest-hand.png",
groups = {
not_in_creative_inventory = 1
}
})
-- player effects
core.register_globalstep(function ()
for _, v in pairs(core.get_connected_players()) do
local speed_multiplier = 1
v:set_physics_override({
speed = 1.15 * speed_multiplier
})
end
end)
if core.is_creative_enabled("") then
core.override_item("", {
range = 9,
tool_capabilities = PyuTest.tool_caps({
uses = 0,
time = 0.25,
groupcaps = {
crumbly = {},
choppy = {},
cracky = {},
snappy = {},
wooly = {},
oddly_breakable_by_hand = {}
},
attack_uses = 0,
damage_groups = { fleshy = 10000 }
})
})
else
core.override_item("", {
range = 5,
tool_capabilities = PyuTest.tool_caps({
uses = 0,
attck_uses = 0,
damage_groups = { fleshy = 2 },
groupcaps = {
oddly_breakable_by_hand = {
times = {
[PyuTest.BLOCK_FAST] = 0.35,
[PyuTest.BLOCK_NORMAL] = 0.50,
[PyuTest.BLOCK_SLOW] = 0.65,
}
},
snappy = {
times = {
[PyuTest.BLOCK_FAST] = 0.55,
[PyuTest.BLOCK_NORMAL] = 0.70,
[PyuTest.BLOCK_SLOW] = 0.70
}
},
crumbly = {
times = {
[PyuTest.BLOCK_FAST] = 0.75,
[PyuTest.BLOCK_NORMAL] = 0.80,
[PyuTest.BLOCK_SLOW] = 0.90
}
},
choppy = {
times = {
[PyuTest.BLOCK_FAST] = 1.2,
[PyuTest.BLOCK_NORMAL] = 2.3,
[PyuTest.BLOCK_SLOW] = 2.9,
}
},
cracky = {
times = {
[PyuTest.BLOCK_FAST] = 6,
[PyuTest.BLOCK_NORMAL] = 10,
[PyuTest.BLOCK_SLOW] = 45,
}
},
wooly = {
times = {
[PyuTest.BLOCK_FAST] = 0.55,
[PyuTest.BLOCK_NORMAL] = 0.70,
[PyuTest.BLOCK_SLOW] = 0.70
}
},
}
})
})
end
-- unlimited blocks in creative mode
core.register_on_placenode(function(_, _, placer)
if placer and placer:is_player() then
return core.is_creative_enabled(placer:get_player_name())
end
end)
-- player lighting, and sky effects for different biomes
core.register_globalstep(function()
local players = core.get_connected_players()
for _, player in pairs(players) do
local pos = player:get_pos()
local def = PyuTest.get_biome_def(pos)
if def == nil then
player:set_lighting(PyuTest.DEFAULT_EFFECTS.lighting)
player:set_sky(PyuTest.DEFAULT_EFFECTS.sky)
return
end
local sky_type = def._pyutest_sky_type or PyuTest.DEFAULT_EFFECTS.sky_type
local sky_base_color = def._pyutest_sky_base_color or PyuTest.DEFAULT_EFFECTS.sky_base_color
local fog_distance = def._pyutest_fog_distance or PyuTest.DEFAULT_EFFECTS.fog_distance
local fog_start = def._pyutest_fog_start or PyuTest.DEFAULT_EFFECTS.fog_start
local fog_color = def._pyutest_fog_color or PyuTest.DEFAULT_EFFECTS.fog_color
player:set_sky({
type = sky_type,
base_color = sky_base_color,
fog = {
fog_distance = fog_distance,
fog_start = fog_start,
fog_color = fog_color
}
})
end
end)