Add Sofas and stuff

This commit is contained in:
IamPyu 2024-12-13 20:48:31 -06:00
parent 4d230c7e8b
commit 6ab34701a1
11 changed files with 538 additions and 19 deletions

View File

@ -60,6 +60,7 @@ Other Game Changes:
- Superslime now bounces the player slightly higher
- Add back the Rubies that were removed a while ago!
- New Heater Device recipe
- Added Sofas
Code Changes:

View File

@ -18,7 +18,7 @@ PyuTest.OVERWORLD_DEEP_OCEAN_MAX = PyuTest.OVERWORLD_OCEAN_MIN - 1
PyuTest.OVERWORLD_DEEP_OCEAN_MIN = -31
PyuTest.CAVE_TOP = PyuTest.OVERWORLD_DEEP_OCEAN_MIN - 1
PyuTest.CAVE_BOTTOM = -55
PyuTest.CAVE_BOTTOM = PyuTest.OVERWORLD_BOTTOM
PyuTest.WATER_FREEZING_TEMPERATURE = 0
PyuTest.WATER_EVAPORATING_TEMPERATURE = 1000

View File

@ -0,0 +1,463 @@
# Made in Blockbench 4.11.1
mtllib pyutest-couch.mtl
o cube
v -0.375 -0.25 -0.375
v -0.375 -0.25 -0.5
v -0.375 -0.5 -0.375
v -0.375 -0.5 -0.5
v -0.5 -0.25 -0.5
v -0.5 -0.25 -0.375
v -0.5 -0.5 -0.5
v -0.5 -0.5 -0.375
vt 0 1
vt 0.125 1
vt 0.125 0.75
vt 0 0.75
vt 0 1
vt 0.125 1
vt 0.125 0.75
vt 0 0.75
vt 0 1
vt 0.125 1
vt 0.125 0.75
vt 0 0.75
vt 0 1
vt 0.125 1
vt 0.125 0.75
vt 0 0.75
vt 0 1
vt 0.125 1
vt 0.125 0.875
vt 0 0.875
vt 0 1
vt 0.125 1
vt 0.125 0.875
vt 0 0.875
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl none
f 4/4/1 7/3/1 5/2/1 2/1/1
f 3/8/2 4/7/2 2/6/2 1/5/2
f 8/12/3 3/11/3 1/10/3 6/9/3
f 7/16/4 8/15/4 6/14/4 5/13/4
f 6/20/5 1/19/5 2/18/5 5/17/5
f 7/24/6 4/23/6 3/22/6 8/21/6
o cube
v -0.375 -0.25 0.5
v -0.375 -0.25 0.375
v -0.375 -0.5 0.5
v -0.375 -0.5 0.375
v -0.5 -0.25 0.375
v -0.5 -0.25 0.5
v -0.5 -0.5 0.375
v -0.5 -0.5 0.5
vt 0 1
vt 0.125 1
vt 0.125 0.75
vt 0 0.75
vt 0 1
vt 0.125 1
vt 0.125 0.75
vt 0 0.75
vt 0 1
vt 0.125 1
vt 0.125 0.75
vt 0 0.75
vt 0 1
vt 0.125 1
vt 0.125 0.75
vt 0 0.75
vt 0 1
vt 0.125 1
vt 0.125 0.875
vt 0 0.875
vt 0 1
vt 0.125 1
vt 0.125 0.875
vt 0 0.875
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl none
f 12/28/7 15/27/7 13/26/7 10/25/7
f 11/32/8 12/31/8 10/30/8 9/29/8
f 16/36/9 11/35/9 9/34/9 14/33/9
f 15/40/10 16/39/10 14/38/10 13/37/10
f 14/44/11 9/43/11 10/42/11 13/41/11
f 15/48/12 12/47/12 11/46/12 16/45/12
o cube
v 0.5 -0.25 0.5
v 0.5 -0.25 0.375
v 0.5 -0.5 0.5
v 0.5 -0.5 0.375
v 0.375 -0.25 0.375
v 0.375 -0.25 0.5
v 0.375 -0.5 0.375
v 0.375 -0.5 0.5
vt 0 1
vt 0.125 1
vt 0.125 0.75
vt 0 0.75
vt 0 1
vt 0.125 1
vt 0.125 0.75
vt 0 0.75
vt 0 1
vt 0.125 1
vt 0.125 0.75
vt 0 0.75
vt 0 1
vt 0.125 1
vt 0.125 0.75
vt 0 0.75
vt 0 1
vt 0.125 1
vt 0.125 0.875
vt 0 0.875
vt 0 1
vt 0.125 1
vt 0.125 0.875
vt 0 0.875
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl none
f 20/52/13 23/51/13 21/50/13 18/49/13
f 19/56/14 20/55/14 18/54/14 17/53/14
f 24/60/15 19/59/15 17/58/15 22/57/15
f 23/64/16 24/63/16 22/62/16 21/61/16
f 22/68/17 17/67/17 18/66/17 21/65/17
f 23/72/18 20/71/18 19/70/18 24/69/18
o cube
v 0.5 -0.25 -0.375
v 0.5 -0.25 -0.5
v 0.5 -0.5 -0.375
v 0.5 -0.5 -0.5
v 0.375 -0.25 -0.5
v 0.375 -0.25 -0.375
v 0.375 -0.5 -0.5
v 0.375 -0.5 -0.375
vt 0 1
vt 0.125 1
vt 0.125 0.75
vt 0 0.75
vt 0 1
vt 0.125 1
vt 0.125 0.75
vt 0 0.75
vt 0 1
vt 0.125 1
vt 0.125 0.75
vt 0 0.75
vt 0 1
vt 0.125 1
vt 0.125 0.75
vt 0 0.75
vt 0 1
vt 0.125 1
vt 0.125 0.875
vt 0 0.875
vt 0 1
vt 0.125 1
vt 0.125 0.875
vt 0 0.875
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl none
f 28/76/19 31/75/19 29/74/19 26/73/19
f 27/80/20 28/79/20 26/78/20 25/77/20
f 32/84/21 27/83/21 25/82/21 30/81/21
f 31/88/22 32/87/22 30/86/22 29/85/22
f 30/92/23 25/91/23 26/90/23 29/89/23
f 31/96/24 28/95/24 27/94/24 32/93/24
o cube
v 0.5 -0.125 0.5
v 0.5 -0.125 -0.5
v 0.5 -0.25 0.5
v 0.5 -0.25 -0.5
v -0.5 -0.125 -0.5
v -0.5 -0.125 0.5
v -0.5 -0.25 -0.5
v -0.5 -0.25 0.5
vt 0 1
vt 1 1
vt 1 0.875
vt 0 0.875
vt 0 1
vt 1 1
vt 1 0.875
vt 0 0.875
vt 0 1
vt 1 1
vt 1 0.875
vt 0 0.875
vt 0 1
vt 1 1
vt 1 0.875
vt 0 0.875
vt 0 1
vt 1 1
vt 1 0
vt 0 0
vt 0 1
vt 1 1
vt 1 0
vt 0 0
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl none
f 36/100/25 39/99/25 37/98/25 34/97/25
f 35/104/26 36/103/26 34/102/26 33/101/26
f 40/108/27 35/107/27 33/106/27 38/105/27
f 39/112/28 40/111/28 38/110/28 37/109/28
f 38/116/29 33/115/29 34/114/29 37/113/29
f 39/120/30 36/119/30 35/118/30 40/117/30
o cube
v 0.5 0.0625 0.5
v 0.5 0.0625 -0.5
v 0.5 -0.125 0.5
v 0.5 -0.125 -0.5
v 0.375 0.0625 -0.5
v 0.375 0.0625 0.5
v 0.375 -0.125 -0.5
v 0.375 -0.125 0.5
vt 0 1
vt 0.125 1
vt 0.125 0.8125
vt 0 0.8125
vt 0 1
vt 1 1
vt 1 0.8125
vt 0 0.8125
vt 0 1
vt 0.125 1
vt 0.125 0.8125
vt 0 0.8125
vt 0 1
vt 1 1
vt 1 0.8125
vt 0 0.8125
vt 0 1
vt 0.125 1
vt 0.125 0
vt 0 0
vt 0 1
vt 0.125 1
vt 0.125 0
vt 0 0
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl none
f 44/124/31 47/123/31 45/122/31 42/121/31
f 43/128/32 44/127/32 42/126/32 41/125/32
f 48/132/33 43/131/33 41/130/33 46/129/33
f 47/136/34 48/135/34 46/134/34 45/133/34
f 46/140/35 41/139/35 42/138/35 45/137/35
f 47/144/36 44/143/36 43/142/36 48/141/36
o cube
v -0.375 0.0625 0.5
v -0.375 0.0625 -0.5
v -0.375 -0.125 0.5
v -0.375 -0.125 -0.5
v -0.5 0.0625 -0.5
v -0.5 0.0625 0.5
v -0.5 -0.125 -0.5
v -0.5 -0.125 0.5
vt 0 1
vt 0.125 1
vt 0.125 0.8125
vt 0 0.8125
vt 0 1
vt 1 1
vt 1 0.8125
vt 0 0.8125
vt 0 1
vt 0.125 1
vt 0.125 0.8125
vt 0 0.8125
vt 0 1
vt 1 1
vt 1 0.8125
vt 0 0.8125
vt 0 1
vt 0.125 1
vt 0.125 0
vt 0 0
vt 0 1
vt 0.125 1
vt 0.125 0
vt 0 0
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl none
f 52/148/37 55/147/37 53/146/37 50/145/37
f 51/152/38 52/151/38 50/150/38 49/149/38
f 56/156/39 51/155/39 49/154/39 54/153/39
f 55/160/40 56/159/40 54/158/40 53/157/40
f 54/164/41 49/163/41 50/162/41 53/161/41
f 55/168/42 52/167/42 51/166/42 56/165/42
o cube
v -0.375 0.5 0.5
v 0.375 0.5 0.4999999999999999
v -0.375 -0.125 0.5
v 0.375 -0.125 0.4999999999999999
v 0.375 0.5 0.3749999999999999
v -0.375 0.5 0.3750000000000001
v 0.375 -0.125 0.3749999999999999
v -0.375 -0.125 0.3750000000000001
vt 0 1
vt 0.125 1
vt 0.125 0.375
vt 0 0.375
vt 0 1
vt 0.75 1
vt 0.75 0.375
vt 0 0.375
vt 0 1
vt 0.125 1
vt 0.125 0.375
vt 0 0.375
vt 0 1
vt 0.75 1
vt 0.75 0.375
vt 0 0.375
vt 0 1
vt 0.125 1
vt 0.125 0.25
vt 0 0.25
vt 0 1
vt 0.125 1
vt 0.125 0.25
vt 0 0.25
vn 1 0 -2.220446049250313e-16
vn 2.220446049250313e-16 0 1
vn -1 0 2.220446049250313e-16
vn -2.220446049250313e-16 0 -1
vn 0 1 0
vn 0 -1 0
usemtl none
f 60/172/43 63/171/43 61/170/43 58/169/43
f 59/176/44 60/175/44 58/174/44 57/173/44
f 64/180/45 59/179/45 57/178/45 62/177/45
f 63/184/46 64/183/46 62/182/46 61/181/46
f 62/188/47 57/187/47 58/186/47 61/185/47
f 63/192/48 60/191/48 59/190/48 64/189/48
o cube
v 0.5 0.25 0.5
v 0.5 0.25 0
v 0.5 0.0625 0.5
v 0.5 0.0625 0
v 0.375 0.25 0
v 0.375 0.25 0.5
v 0.375 0.0625 0
v 0.375 0.0625 0.5
vt 0 1
vt 0.125 1
vt 0.125 0.8125
vt 0 0.8125
vt 0 1
vt 0.5 1
vt 0.5 0.8125
vt 0 0.8125
vt 0 1
vt 0.125 1
vt 0.125 0.8125
vt 0 0.8125
vt 0 1
vt 0.5 1
vt 0.5 0.8125
vt 0 0.8125
vt 0 1
vt 0.125 1
vt 0.125 0.5
vt 0 0.5
vt 0 1
vt 0.125 1
vt 0.125 0.5
vt 0 0.5
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl none
f 68/196/49 71/195/49 69/194/49 66/193/49
f 67/200/50 68/199/50 66/198/50 65/197/50
f 72/204/51 67/203/51 65/202/51 70/201/51
f 71/208/52 72/207/52 70/206/52 69/205/52
f 70/212/53 65/211/53 66/210/53 69/209/53
f 71/216/54 68/215/54 67/214/54 72/213/54
o cube
v -0.375 0.25 0.5
v -0.375 0.25 0
v -0.375 0.0625 0.5
v -0.375 0.0625 0
v -0.5 0.25 0
v -0.5 0.25 0.5
v -0.5 0.0625 0
v -0.5 0.0625 0.5
vt 0 1
vt 0.125 1
vt 0.125 0.8125
vt 0 0.8125
vt 0 1
vt 0.5 1
vt 0.5 0.8125
vt 0 0.8125
vt 0 1
vt 0.125 1
vt 0.125 0.8125
vt 0 0.8125
vt 0 1
vt 0.5 1
vt 0.5 0.8125
vt 0 0.8125
vt 0 1
vt 0.125 1
vt 0.125 0.5
vt 0 0.5
vt 0 1
vt 0.125 1
vt 0.125 0.5
vt 0 0.5
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl none
f 76/220/55 79/219/55 77/218/55 74/217/55
f 75/224/56 76/223/56 74/222/56 73/221/56
f 80/228/57 75/227/57 73/226/57 78/225/57
f 79/232/58 80/231/58 78/230/58 77/229/58
f 78/236/59 73/235/59 74/234/59 77/233/59
f 79/240/60 76/239/60 75/238/60 80/237/60

View File

@ -88,12 +88,10 @@ core.register_entity("pyutest_fireworks:firework", {
maxvel = vector.new(6, 6, 6),
})
core.sound_play({
name = "pyutest-firework",
core.sound_play("pyutest-firework", {
gain = 1.2,
pos = pos,
max_hear_distance = 30
}, true)
})
end
})
@ -105,6 +103,12 @@ PyuTest.make_item("pyutest_fireworks:firework", "Firework", {}, "pyutest-firewor
itemstack:take_item()
end
return itemstack
end,
__on_dispense = function (pos, itemstack)
core.add_entity(pos, "pyutest_fireworks:firework")
itemstack:take_item()
return itemstack
end
})

View File

@ -3,11 +3,11 @@
local function get_velocity(v, yaw, y)
local x = -math.sin(yaw) * v
local z = math.cos(yaw) * v
return {x = x * 8, y = y * 8, z = z * 8}
return {x = x, y = y, z = z}
end
local function get_v(v)
return math.sqrt(v.x ^ 2 + v.z ^ 2)
local function get_v(v, speed)
return math.sqrt(v.x ^ 2 + v.z ^ 2) * speed
end
local class = {
@ -16,6 +16,7 @@ local class = {
last_v = 0,
removed = false,
auto = false,
speed = 1
}
function class:on_rightclick(clicker)
@ -90,7 +91,7 @@ function class:on_punch(puncher)
end
function class:on_step(dtime)
self.v = get_v(self.object:get_velocity()) * math.sign(self.v)
self.v = get_v(self.object:get_velocity(), self.speed) * math.sign(self.v)
if self.driver then
local driver_objref = core.get_player_by_name(self.driver)
if driver_objref then
@ -149,15 +150,16 @@ function class:on_step(dtime)
if y >= 5 then
y = 5
end
new_velo = get_velocity(self.v, self.object:get_yaw(), y)
new_velo = get_velocity(self.v, self.object:get_yaw(), y, self.speed)
self.object:set_pos(self.object:get_pos())
self.object:set_velocity(new_velo)
self.object:set_acceleration(new_acce)
end
PyuTest.create_vehicle = function(name, desc, properties, image, craft)
PyuTest.create_vehicle = function(name, desc, speed, properties, image, craft)
local options = setmetatable(properties, { __index = class})
options.name = name
options.speed = speed
core.register_entity(name, properties)

View File

@ -2,7 +2,7 @@ local modpath = core.get_modpath(core.get_current_modname())
dofile(modpath .. "/api.lua")
PyuTest.create_vehicle("pyutest_vehicles:test", "Test Vehicle", {
PyuTest.create_vehicle("pyutest_vehicles:test", "Test Vehicle", 1.2, {
initial_properties = {
physical = false,
collisionbox = PyuTest.NODEBOX_DEFAULT.fixed,

View File

@ -42,7 +42,7 @@ local function play_sound(pos)
core.sound_play("pyutest-note", {
pos = pos,
gain = 0.5,
gain = 0.075, -- It's very loud for some reason.
pitch = pitch
})
@ -76,3 +76,15 @@ PyuTest.make_electricity_device("pyutest_electricity:note_block", "Note Block",
}, function (pos, node, sender_pos)
play_sound(pos)
end)
core.register_abm({
label = "Note Block infotext",
nodenames = {"pyutest_electricity:note_block"},
interval = 1,
chance = 1,
action = function (pos)
local meta = core.get_meta(pos)
meta:set_string("infotext", string.format("Note: %d", meta:get_int(NOTE_POSITION_KEY)))
end
})

View File

@ -17,6 +17,7 @@ PyuTest.make_furniture = function(name, desc, craft, tiles, cgroups, extra_conf)
local id_table = name .. "_table"
local id_chair = name .. "_chair"
local id_sofa = name .. "_sofa"
local id_mtable = name .. "_mtable"
core.register_node(id_table, PyuTest.util.tableconcat({
@ -56,6 +57,27 @@ PyuTest.make_furniture = function(name, desc, craft, tiles, cgroups, extra_conf)
}
}, econf))
core.register_node(id_sofa, PyuTest.util.tableconcat({
description = Translate(desc .. " Sofa"),
tiles = tiles,
groups = PyuTest.util.tableconcat(groups, {
sofa = 1,
attached_node = 3,
}),
sounds = PyuTest.make_node_sounds(),
paramtype = "light",
paramtype2 = "color4dir",
drawtype = "mesh",
mesh = "pyutest-sofa.obj",
selection_box = PyuTest.NODEBOX_DEFAULT,
collision_box = {
type = "fixed",
fixed = {
{ -0.5, -0.65, -0.5, 0.5, 0, 0.5 }
}
}
}, econf))
core.register_node(id_mtable, PyuTest.util.tableconcat({
description = Translate(desc .. " Mini Table"),
tiles = tiles,
@ -98,11 +120,21 @@ PyuTest.make_furniture = function(name, desc, craft, tiles, cgroups, extra_conf)
}
})
core.register_craft({
output = id_sofa .. " 4",
recipe = {
{ craft, "", craft },
{ craft, craft, craft },
{ craft, "", craft }
}
})
core.register_craft({
output = id_mtable .. " 4",
recipe = {
{ craft, craft, craft },
{ craft, craft, craft }
{ craft, craft, craft },
{ craft, "", craft}
}
})
@ -115,6 +147,6 @@ PyuTest.make_furniture = function(name, desc, craft, tiles, cgroups, extra_conf)
end
for _, v in pairs(PyuTest.building_blocks) do
PyuTest.make_furniture(":pyutest_furniture:" .. v.name, v.desc, v.ns .. ":" .. v.name .. "_block",
v.tiles, v.groups, v.econf)
local c = v.ns .. ":" .. v.name-- .. "_block"
PyuTest.make_furniture("pyutest_furniture:" .. v.name, v.desc, c, v.tiles, v.groups, v.econf)
end

View File

@ -69,7 +69,7 @@ PyuTest.parse_command_functions = function(runner, param)
local str = param
-- embed the output of command
str = str:gsub("embed{([%w%p]+)}", function(input)
str = str:gsub(".embed<([^%s]+)>", function(input)
return PyuTest.execute_as(runner, input) or ""
end)

View File

@ -143,7 +143,7 @@ core.register_chatcommand("execute", {
for _, v in pairs(targets) do
if method == "as" then
PyuTest.execute_as(v, command)
return PyuTest.execute_as(v, command)
elseif method == "at" then
-- TODO
end

View File

@ -1,3 +1,8 @@
PyuTest.register_overworld_biome("MushroomGrotto", PyuTest.BIOME_TYPES.CAVE, {
_pyutest_cave_type = PyuTest.BIOME_TYPES.CHILLY
y_max = PyuTest.CAVE_TOP,
y_min = PyuTest.CAVE_BOTTOM,
_pyutest_cave_type = PyuTest.BIOME_TYPES.CHILLY,
}, true)