Compare commits

..

19 Commits

Author SHA1 Message Date
E 538e3b7e35 project: drop unhelpful fields from bug-report template
Mineclonia/Mineclonia#56 (comment)
2021-05-18 20:41:14 -04:00
E 42205639f6 project: make the headers *actually* level 5
Mineclonia/Mineclonia#56 (comment)
2021-05-18 20:41:14 -04:00
E dd8bcaec50 project: un-bold bug-report environment fields
Mineclonia/Mineclonia#56 (comment)
2021-05-18 20:41:14 -04:00
E 4dd1b00a0a project: ask for definitive sources for Minecraft feature requests 2021-05-18 20:41:14 -04:00
E 32c7fe4741 project: change headings to level 5
Mineclonia/Mineclonia#56 (comment)
2021-05-18 20:41:14 -04:00
E c9c568847c project: change wording of problem section in feature request template
Mineclonia/Mineclonia#56 (comment)
2021-05-18 20:41:14 -04:00
E 838bf0034f project: simplify Feature Request template
Mineclonia/Mineclonia#56 (comment)
2021-05-18 20:41:14 -04:00
E 7f9ad443ac project: simplify Environment section for issue templates 2021-05-18 20:41:14 -04:00
E 1738d57a2c project: add title instructions to PR template 2021-05-18 20:41:14 -04:00
E 438e91d212 project: remove [unknown] tag from issue templates
Reporters aren't expected to know the layout of the mods, and having the
tag in the title may be confusing.

Mineclonia/Mineclonia#56 (comment)
2021-05-18 20:41:14 -04:00
E 9875183a6f project: add optional To do list to PR template
Mineclonia/Mineclonia#56 (comment)
2021-05-18 20:41:14 -04:00
E 95af8196a2 project: add issue & PR templates 2021-05-18 20:41:14 -04:00
Elias Åström f3b0285347 Merge pull request 'mcl_explosions: Adjust explosion entity damage hitbox' (#62) from mcl_explosions2 into master
Reviewed-on: Mineclonia/Mineclonia#62
Reviewed-by: cora <cora@noreply.git.minetest.land>
2021-05-18 18:16:39 +02:00
Elias Åström 4c61fc80c6 Merge pull request 'mcl_explosions: Fix rays for node destruction not being cast in (+X, +Y, +Z) direction from explosion' (#50) from mcl_explosions into master
Reviewed-on: Mineclonia/Mineclonia#50
Reviewed-by: cora <cora@noreply.git.minetest.land>
2021-05-18 16:07:09 +00:00
Elias Åström 7ea25ab172 Merge branch 'master' into mcl_explosions 2021-05-18 16:04:40 +00:00
Elias Åström d9bbf4879c Adjust explosion entity damage hitbox
In mcl_explosions the hitbox used for calculating the damage of an
entity is its collisionbox multiplied by two.  This commit removes the
multiplication by two because that makes explosion damage behave weirdly
in some circumstances.  It was most likely implemented that way because
of a misinterpretation of the Minecraft wiki.
2021-05-09 14:41:05 +02:00
My favourite Minetest cheat clients are Dragonfire and Waspsaliva. a9d4a85e9a Merge pull request 'Remove wrong preview banner crafting recipes' (#55) from banner-crafting-fix into master
Reviewed-on: Mineclonia/Mineclonia#55
Reviewed-by: E <e@noreply.git.minetest.land>
2021-05-03 14:30:47 +00:00
Nils Dagsson Moskopp ee9f49b86e
Remove wrong preview banner crafting recipes
In commit ac5f115f83, preview banners were introduced and given
crafting recipes. Those crafting recipes were the same as for banners without a pattern. That
change made banners without patterns uncraftable and preview banners craftable instead – this
patch makes banners without patterns craftable again and preview banners uncraftable.
2021-05-02 13:01:00 +02:00
Elias Åström 74d4986d1d Fix rays not being cast in a specific direction
A bug was introduced in 679e2b1b which caused explosions to not cast
rays for environment destruction in the (+X, +Y, +Z) direction.  This
commit fixes that.
2021-05-01 17:25:10 +02:00
12 changed files with 224 additions and 219 deletions

View File

@ -0,0 +1,38 @@
---
name: "Bug Report"
about: "Use this for when something's broken."
labels:
- bug
- unconfirmed
---
##### What happened?
<!-- Describe what's wrong. -->
##### What did I expect?
<!-- Describe what should be happening instead -->
##### How to get it to happen
<!--
Write down exactly what you did to get the bug to happen
If you need more steps, just keep adding numbers. If you
don't need them all, delete the empty numbers.
-->
1.
2.
3.
##### Environment
Mineclonia Version: <!-- Paste the version of Mineclonia here, if you know it. -->
<!--
Please refer to https://git.minetest.land/Mineclonia/Mineclonia/wiki/Reporting-Bugs
if you need help finding your Minetest version.
-->
Minetest Version:

View File

@ -0,0 +1,22 @@
---
name: "Feature Request"
about: "Mineclonia doesn't do something you need it to"
labels:
- "feature request"
---
##### Problem
<!--
Describe what's wrong.
If you're reporting a missing feature from Minecraft,
please include a link to the Minetest wiki or Mojang bug
tracker entry describing that feature.
-->
##### Solution
<!-- Write down an example of what you'd like to happen. -->

View File

@ -0,0 +1,51 @@
<!--
Please include the main mod this PR affects in the title, including
the leading directory. For example, if you have added a new
type of banner to mcl_banners, the title should look like:
items/mcl_banners: add new banner type
-->
##### Problem
TRACKING ISSUE: #<!-- Tracking issue number -->
<!--
Describe WHAT problem this pull request solves.
If the tracking issue includes all the needed
information, you can leave this section empty.
-->
##### Solution
<!-- Describe HOW this pull request solves its problem. -->
##### Details
<!-- Include any additional information here. -->
##### Testing Steps
<!--
Write how we can verify this patch addresses its problem.
If you need more steps, just keep adding numbers. If you
don't need them all, delete the empty numbers.
-->
1.
2.
3.
<!--
If your pull request still needs work, uncomment the
following section and include a list of things that
need to be done before it's ready for us to look at.
Please remember to put WIP: in front of the title as well.
-->
<!--
##### To do
- [ ] Item 1
- [ ] Item 2
- [ ] Item 3
-->

View File

@ -57,46 +57,44 @@ local function compute_sphere_rays(radius)
local rays = {}
local sphere = {}
for i=1, 2 do
local function add_ray(pos)
sphere[minetest.hash_node_position(pos)] = pos
end
for y = -radius, radius do
for z = -radius, radius do
for x = -radius, 0 do
local d = x * x + y * y + z * z
if d <= radius * radius then
add_ray(vector.new(x, y, z))
add_ray(vector.new(-x, y, z))
break
end
end
end
end
for x = -radius, radius do
for z = -radius, radius do
for y = -radius, 0 do
local d = x * x + y * y + z * z
if d <= radius * radius then
add_ray(vector.new(x, y, z))
add_ray(vector.new(x, -y, z))
break
end
end
end
end
for x = -radius, radius do
for y = -radius, radius do
for z = -radius, radius do
for x = -radius, 0, 1 do
local d = x * x + y * y + z * z
if d <= radius * radius then
local pos = { x = x, y = y, z = z }
sphere[minetest.hash_node_position(pos)] = pos
break
end
end
end
end
end
for i=1,2 do
for x = -radius, radius do
for z = -radius, radius do
for y = -radius, 0, 1 do
local d = x * x + y * y + z * z
if d <= radius * radius then
local pos = { x = x, y = y, z = z }
sphere[minetest.hash_node_position(pos)] = pos
break
end
end
end
end
end
for i=1,2 do
for x = -radius, radius do
for y = -radius, radius do
for z = -radius, 0, 1 do
local d = x * x + y * y + z * z
if d <= radius * radius then
local pos = { x = x, y = y, z = z }
sphere[minetest.hash_node_position(pos)] = pos
break
end
for z = -radius, 0 do
local d = x * x + y * y + z * z
if d <= radius * radius then
add_ray(vector.new(x, y, z))
add_ray(vector.new(x, y, -z))
break
end
end
end
@ -253,12 +251,12 @@ local function trace_explode(pos, strength, raydirs, radius, info, puncher)
if collisionbox then
-- Create rays from random points in the collision box
local x1 = collisionbox[1] * 2
local y1 = collisionbox[2] * 2
local z1 = collisionbox[3] * 2
local x2 = collisionbox[4] * 2
local y2 = collisionbox[5] * 2
local z2 = collisionbox[6] * 2
local x1 = collisionbox[1]
local y1 = collisionbox[2]
local z1 = collisionbox[3]
local x2 = collisionbox[4]
local y2 = collisionbox[5]
local z2 = collisionbox[6]
local x_len = math.abs(x2 - x1)
local y_len = math.abs(y2 - y1)
local z_len = math.abs(z2 - z1)

View File

@ -9,31 +9,3 @@ function mcl_formspec.get_itemslot_bg(x, y, w, h)
end
return out
end
-- From the Minetest Lua API doc, "Migrating to Real Coordinates"
local padding, spacing = 3/8, 5/4
function mcl_formspec.size2r(w, h)
return (((w-1)*spacing) + (padding*2) + 1)..","..(((h-1)*spacing) + (padding*2) + 1)
end
local function i2r(i)
return (i*spacing)+padding
end
mcl_formspec.i2r=i2r
function mcl_formspec.xy2r(x, y)
return i2r(x)..","..i2r(y)
end
function mcl_formspec.get_itemslot_bgv2(x, y, w, h)
local out = ""
x=i2r(x)-padding
y=i2r(y)-padding
for i = 0, w - 1, 1 do
for j = 0, h - 1, 1 do
out = out .."image["..x+i2r(i)..","..y+i2r(j)..";1,1;mcl_formspec_itemslot.png]"
end
end
return out
end

View File

@ -144,47 +144,6 @@ local on_destruct_hanging_banner = function(pos)
return on_destruct_banner(pos, true)
end
local function escape(text)
return text:gsub("%^", "\\%^"):gsub(":", "\\:") -- :gsub("%(", "\\%("):gsub("%)", "\\%)")
end
local make_banner_overlay = function(base_color, layers)
local colorize = mcl_banners.colors[base_color][4]
-- Base texture with base color
local base = "(mcl_banners_item_base.png^(mcl_banners_item_overlay.png^[colorize:"..colorize..":"..base_color_ratio..")^[resize:32x32)"
-- Optional pattern layers
if layers then
local lovl = ""
for l=1, #layers do
local layerinfo = layers[l]
local pattern = "mcl_banners_" .. layerinfo.pattern .. ".png"
local color = mcl_banners.colors[layerinfo.color][4]
-- Generate layer texture
local layer = "((("..pattern.."^[mask:mcl_banners_front.png)^[colorize:"..color..":"..layer_ratio..")^[mask:"..pattern..")"
lovl = (lovl ~= "" and (lovl .. "^") or "") .. layer
end
return "[combine:32x32:0,0=" .. escape(base) .. ":7,3=" .. escape("("..lovl.."^[resize:50x38)")
end
return base
end
function mcl_banners.get_overlay(istk)
local imeta = istk:get_meta()
local layers_raw = imeta:get_string("layers")
if not layers_raw or layers_raw == "" then
return
end
local basec = imeta:get("fake_base") or istk:get_definition()._base_color
if not basec then
basec="unicolor_white"
end
return make_banner_overlay(basec, minetest.deserialize(layers_raw))
end
local make_banner_texture = function(base_color, layers)
local colorize
if mcl_banners.colors[base_color] then
@ -430,6 +389,10 @@ for colorid, colortab in pairs(mcl_banners.colors) do
local layer = "(([combine:20x40:-2,-2="..pattern.."^[resize:16x24^[colorize:"..color..":"..layer_ratio.."))"
function escape(text)
return text:gsub("%^", "\\%^"):gsub(":", "\\:") -- :gsub("%(", "\\%("):gsub("%)", "\\%)")
end
finished_banner = "[combine:32x32:0,0=" .. escape(base) .. ":8,4=" .. escape(layer)
end
@ -457,7 +420,6 @@ for colorid, colortab in pairs(mcl_banners.colors) do
groups = groups,
stack_max = 16,
_base_color=colorid,
on_place = function(itemstack, placer, pointed_thing)
local above = pointed_thing.above
local under = pointed_thing.under
@ -606,7 +568,7 @@ for colorid, colortab in pairs(mcl_banners.colors) do
end,
})
if minetest.get_modpath("mcl_core") and minetest.get_modpath("mcl_wool") then
if minetest.get_modpath("mcl_core") and minetest.get_modpath("mcl_wool") and pattern_name == "" then
minetest.register_craft({
output = itemstring,
recipe = {

View File

@ -485,12 +485,11 @@ local banner_pattern_craft = function(itemstack, player, old_craft_grid, craft_i
local imeta = itemstack:get_meta()
imeta:set_string("layers", minetest.serialize(layers))
local idef=itemstack:get_definition()
local mname = ometa:get_string("name")
-- Only change description if banner does not have a name
if mname == "" then
local odesc = idef.description
local odesc = itemstack:get_definition().description
local description = mcl_banners.make_advanced_banner_description(odesc, layers)
imeta:set_string("description", description)
else
@ -501,13 +500,10 @@ local banner_pattern_craft = function(itemstack, player, old_craft_grid, craft_i
if craft_predict then
local itemid_prefix = "mcl_banners:banner_preview"
local coloritemid = dye_to_itemid_mapping[dye]
local is=ItemStack(itemid_prefix .. "_" .. matching_pattern .. "_" .. coloritemid)
local im=is:get_meta()
im:from_table(imeta:to_table())
im:set_string("fake_base", idef._base_color)
return is
return ItemStack(itemid_prefix .. "_" .. matching_pattern .. "_" .. coloritemid)
else
return itemstack
end
return itemstack
end
minetest.register_craft_predict(function(itemstack, player, old_craft_grid, craft_inv)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

View File

@ -0,0 +1,3 @@
mcl_init
mcl_formspec
mcl_sounds

View File

@ -0,0 +1 @@
Adds a crafting table.

View File

@ -1,92 +1,57 @@
local S = minetest.get_translator("mcl_crafting_table")
local formspec_escape = minetest.formspec_escape
local show_formspec = minetest.show_formspec
local C = minetest.colorize
local text_color = "#313131"
local itemslot_bg = mcl_formspec.get_itemslot_bg
mcl_crafting_table = {
last_table={}
}
function mcl_crafting_table.show_crafting_form(player, overlay)
player:get_inventory():set_width("craft", 3)
player:get_inventory():set_size("craft", 9)
show_formspec(player:get_player_name(), "mcl_crafting_table:main",
"size[9,8.75]"..
"image[4.7,1.5;1.5,1;gui_crafting_arrow.png]"..
"label[0,4;"..formspec_escape(C(text_color, S("Inventory"))).."]".. --"#313131"
"list[current_player;main;0,4.5;9,3;9]"..
itemslot_bg(0,4.5,9,3)..
"list[current_player;main;0,7.74;9,1;]"..
itemslot_bg(0,7.74,9,1)..
"label[1.75,0;"..formspec_escape(C(text_color, S("Crafting"))).."]"..
"list[current_player;craft;1.75,0.5;3,3;]"..
itemslot_bg(1.75,0.5,3,3)..
"list[current_player;craftpreview;6.1,1.5;1,1;]"..
itemslot_bg(6.1,1.5,1,1)..
"image_button[0.75,1.5;1,1;craftguide_book.png;__mcl_craftguide;]"..
"tooltip[__mcl_craftguide;"..formspec_escape(S("Recipe book")).."]"..
"listring[current_player;main]"..
"listring[current_player;craft]"..
(overlay and "image[7.1,1.5;1,1;"..formspec_escape(overlay).."]" or "")
-- The overlay can be scooted back over top of the craftpreview once this formspec is
-- updated to version 3.
)
end
if minetest.get_modpath("mcl_banners") then
minetest.register_craft_predict(function(itemstack, player, old_craft_grid, craft_inv)
if mcl_crafting_table.last_table[player:get_player_name()] then
local ovl=mcl_banners.get_overlay(itemstack)
mcl_crafting_table.show_crafting_form(player, ovl)
end
end)
minetest.register_on_player_receive_fields(function(player, formname, fields)
if formname ~= "mcl_crafting_table:main" then
return false
end
if fields["quit"] then
mcl_crafting_table.last_table[player:get_player_name()]=nil
minetest.close_formspec(player:get_player_name(), formname)
end
end)
end
local show_crafting_form = mcl_crafting_table.show_crafting_form --cache function for better performances
minetest.register_node("mcl_crafting_table:crafting_table", {
description = S("Crafting Table"),
_tt_help = S("3×3 crafting grid"),
_doc_items_longdesc = S("A crafting table is a block which grants you access to a 3×3 crafting grid which allows you to perform advanced crafts."),
_doc_items_usagehelp = S("Rightclick the crafting table to access the 3×3 crafting grid."),
_doc_items_hidden = false,
is_ground_content = false,
tiles = {"crafting_workbench_top.png", "default_wood.png", "crafting_workbench_side.png",
"crafting_workbench_side.png", "crafting_workbench_front.png", "crafting_workbench_front.png"},
paramtype2 = "facedir",
groups = {handy=1,axey=1, deco_block=1, material_wood=1,flammable=-1},
on_rightclick = function(pos, node, player, itemstack)
mcl_crafting_table.last_table[player:get_player_name()]=node
show_crafting_form(player)
end,
sounds = mcl_sounds.node_sound_wood_defaults(),
_mcl_blast_resistance = 2.5,
_mcl_hardness = 2.5,
})
minetest.register_craft({
output = "mcl_crafting_table:crafting_table",
recipe = {
{"group:wood", "group:wood"},
{"group:wood", "group:wood"}
}
})
minetest.register_craft({
type = "fuel",
recipe = "mcl_crafting_table:crafting_table",
burntime = 15,
})
minetest.register_alias("crafting:workbench", "mcl_crafting_table:crafting_table")
minetest.register_alias("mcl_inventory:workbench", "mcl_crafting_table:crafting_table")
local S = minetest.get_translator("mcl_crafting_table")
minetest.register_node("mcl_crafting_table:crafting_table", {
description = S("Crafting Table"),
_tt_help = S("3×3 crafting grid"),
_doc_items_longdesc = S("A crafting table is a block which grants you access to a 3×3 crafting grid which allows you to perform advanced crafts."),
_doc_items_usagehelp = S("Rightclick the crafting table to access the 3×3 crafting grid."),
_doc_items_hidden = false,
is_ground_content = false,
tiles = {"crafting_workbench_top.png", "default_wood.png", "crafting_workbench_side.png",
"crafting_workbench_side.png", "crafting_workbench_front.png", "crafting_workbench_front.png"},
paramtype2 = "facedir",
groups = {handy=1,axey=1, deco_block=1, material_wood=1,flammable=-1},
on_rightclick = function(pos, node, player, itemstack)
player:get_inventory():set_width("craft", 3)
player:get_inventory():set_size("craft", 9)
local form = "size[9,8.75]"..
"image[4.7,1.5;1.5,1;gui_crafting_arrow.png]"..
"label[0,4;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]"..
"list[current_player;main;0,4.5;9,3;9]"..
mcl_formspec.get_itemslot_bg(0,4.5,9,3)..
"list[current_player;main;0,7.74;9,1;]"..
mcl_formspec.get_itemslot_bg(0,7.74,9,1)..
"label[1.75,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Crafting"))).."]"..
"list[current_player;craft;1.75,0.5;3,3;]"..
mcl_formspec.get_itemslot_bg(1.75,0.5,3,3)..
"list[current_player;craftpreview;6.1,1.5;1,1;]"..
mcl_formspec.get_itemslot_bg(6.1,1.5,1,1)..
"image_button[0.75,1.5;1,1;craftguide_book.png;__mcl_craftguide;]"..
"tooltip[__mcl_craftguide;"..minetest.formspec_escape(S("Recipe book")).."]"..
"listring[current_player;main]"..
"listring[current_player;craft]"
minetest.show_formspec(player:get_player_name(), "main", form)
end,
sounds = mcl_sounds.node_sound_wood_defaults(),
_mcl_blast_resistance = 2.5,
_mcl_hardness = 2.5,
})
minetest.register_craft({
output = "mcl_crafting_table:crafting_table",
recipe = {
{"group:wood", "group:wood"},
{"group:wood", "group:wood"}
}
})
minetest.register_craft({
type = "fuel",
recipe = "mcl_crafting_table:crafting_table",
burntime = 15,
})
minetest.register_alias("crafting:workbench", "mcl_crafting_table:crafting_table")
minetest.register_alias("mcl_inventory:workbench", "mcl_crafting_table:crafting_table")

View File

@ -1,4 +1 @@
name = mcl_crafting_table
description = Adds a crafting table.
depends = mcl_init, mcl_formspec, mcl_sounds
optional_depends = mcl_banners