Reworked and translated.

master
A.C.M 2020-05-05 13:38:46 +02:00
parent c433b136d7
commit ffd6aad6be
190 changed files with 2684 additions and 0 deletions

89
LICENSE.txt Normal file
View File

@ -0,0 +1,89 @@
Copyright (C) "BY ULLA"
IT
PUOI UTILIZZARE QUESTA MOD IN MINETEST,
PUOI INTEGRARLA IN ALTRE MOD PER MINETEST
O UTILIZZARNE SINGOLE PARTI
QUESTA MOD HA SOLO UNA RESTRIZIONE :
OGNI PARTE ORIGINALE CREATA DA ME (TEXTURES MODELLI ETC..)
NON PUÒ ESSERE UTILIZZATA PER SCOPI PUBBLICITARI O ALTRI GIOCHI ESCLUDENDO LA MIA APPROVAZIONE IN OGNI CASO VA INDICATO IL MIO NOME >ANDREA DI PIETRO ULLA <
PER QUANTO RIGUARDA IL CODICE SCRITTO, LE LICENZE SONO QUELLE DI MINETEST DEFAULT
ANCHE PER IL CODICE AGGIUNTO O MODIFICATO ,
QUESTA LICENZA DEVE ESSERE INSERITA IN OGNI PROGETTO CHE USA LA MOD O PARTE DI ESSA .
QUESTA MOD PUÒ ESSERE MIGLIORATA , SENZA ESCLUDERE IL MIO NOME PER AVERE IDEATO E CREATO LA MOD
PUOI UTILIZZARLA NEI TUOI VIDEO PER MINETEST
FOR THE REST OF THE CODE THE LICENSE IS OF THE TYPE: MIT
L'autorizzazione è concessa, gratuitamente,
a chiunque ottenga una copia di questo software e dei file di documentazione associati (il "Software"),
per trattare il Software senza restrizioni,
inclusi senza limitazione i diritti di utilizzo, copia, modifica, unione , pubblicare, distribuire,
concedere in sublicenza e / o vendere copie del Software e per consentire alle persone a cui il Software è fornito di farlo,
fatte salve le seguenti condizioni:
La nota di copyright e il presente avviso di autorizzazione di cui sopra devono essere inclusi in tutte le copie o parti sostanziali del software.
IL SOFTWARE È FORNITO "COSÌ COM'È", SENZA ALCUN TIPO DI GARANZIA, ESPRESSA O IMPLICITA, COMPRESO MA NON LIMITATO ALLE GARANZIE DI COMMERCIABILITÀ,
IDONEITÀ PER UNO SCOPO PARTICOLARE E NON VIOLAZIONE. IN NESSUN CASO GLI AUTORI OI TITOLARI DEL COPYRIGHT SARANNO RESPONSABILI DI QUALSIASI RECLAMO,
DANNO O ALTRO RESPONSABILITÀ, SE IN AZIONE DI CONTRATTO, TORT O ALTRO, DERIVANTE DA,
FUORI O IN CONNESSIONE CON IL SOFTWARE O L'UTILIZZO O ALTRE OFFERTE NEL SOFTWARE.
IL CODICE DELLE ARMATURE DIPENDONO DALLA LICENZA DI 3D_ARMOR
3D Armor - Visible Player Armor
===============================
License Source Code: Copyright (C) 2013-2018 Stuart Jones - LGPL v2.1
Armor Textures: Copyright (C) 2017-2018 davidthecreator - CC-BY-SA 3.0
Special credit to Jordach and MirceaKitsune for providing the default 3d character model.
PER I MEDIA FILE LA LICENZA E'DI TIPO: CC BY-NC
Permette di distribuire, modificare,
creare opere derivate dall'originale,
ma non a scopi commerciali,
a condizione che venga: riconosciuta una menzione di paternità adeguata,
fornito un link alla licenza e indicato se sono state effettuate delle modifiche.
Chi modifica l'opera originale non è tenuto a utilizzare le stesse licenze per le opere derivate.
EN)
YOU CAN USE THIS MOD IN MINETEST,
YOU CAN INTEGRATE IT IN OTHER MOD FOR MINETEST
OR USE SINGLE PARTS
THIS MOD HAS A RESTRICTION ONLY:
EVERY ORIGINAL PART MADE BY ME (TEXTURES MODELS ETC ..)
IT CAN NOT BE USED FOR ADVERTISING PURPOSES OR OTHER GAMES BY EXCLUDING MY APPROVAL IN ANY CASE IT SHOWS MY NAME> ANDREA DI PIETRO ULLA <
WITH REGARD TO THE WRITTEN CODE, THE LICENSES ARE THOSE OF MINETEST DEFAULT
ALSO FOR THE ADDED OR MODIFIED CODE,
THIS LICENSE MUST BE INSERTED IN ANY PROJECT WHICH USES MOD OR PART OF IT.
THIS MOD CAN BE IMPROVED, WITHOUT EXCLUDING MY NAME TO HAVE IDEATED AND CREATED MOD
YOU CAN USE IT IN YOUR VIDEOS FOR MINETEST
FOR MEDIA FILES THE LICENSE IS TYPE: MT
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.
THE ARMORIES CODE DEPENDS ON THE 3D_HARMOR LICENSE :
(3D Armor - Visible Player Armor
===============================
License Source Code: Copyright (C) 2013-2018 Stuart Jones - LGPL v2.1
Armor Textures: Copyright (C) 2017-2018 davidthecreator - CC-BY-SA 3.0
Special credit to Jordach and MirceaKitsune for providing the default 3d character model.)
FOR MEDIA FILES THE LICENSE IS TYPE: CC BY-NC
Allows you to distribute, modify,
create works derived from the original,
  but not for commercial purposes,
  provided that: a mention of adequate authorship is recognized,
  provided a link to the license and indicated if changes have been made.
Anyone who modifies the original work is not required to use the same licenses for derivative works.

35
README.md Normal file
View File

@ -0,0 +1,35 @@
# cannabis
IT)
Questa mod punta ad illustrare la vasta possibilità e settori di utilizzo della canapa , la sua importanza nei vari settori medici culinari industriali bioenergetici ricreativi etc
punta anche a sfatare le bugie che fin ora sono state dette su di essa
e far conoscere come puo essere utile per pulire l'aria e i terreni dall'inquinamento questa mod non illustrera soltanto il lato ricreativo
come ce lo hanno mostrato fin ora cioè in maniera distorta.
Questo e' il motivo per cui ho creato questa mod per debellare l'gnoranza e la mal'informazione sulla canapa in maniera educativa,
completare tutti gli asppetti della mod richiede un po di lavoro per questo e' ancora in fase di lavorazione ed espansione
EN)
This mod aims to illustrate the vast possibilities and sectors of use of hemp, its importance in the various medical culinary industrial bioenergetic recreational sectors etc
it also aims to dispel the lies that have so far been said about it
and let people know how it can be useful to clean the air and the soil from pollution this mod will not only illustrate the recreational side
as they have shown us so far, that is, in a distorted way.
This is the reason why I created this mod to eradicate the ignorance and misinformation about hemp in an educational way,
completing all the twists of the mod requires a bit of work for this and is still in the processing and expansion phase
DE)
717/5000
Dieser Mod soll die enormen Möglichkeiten und Sektoren der Verwendung von Hanf, seine Bedeutung in den verschiedenen medizinisch-kulinarischen industriellen bioenergetischen Freizeitsektoren usw. Veranschaulichen
es zielt auch darauf ab, die Lügen zu zerstreuen, die bisher darüber gesagt wurden
und lassen Sie die Leute wissen, wie nützlich es sein kann, die Luft und den Boden von Verschmutzung zu reinigen. Dieser Mod wird nicht nur die Erholungsseite veranschaulichen
wie sie uns bisher gezeigt haben, also verzerrt.
Dies ist der Grund, warum ich diesen Mod erstellt habe, um die Unwissenheit und Fehlinformation über Hanf auf pädagogische Weise zu beseitigen.
Das Abschließen aller Drehungen des Mods erfordert ein wenig Arbeit und befindet sich noch in der Verarbeitungs- und Erweiterungsphase
ES)
Este mod tiene como objetivo ilustrar las vastas posibilidades y sectores de uso del cáñamo, su importancia en los diversos sectores médicos, culinarios, industriales, bioenergéticos, recreativos, etc.
También tiene como objetivo disipar las mentiras que hasta ahora se han dicho al respecto
y que la gente sepa cómo puede ser útil limpiar el aire y el suelo de la contaminación, este mod no solo ilustrará el lado recreativo
como nos han mostrado hasta ahora, es decir, de manera distorsionada.
Esta es la razón por la que creé este mod para erradicar la ignorancia y la información errónea sobre el cáñamo de una manera educativa,
completar todos los giros del mod requiere un poco de trabajo para esto y todavía está en la fase de procesamiento y expansión

102
armor.lua Normal file
View File

@ -0,0 +1,102 @@
-- get Boilerplate for Translations
local S = cannabis.S
--armor
if minetest.get_modpath("cannabis") then
local stats = {
fibra = { name="fibra", armor=3.8, heal=28, use=100 },
tessuto= { name="tessuto", armor=2.0, heal=18, use=50 },
foglie = { name="foglie", armor=2.7, heal=8, use=10 },
high = { name="high_performance", armor=3.9, heal=38, use=1 },
adminh = { name="adminh", armor=100, heal=100, use=100 ,armor_water=1,not_in_creative_inventory=0},
}
local mats = {
fibra="cannabis:fibra_ingot",
tessuto="cannabis:tessuto_ingot",
foglie="cannabis:foglie_ingot",
high="cannabis:high_performance_ingot",
adminh="cannabis:adminh_block",
}
for k, v in pairs(stats) do
minetest.register_tool("cannabis:helmet_"..k, {
description = v.name..S(" Helmet"),
inventory_image = "cannabis_armor_inv_helmet_"..k..".png",
groups = {armor_head=math.floor(5*v.armor), armor_heal=v.heal, armor_use=v.use},
wear = 0,
})
minetest.register_tool("cannabis:chestplate_"..k, {
description = v.name.. S(" Chestplate"),
inventory_image = "cannabis_armor_inv_chestplate_"..k..".png",
groups = {armor_torso=math.floor(8*v.armor), armor_heal=v.heal, armor_use=v.use},
wear = 0,
})
minetest.register_tool("cannabis:leggings_"..k, {
description = v.name.. S(" Leggings"),
inventory_image = "cannabis_armor_inv_leggings_"..k..".png",
groups = {armor_legs=math.floor(7*v.armor), armor_heal=v.heal, armor_use=v.use},
wear = 0,
})
minetest.register_tool("cannabis:boots_"..k, {
description = v.name..S(" Boots"),
inventory_image = "cannabis_armor_inv_boots_"..k..".png",
groups = {armor_feet=math.floor(4*v.armor), armor_heal=v.heal, armor_use=v.use},
wear = 0,
})
end
for k, v in pairs(mats) do
minetest.register_craft({
output = "cannabis:helmet_"..k,
recipe = {
{v, v, v},
{v, "", v},
{"", "", ""},
},
})
minetest.register_craft({
output = "cannabis:chestplate_"..k,
recipe = {
{v, "", v},
{v, v, v},
{v, v, v},
},
})
minetest.register_craft({
output = "cannabis:leggings_"..k,
recipe = {
{v, v, v},
{v, "", v},
{v, "", v},
},
})
minetest.register_craft({
output = "cannabis:boots_"..k,
recipe = {
{v, "", v},
{v, "", v},
},
})
end
if minetest.get_modpath("shields") then
for k, v in pairs(stats) do
minetest.register_tool("cannabis:shield_"..k, {
description = v.name.. S(" Hemp Shield"),
inventory_image = "cannabis_armor_inv_shield_"..k..".png",
groups = {armor_shield=math.floor(5*v.armor), armor_heal=v.heal, armor_use=v.use},
wear = 0,
})
local m = mats[k]
minetest.register_craft({
output = "cannabis:shield_"..k,
recipe = {
{m, m, m},
{m, m, m},
{"", m, ""},
},
})
end -- for k,v
end -- if minetest.get_modpath("shields")
end--if minetest.get_modpath("cannabis")

180
canapa.lua Normal file
View File

@ -0,0 +1,180 @@
-- get Boilerplate for Translations
local S = cannabis.S
local path = cannabis.path
minetest.register_node("cannabis:canapa", {
description = S("Hemp"),
drawtype = "plantlike",
tiles = {"cannabis_canapa.png"},
inventory_image = "cannabis_canapa.png",
wield_image = "cannabis_canapa.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
selection_box = {
type = "fixed",
fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
},
groups = {snappy = 3, flammable = 2},
sounds = "cannabis_canapa_s",
drop = {
max_items = 3,
items = {
{items = {"cannabis:canapa"}, rarity = 1 },
{items = {"cannabis:canapa_leaves"}, rarity = 1 },
{items = {"cannabis:canapa_seed"}, rarity = 1 },
}
},
after_dig_node = function(pos, node, metadata, digger)
default.dig_up(pos, node, digger)
end,
})
--function
function minetest.grow_canapa(pos, node)
pos.y = pos.y - 1
local name = minetest.get_node(pos).name
if name ~= "default:dirt_with_grass" and name ~= "default:dirt" then
return
end
if not minetest.find_node_near(pos, 1, {"group:water"}) then
return
end
pos.y = pos.y + 1
local height = 0
while node.name == "cannabis:canapa" and height < 6 do
height = height + 1
pos.y = pos.y + 1
node = minetest.get_node(pos)
end
if height == 6 or node.name ~= "air" then
return
end
minetest.set_node(pos, {name = "cannabis:canapa"})
return true
end
--mapgen
minetest.register_abm({
label = "Grow canapa",
nodenames = {"cannabis:canapa"},
neighbors ={"default:dirt_with_grass"},
interval = 14,
chance = 71,
action = function(...)
minetest.grow_canapa(...)
end
})
minetest.register_biome({
name = "canapa_swamp",
--node_dust = "",
node_top = "default:dirt_with_grass",
depth_top = 1,
node_filler = "default:dirt",
depth_filler = 3,
--node_stone = "",
--node_water_top = "",
--depth_water_top = ,
--node_water = "",
--node_river_water = "",
node_riverbed = "default:sand",
depth_riverbed = 2,
y_min = -1,
y_max = 0,
heat_point = 89,
humidity_point = 22,
})
minetest.register_decoration({
deco_type = "simple",
place_on = {"default:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = -0.3,
scale = 0.7,
spread = {x = 100, y = 100, z = 100},
seed = 1,
octaves = 3,
persist = 1.5
},
biomes = {"canapa_swamp"},
y_min = 1,
y_max = 5,
decoration = "cannabis:canapa",
height = 5,
height_max = 5,
spawn_by = "default:water_source",
num_spawn_by = 1,
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"default:dirt_with_grass"},
sidelen = 16,
noise_params = {
offset = -0.3,
scale = 0.7,
spread = {x = 100, y = 100, z = 100},
seed = 354,
octaves = 3,
persist = 0.7
},
biomes = {"canapa_swamp"},
y_min = 0,
y_max = 0,
schematic = path .. "/schematics/canapa.mts",--minetest.get_modpath("cannabis").."/schematics/canapa.mts",
})
-- This file supplies hemp for the plantlife modpack
-- Last revision: 2016-01-14
minetest.register_node('cannabis:seedling', {
description = S("Hemp (seedling)"),
drawtype = 'plantlike',
waving = 1,
tiles = { '1hemp_seedling.png' },
inventory_image = '1hemp_seedling.png',
wield_image = '1hemp_seedling.png',
sunlight_propagates = true,
paramtype = 'light',
walkable = false,
groups = { snappy = 3, poisonivy=1, flora_block=1 },
sounds = "cannabis_canapa_s3",
buildable_to = true,
})
minetest.register_node('cannabis:sproutling', {
description = S("Hemp (sproutling)"),
drawtype = 'plantlike',
waving = 1,
tiles = { 'hemp_sproutling.png' },
inventory_image = 'hemp_sproutling.png',
wield_image = 'hemp_sproutling.png',
sunlight_propagates = true,
paramtype = 'light',
walkable = false,
groups = { snappy = 3, poisonivy=1, flora_block=1 },
sounds = "cannabis_canapa_s3",
buildable_to = true,
})
minetest.register_node('cannabis:climbing', {
description = S("Hemp (climbing plant)"),
drawtype = 'signlike',
tiles = { 'hemp_climbing.png' },
inventory_image = 'hemp_climbing.png',
wield_image = 'hemp_climbing.png',
sunlight_propagates = true,
paramtype = 'light',
paramtype2 = 'wallmounted',
walkable = false,
groups = { snappy = 3, poisonivy=1, flora_block=1 },
sounds = "cannabis_canapa_s3",
selection_box = {
type = "wallmounted",
--wall_side = = <default>
},
buildable_to = true,
})

178
canapa_rossa.lua Normal file
View File

@ -0,0 +1,178 @@
-- get Boilerplate for Translations
local S = cannabis.S
local path = cannabis.path
minetest.register_node("cannabis:canapa_red", {
description = S("Hemp red"),
drawtype = "plantlike",
tiles = {"cannabis_canapa_red.png"},
inventory_image = "cannabis_canapa_red.png",
wield_image = "cannabis_canapa_red.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
selection_box = {
type = "fixed",
fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
},
groups = {snappy = 3, flammable = 2},
sounds = "cannabis_canapa_s",
drop = {
max_items = 3,
items = {
{items = {"cannabis:canapa_red"}, rarity = 1 },
{items = {"cannabis:canapa_red_leaves"}, rarity = 1 },
{items = {"cannabis:canapa_red_seed"}, rarity = 1 },
}
},
after_dig_node = function(pos, node, metadata, digger)
default.dig_up(pos, node, digger)
end,
})
--function
function minetest.grow_canapa_red(pos, node)
pos.y = pos.y - 1
local name = minetest.get_node(pos).name
if name ~= "default:desert_sand" and name ~= "default:sand" then
return
end
if not minetest.find_node_near(pos, 5, {"group:water"}) then
return
end
pos.y = pos.y + 1
local height = 0
while node.name == "cannabis:canapa_red" and height < 6 do
height = height + 1
pos.y = pos.y + 1
node = minetest.get_node(pos)
end
if height == 5 or node.name ~= "air" then
return
end
minetest.set_node(pos, {name = "cannabis:canapa_red"})
return true
end
--mapgen
minetest.register_abm({
label = "Grow canapa red",
nodenames = {"cannabis:canapa_red"},
neighbors ={"default:desert_sand","default:sand"},
interval = 5,
chance = 40,
action = function(...)
minetest.grow_canapa_red(...)
end
})
minetest.register_biome({
name = "canapa_swampr",
--node_dust = "",
node_top ={"default:desert_sand","summer:sabbia_mare"},
depth_top = 1,
node_filler = "default:desert_sand",
depth_filler = 1,
--node_stone = "",
--node_water_top = "",
--depth_water_top = ,
--node_water = "",
--node_river_water = "",
node_riverbed = "default:sand",
depth_riverbed = 2,
y_min = 1,
y_max =31000,
--heat_point = 0,
-- humidity_point = 1,
})
minetest.register_decoration({
deco_type = "simple",
place_on = {"summer:sabbia_mare","default:dirt_with_grass","default:desert_sand","default:dirt_with_dry_grass"},
sidelen = 16,
noise_params = {
offset = -0.3,
scale = 0.7,
spread = {x = 100, y = 100, z = 100},
seed = 1,
octaves = 3,
persist = 1.5
},
biomes = {"canapa_swampr"},
y_min = 1,
y_max = 5,
decoration = "cannabis:canapa_red",
height = 5,
height_max = 5,
spawn_by ={ "default:desert_sand","default:sand"},
num_spawn_by = 1,
})
minetest.register_decoration({
deco_type = "schematic",
place_on = {"default:dirt","default:dirt_with_grass","default:desert_sand","default:dirt_with_dry_grass"},
sidelen = 16,
noise_params = {
offset = -0.3,
scale = 0.7,
spread = {x = 100, y = 100, z = 100},
seed = 354,
octaves = 3,
persist = 0.7
},
biomes = {"canapa_swampr"},
y_min = 0,
y_max = 31000,
schematic = path .. "/schematics/canapa.mts",
})
minetest.register_node('cannabis:seedling_r', {
description = S("Hemp red(seedling)"),
drawtype = 'plantlike',
waving = 1,
tiles = { '1hemp_seedling_red.png' },
inventory_image = '1hemp_seedling_red.png',
wield_image = '1hemp_seedling_red.png',
sunlight_propagates = true,
paramtype = 'light',
walkable = false,
groups = { snappy = 3, poisonivy=1, flora_block=1 },
sounds = "cannabis_canapa_s3",
buildable_to = true,
})
minetest.register_node('cannabis:sproutling_r', {
description = S("Hemp red (sproutling)"),
drawtype = 'plantlike',
waving = 1,
tiles = { 'hemp_sproutling_red.png' },
inventory_image = 'hemp_sproutling_red.png',
wield_image = 'hemp_sproutling_red.png',
sunlight_propagates = true,
paramtype = 'light',
walkable = false,
groups = { snappy = 3, poisonivy=1, flora_block=1 },
sounds = "cannabis_canapa_s3",
buildable_to = true,
})
minetest.register_node('cannabis:climbing_r', {
description = S("Hemp red (climbing plant)"),
drawtype = 'signlike',
tiles = { 'hemp_climbing_red.png' },
inventory_image = 'hemp_climbing_red.png',
wield_image = 'hemp_climbing_red.png',
sunlight_propagates = true,
paramtype = 'light',
paramtype2 = 'wallmounted',
walkable = false,
groups = { snappy = 3, poisonivy=1, flora_block=1 },
sounds = "cannabis_canapa_s3",
selection_box = {
type = "wallmounted",
--wall_side = = <default>
},
buildable_to = true,
})

219
craftitem.lua Normal file
View File

@ -0,0 +1,219 @@
-- get Boilerplate for Translations
local S = cannabis.S
--craft item :fiber, fuel, plastic, paper,flower,oil,flour,bred,raisin,seed,leaves
minetest.register_craftitem("cannabis:canapa_fiber", {
description = S("Fiber"),
inventory_image = "cannabis_canapa_fiber.png",
})
minetest.register_craftitem("cannabis:canapa_fuel", {
description = S("Fuel"),
inventory_image = "cannabis_fuel.png",
})
minetest.register_craftitem("cannabis:canapa_plastic", {
description = S("Plastic"),
inventory_image = "cannabis_plastic.png",
})
minetest.register_craftitem("cannabis:canapa_paper", {
description = S("Paper"),
inventory_image = "cannabis_paper.png",
})
minetest.register_craftitem("cannabis:canapa_flour", {
description = S("Flour"),
inventory_image = "cannabis_canapa_flour.png",
})
minetest.register_craftitem("cannabis:canapa_bread", {
description = S("Bread"),
inventory_image = "cannabis_canapa_bread.png",
on_use = minetest.item_eat(10),
})
minetest.register_craftitem("cannabis:canapa_seed", {
description = S("Hemp Seed"),
inventory_image = "cannabis_canapa_seed.png",
on_use = minetest.item_eat(10),
})
minetest.register_craftitem("cannabis:canapa_leaves", {
description = S("Hemp Leaves"),
inventory_image = "cannabis_canapa_leaves.png",
on_use = minetest.item_eat(5),
})
minetest.register_craftitem("cannabis:canapa_flower", {
description = S("Hemp Flower"),
inventory_image = "cannabis_canapa_flower.png",
on_use = minetest.item_eat(5),
})
minetest.register_craftitem("cannabis:canapa_raisin", {
description = S("Hemp Raisin"),
inventory_image = "cannabis_canapa_raisin.png",
on_use = minetest.item_eat(5),
})
minetest.register_craftitem("cannabis:canapa_oil", {
description = S("Hemp Oil"),
inventory_image = "cannabis_canapa_oil.png",
on_use = minetest.item_eat(5),
})
minetest.register_craftitem("cannabis:canapa_glue", {
description = S("Hemp Glue"),
inventory_image = "cannabis_canapa_glue.png",
on_use = minetest.item_eat(1),
})
--crafting
minetest.register_craft({
output = "cannabis:canapa_oil 4 ",
recipe = {
{"","",""},
{"","",""},
{"cannabis:canapa_flower","cannabis:canapa_raisin","cannabis:canapa_flower"},
}
})
minetest.register_craft({
output = "cannabis:canapa_fuel 4 ",
recipe ={
{"cannabis:canapa","cannabis:canapa",""},
{"cannabis:canapa","cannabis:canapa",""},
{"cannabis:canapa","cannabis:canapa",""},
}
})
minetest.register_craft({
output = "cannabis:canapa_plastic 8 ",
recipe ={
{"cannabis:canapa","cannabis:canapa","cannabis:canapa"},
{"cannabis:canapa","cannabis:canapa","cannabis:canapa"},
}
})
minetest.register_craft({
output = "cannabis:canapa_glue 10 ",
recipe = {
{"cannabis:canapa_plastic","cannabis:canapa_raisin","cannabis:canapa_plastic"},
{"cannabis:canapa_raisin","cannabis:canapa_oil","cannabis:canapa_raisin"},
{"cannabis:canapa_plastic","cannabis:canapa_raisin","cannabis:canapa_plastic"},
}
})
minetest.register_craft({
output = "cannabis:climbing ",
recipe = {
{"cannabis:canapa_leaves","cannabis:canapa_leaves","cannabis:canapa_leaves"},
{"cannabis:canapa_leaves","cannabis:canapa_leaves","cannabis:canapa_leaves"},
{"cannabis:canapa_leaves","cannabis:canapa_leaves","cannabis:canapa_leaves"},
}
})
minetest.register_craft({
output = "cannabis:hp_block_canapa 4 ",
recipe = {
{"cannabis:canapa_fiber","cannabis:canapa_glue","cannabis:canapa_fiber"},
{"cannabis:canapa_glue","cannabis:canapa_fiber","cannabis:canapa_glue"},
{"cannabis:canapa_fiber","cannabis:canapa_glue","cannabis:canapa_fiber"},
}
})
minetest.register_craft({
output = "cannabis:canapa_raisin 3 ",
recipe = {
{"","",""},
{"","",""},
{"cannabis:canapa_flower","cannabis:canapa_flower",""},
}
})
minetest.register_craft({
output = "cannabis:canapa_flower 5 ",
recipe = {
{"","",""},
{"","",""},
{"cannabis:canapa_leaves","cannabis:canapa_leaves",""},
}
})
minetest.register_craft({
output = "cannabis:canapa_seed 10 ",
recipe = {
{"cannabis:canapa","",""},
{"","cannabis:canapa",""},
{"","","cannabis:canapa"},
}
})
minetest.register_craft({
output = "cannabis:canapa_fiber 10 ",
recipe = {
{"","","cannabis:canapa"},
{"","cannabis:canapa",""},
{"cannabis:canapa","",""},
}
})
minetest.register_craft({
output = "cannabis:canapa_paper 6 ",
recipe = {
{"cannabis:canapa", "cannabis:canapa", "cannabis:canapa"
},
}
})
minetest.register_craft({
type = "fuel",
recipe = "cannabis:canapa",
burntime = 15,
})
minetest.register_craft({
type = "fuel",
recipe = "cannabis:canapa_fuel",
burntime = 50,
})
minetest.register_craft({
type = "shapeless",
output = "cannabis:canapa_flour 4",
recipe = {"cannabis:canapa_seed", "cannabis:canapa_seed", "cannabis:canapa_seed", "cannabis:canapa_seed"}
})
minetest.register_craft({
type = "cooking",
cooktime = 10,
output = "cannabis:canapa_bread",
recipe = "cannabis:canapa_flour"
})
minetest.register_craft({
output = "cannabis:cannabis_foglie_block 5 ",
recipe = {
{"cannabis:climbing","cannabis:climbing","cannabis:climbing"},
{"cannabis:climbing","cannabis:climbing","cannabis:climbing"},
{"cannabis:climbing","cannabis:climbing","cannabis:climbing"},
}
})
minetest.register_craft({
type = "shapeless",
output = "cannabis:climbing 9",
recipe = {"cannabis:cannabis_foglie_block","",""}
})
minetest.register_craft({
type = "shapeless",
output = "cannabis:mixed_hr_ingot 3",
recipe = {"cannabis:fibra_ingot", "cannabis:foglie_ingot", "cannabis:tessuto_ingot"}
})

163
craftred.lua Normal file
View File

@ -0,0 +1,163 @@
-- get Boilerplate for Translations
local S = cannabis.S
minetest.register_craftitem("cannabis:canapa_red_seed", {
description = S("Hemp Seed"),
inventory_image = "cannabis_canapa_red_seed.png",
on_use = minetest.item_eat(10),
})
minetest.register_craftitem("cannabis:canapa_red_leaves", {
description = S("Hemp Leaves"),
inventory_image = "cannabis_canapa_red_leaves.png",
on_use = minetest.item_eat(5),
})
minetest.register_craftitem("cannabis:canapa_red_flower", {
description = S("Hemp red Flower"),
inventory_image = "cannabis_canapa_red_flower.png",
on_use = minetest.item_eat(5),
})
-------------------------------------------------------------------
minetest.register_craft({
output = "cannabis:canapa_oil 4 ",
recipe = {
{"","",""},
{"","",""},
{"cannabis:canapa_red_flower","cannabis:canapa_red_raisin","cannabis:canapa_red_flower"},
}
})
minetest.register_craft({
output = "cannabis:canapa_fuel 4 ",
recipe ={
{"cannabis:canapa_red","cannabis:canapa_red",""},
{"cannabis:canapa_red","cannabis:canapa_red",""},
{"cannabis:canapa_red","cannabis:canapa_red",""},
}
})
minetest.register_craft({
output = "cannabis:canapa_plastic 8 ",
recipe ={
{"cannabis:canapa_red","cannabis:canapa_red","cannabis:canapa_red"},
{"cannabis:canapa_red","cannabis:canapa_red","cannabis:canapa_red"},
}
})
minetest.register_craft({
output = "cannabis:canapa_glue 10 ",
recipe = {
{"cannabis:canapa_red_plastic","cannabis:canapa_red_raisin","cannabis:canapa_red_plastic"},
{"cannabis:canapa_red_raisin","cannabis:canapa_red_oil","cannabis:canapa_red_raisin"},
{"cannabis:canapa_red_plastic","cannabis:canapa_red_raisin","cannabis:canapa_red_plastic"},
}
})
minetest.register_craft({
output = "cannabis:hp_block_canapa 4 ",
recipe = {
{"cannabis:canapa_red_fiber","cannabis:canapa_red_glue","cannabis:canapa_red_fiber"},
{"cannabis:canapa_red_glue","cannabis:canapa_red_fiber","cannabis:canapa_red_glue"},
{"cannabis:canapa_red_fiber","cannabis:canapa_red_glue","cannabis:canapa_red_fiber"},
}
})
minetest.register_craft({
output = "cannabis:canapa_raisin 3 ",
recipe = {
{"","",""},
{"","",""},
{"cannabis:canapa_red_flower","cannabis:canapa_red_flower",""},
}
})
minetest.register_craft({
output = "cannabis:climbing_r ",
recipe = {
{"cannabis:canapa_red_leaves","cannabis:canapa_red_leaves","cannabis:canapa_red_leaves"},
{"cannabis:canapa_red_leaves","cannabis:canapa_red_leaves","cannabis:canapa_red_leaves"},
{"cannabis:canapa_red_leaves","cannabis:canapa_red_leaves","cannabis:canapa_red_leaves"},
}
})
minetest.register_craft({
output = "cannabis:canapa_red_flower 5 ",
recipe = {
{"","",""},
{"","",""},
{"cannabis:canapa_red_leaves","cannabis:canapa_red_leaves",""},
}
})
minetest.register_craft({
output = "cannabis:canapa_red_seed 10 ",
recipe = {
{"cannabis:canapa_red","",""},
{"","cannabis:canapa_red",""},
{"","","cannabis:canapa_red"},
}
})
minetest.register_craft({
output = "cannabis:canapa_fiber 10 ",
recipe = {
{"","","cannabis:canapa_red"},
{"","cannabis:canapa_red",""},
{"cannabis:canapa_red","",""},
}
})
minetest.register_craft({
output = "cannabis:canapa_paper 6 ",
recipe = {
{"cannabis:canapa_red", "cannabis:canapa_red", "cannabis:canapa_red"
},
}
})
minetest.register_craft({
type = "fuel",
recipe = "cannabis:canapa_red",
burntime = 15,
})
minetest.register_craft({
type = "shapeless",
output = "cannabis:canapa_red_flour 4",
recipe = {"cannabis:canapa_red_seed", "cannabis:canapa_red_seed", "cannabis:canapa_red_seed", "cannabis:canapa_red_seed"}
})
minetest.register_craft({
type = "cooking",
cooktime = 10,
output = "cannabis:canapa_bread",
recipe = "cannabis:canapa_flour"
})
minetest.register_craft({
output = "cannabis:cannabis_foglie_red_block ",
recipe = {
{"cannabis:climbing_r","cannabis:climbing_r","cannabis:climbing_r"},
{"cannabis:climbing_r","cannabis:climbing_r","cannabis:climbing_r"},
{"cannabis:climbing_r","cannabis:climbing_r","cannabis:climbing_r"},
}
})
minetest.register_craft({
type = "shapeless",
output = "cannabis:mixed_hr_ingot 3",
recipe = {"cannabis:fibra_ingot", "cannabis:foglie_ingot", "cannabis:tessuto_ingot"}
})
minetest.register_craft({
type = "shapeless",
output = "cannabis:climbing_r 9",
recipe = {"cannabis:cannabis_foglie_red_block", "", ""}
})

9
depends.txt Normal file
View File

@ -0,0 +1,9 @@
default
fire
3d_armor?
maptools?

426
i18n.py Normal file
View File

@ -0,0 +1,426 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Script to generate the template file and update the translation files.
# Copy the script into the mod or modpack root folder and run it there.
#
# Copyright (C) 2019 Joachim Stolberg, 2020 FaceDeer, 2020 Louis Royer
# LGPLv2.1+
#
# See https://github.com/minetest-tools/update_translations for
# potential future updates to this script.
from __future__ import print_function
import os, fnmatch, re, shutil, errno
from sys import argv as _argv
# Running params
params = {"recursive": False,
"help": False,
"mods": False,
"verbose": False,
"folders": [],
"no-old-file": False
}
# Available CLI options
options = {"recursive": ['--recursive', '-r'],
"help": ['--help', '-h'],
"mods": ['--installed-mods'],
"verbose": ['--verbose', '-v'],
"no-old-file": ['--no-old-file']
}
# Strings longer than this will have extra space added between
# them in the translation files to make it easier to distinguish their
# beginnings and endings at a glance
doublespace_threshold = 60
def set_params_folders(tab: list):
'''Initialize params["folders"] from CLI arguments.'''
# Discarding argument 0 (tool name)
for param in tab[1:]:
stop_param = False
for option in options:
if param in options[option]:
stop_param = True
break
if not stop_param:
params["folders"].append(os.path.abspath(param))
def set_params(tab: list):
'''Initialize params from CLI arguments.'''
for option in options:
for option_name in options[option]:
if option_name in tab:
params[option] = True
break
def print_help(name):
'''Prints some help message.'''
print(f'''SYNOPSIS
{name} [OPTIONS] [PATHS...]
DESCRIPTION
{', '.join(options["help"])}
prints this help message
{', '.join(options["recursive"])}
run on all subfolders of paths given
{', '.join(options["mods"])}
run on locally installed modules
{', '.join(options["no-old-file"])}
do not create *.old files
{', '.join(options["verbose"])}
add output information
''')
def main():
'''Main function'''
set_params(_argv)
set_params_folders(_argv)
if params["help"]:
print_help(_argv[0])
elif params["recursive"] and params["mods"]:
print("Option --installed-mods is incompatible with --recursive")
else:
# Add recursivity message
print("Running ", end='')
if params["recursive"]:
print("recursively ", end='')
# Running
if params["mods"]:
print(f"on all locally installed modules in {os.path.abspath('~/.minetest/mods/')}")
run_all_subfolders("~/.minetest/mods")
elif len(params["folders"]) >= 2:
print("on folder list:", params["folders"])
for f in params["folders"]:
if params["recursive"]:
run_all_subfolders(f)
else:
update_folder(f)
elif len(params["folders"]) == 1:
print("on folder", params["folders"][0])
if params["recursive"]:
run_all_subfolders(params["folders"][0])
else:
update_folder(params["folders"][0])
else:
print("on folder", os.path.abspath("./"))
if params["recursive"]:
run_all_subfolders(os.path.abspath("./"))
else:
update_folder(os.path.abspath("./"))
#group 2 will be the string, groups 1 and 3 will be the delimiters (" or ')
#See https://stackoverflow.com/questions/46967465/regex-match-text-in-either-single-or-double-quote
pattern_lua = re.compile(r'[\.=^\t,{\(\s]N?S\(\s*(["\'])((?:\\\1|(?:(?!\1)).)*)(\1)[\s,\)]', re.DOTALL)
pattern_lua_bracketed = re.compile(r'[\.=^\t,{\(\s]N?S\(\s*\[\[(.*?)\]\][\s,\)]', re.DOTALL)
# Handles "concatenation" .. " of strings"
pattern_concat = re.compile(r'["\'][\s]*\.\.[\s]*["\']', re.DOTALL)
pattern_tr = re.compile(r'(.+?[^@])=(.*)')
pattern_name = re.compile(r'^name[ ]*=[ ]*([^ \n]*)')
pattern_tr_filename = re.compile(r'\.tr$')
pattern_po_language_code = re.compile(r'(.*)\.po$')
#attempt to read the mod's name from the mod.conf file. Returns None on failure
def get_modname(folder):
try:
with open(os.path.join(folder, "mod.conf"), "r", encoding='utf-8') as mod_conf:
for line in mod_conf:
match = pattern_name.match(line)
if match:
return match.group(1)
except FileNotFoundError:
pass
return None
#If there are already .tr files in /locale, returns a list of their names
def get_existing_tr_files(folder):
out = []
for root, dirs, files in os.walk(os.path.join(folder, 'locale/')):
for name in files:
if pattern_tr_filename.search(name):
out.append(name)
return out
# A series of search and replaces that massage a .po file's contents into
# a .tr file's equivalent
def process_po_file(text):
# The first three items are for unused matches
text = re.sub(r'#~ msgid "', "", text)
text = re.sub(r'"\n#~ msgstr ""\n"', "=", text)
text = re.sub(r'"\n#~ msgstr "', "=", text)
# comment lines
text = re.sub(r'#.*\n', "", text)
# converting msg pairs into "=" pairs
text = re.sub(r'msgid "', "", text)
text = re.sub(r'"\nmsgstr ""\n"', "=", text)
text = re.sub(r'"\nmsgstr "', "=", text)
# various line breaks and escape codes
text = re.sub(r'"\n"', "", text)
text = re.sub(r'"\n', "\n", text)
text = re.sub(r'\\"', '"', text)
text = re.sub(r'\\n', '@n', text)
# remove header text
text = re.sub(r'=Project-Id-Version:.*\n', "", text)
# remove double-spaced lines
text = re.sub(r'\n\n', '\n', text)
return text
# Go through existing .po files and, if a .tr file for that language
# *doesn't* exist, convert it and create it.
# The .tr file that results will subsequently be reprocessed so
# any "no longer used" strings will be preserved.
# Note that "fuzzy" tags will be lost in this process.
def process_po_files(folder, modname):
for root, dirs, files in os.walk(os.path.join(folder, 'locale/')):
for name in files:
code_match = pattern_po_language_code.match(name)
if code_match == None:
continue
language_code = code_match.group(1)
tr_name = modname + "." + language_code + ".tr"
tr_file = os.path.join(root, tr_name)
if os.path.exists(tr_file):
if params["verbose"]:
print(f"{tr_name} already exists, ignoring {name}")
continue
fname = os.path.join(root, name)
with open(fname, "r", encoding='utf-8') as po_file:
if params["verbose"]:
print(f"Importing translations from {name}")
text = process_po_file(po_file.read())
with open(tr_file, "wt", encoding='utf-8') as tr_out:
tr_out.write(text)
# from https://stackoverflow.com/questions/600268/mkdir-p-functionality-in-python/600612#600612
# Creates a directory if it doesn't exist, silently does
# nothing if it already exists
def mkdir_p(path):
try:
os.makedirs(path)
except OSError as exc: # Python >2.5
if exc.errno == errno.EEXIST and os.path.isdir(path):
pass
else: raise
# Converts the template dictionary to a text to be written as a file
# dKeyStrings is a dictionary of localized string to source file sets
# dOld is a dictionary of existing translations and comments from
# the previous version of this text
def strings_to_text(dkeyStrings, dOld, mod_name):
lOut = [f"# textdomain: {mod_name}\n"]
dGroupedBySource = {}
for key in dkeyStrings:
sourceList = list(dkeyStrings[key])
sourceList.sort()
sourceString = "\n".join(sourceList)
listForSource = dGroupedBySource.get(sourceString, [])
listForSource.append(key)
dGroupedBySource[sourceString] = listForSource
lSourceKeys = list(dGroupedBySource.keys())
lSourceKeys.sort()
for source in lSourceKeys:
localizedStrings = dGroupedBySource[source]
localizedStrings.sort()
lOut.append("")
lOut.append(source)
lOut.append("")
for localizedString in localizedStrings:
val = dOld.get(localizedString, {})
translation = val.get("translation", "")
comment = val.get("comment")
if len(localizedString) > doublespace_threshold and not lOut[-1] == "":
lOut.append("")
if comment != None:
lOut.append(comment)
lOut.append(f"{localizedString}={translation}")
if len(localizedString) > doublespace_threshold:
lOut.append("")
unusedExist = False
for key in dOld:
if key not in dkeyStrings:
val = dOld[key]
translation = val.get("translation")
comment = val.get("comment")
# only keep an unused translation if there was translated
# text or a comment associated with it
if translation != None and (translation != "" or comment):
if not unusedExist:
unusedExist = True
lOut.append("\n\n##### not used anymore #####\n")
if len(key) > doublespace_threshold and not lOut[-1] == "":
lOut.append("")
if comment != None:
lOut.append(comment)
lOut.append(f"{key}={translation}")
if len(key) > doublespace_threshold:
lOut.append("")
return "\n".join(lOut) + '\n'
# Writes a template.txt file
# dkeyStrings is the dictionary returned by generate_template
def write_template(templ_file, dkeyStrings, mod_name):
# read existing template file to preserve comments
existing_template = import_tr_file(templ_file)
text = strings_to_text(dkeyStrings, existing_template[0], mod_name)
mkdir_p(os.path.dirname(templ_file))
with open(templ_file, "wt", encoding='utf-8') as template_file:
template_file.write(text)
# Gets all translatable strings from a lua file
def read_lua_file_strings(lua_file):
lOut = []
with open(lua_file, encoding='utf-8') as text_file:
text = text_file.read()
#TODO remove comments here
text = re.sub(pattern_concat, "", text)
strings = []
for s in pattern_lua.findall(text):
strings.append(s[1])
for s in pattern_lua_bracketed.findall(text):
strings.append(s)
for s in strings:
s = re.sub(r'"\.\.\s+"', "", s)
s = re.sub("@[^@=0-9]", "@@", s)
s = s.replace('\\"', '"')
s = s.replace("\\'", "'")
s = s.replace("\n", "@n")
s = s.replace("\\n", "@n")
s = s.replace("=", "@=")
lOut.append(s)
return lOut
# Gets strings from an existing translation file
# returns both a dictionary of translations
# and the full original source text so that the new text
# can be compared to it for changes.
def import_tr_file(tr_file):
dOut = {}
text = None
if os.path.exists(tr_file):
with open(tr_file, "r", encoding='utf-8') as existing_file :
# save the full text to allow for comparison
# of the old version with the new output
text = existing_file.read()
existing_file.seek(0)
# a running record of the current comment block
# we're inside, to allow preceeding multi-line comments
# to be retained for a translation line
latest_comment_block = None
for line in existing_file.readlines():
line = line.rstrip('\n')
if line[:3] == "###":
# Reset comment block if we hit a header
latest_comment_block = None
continue
if line[:1] == "#":
# Save the comment we're inside
if not latest_comment_block:
latest_comment_block = line
else:
latest_comment_block = latest_comment_block + "\n" + line
continue
match = pattern_tr.match(line)
if match:
# this line is a translated line
outval = {}
outval["translation"] = match.group(2)
if latest_comment_block:
# if there was a comment, record that.
outval["comment"] = latest_comment_block
latest_comment_block = None
dOut[match.group(1)] = outval
return (dOut, text)
# Walks all lua files in the mod folder, collects translatable strings,
# and writes it to a template.txt file
# Returns a dictionary of localized strings to source file sets
# that can be used with the strings_to_text function.
def generate_template(folder, mod_name):
dOut = {}
for root, dirs, files in os.walk(folder):
for name in files:
if fnmatch.fnmatch(name, "*.lua"):
fname = os.path.join(root, name)
found = read_lua_file_strings(fname)
if params["verbose"]:
print(f"{fname}: {str(len(found))} translatable strings")
for s in found:
sources = dOut.get(s, set())
sources.add(f"### {os.path.basename(fname)} ###")
dOut[s] = sources
if len(dOut) == 0:
return None
templ_file = os.path.join(folder, "locale/template.txt")
write_template(templ_file, dOut, mod_name)
return dOut
# Updates an existing .tr file, copying the old one to a ".old" file
# if any changes have happened
# dNew is the data used to generate the template, it has all the
# currently-existing localized strings
def update_tr_file(dNew, mod_name, tr_file):
if params["verbose"]:
print(f"updating {tr_file}")
tr_import = import_tr_file(tr_file)
dOld = tr_import[0]
textOld = tr_import[1]
textNew = strings_to_text(dNew, dOld, mod_name)
if textOld and textOld != textNew:
print(f"{tr_file} has changed.")
if not params["no-old-file"]:
shutil.copyfile(tr_file, f"{tr_file}.old")
with open(tr_file, "w", encoding='utf-8') as new_tr_file:
new_tr_file.write(textNew)
# Updates translation files for the mod in the given folder
def update_mod(folder):
modname = get_modname(folder)
if modname is not None:
process_po_files(folder, modname)
print(f"Updating translations for {modname}")
data = generate_template(folder, modname)
if data == None:
print(f"No translatable strings found in {modname}")
else:
for tr_file in get_existing_tr_files(folder):
update_tr_file(data, modname, os.path.join(folder, "locale/", tr_file))
else:
print("Unable to find modname in folder " + folder)
# Determines if the folder being pointed to is a mod or a mod pack
# and then runs update_mod accordingly
def update_folder(folder):
is_modpack = os.path.exists(os.path.join(folder, "modpack.txt")) or os.path.exists(os.path.join(folder, "modpack.conf"))
if is_modpack:
subfolders = [f.path for f in os.scandir(folder) if f.is_dir()]
for subfolder in subfolders:
update_mod(subfolder + "/")
else:
update_mod(folder)
print("Done.")
def run_all_subfolders(folder):
for modfolder in [f.path for f in os.scandir(folder) if f.is_dir()]:
update_folder(modfolder + "/")
main()

30
init.lua Normal file
View File

@ -0,0 +1,30 @@
--aliases
--minetest.get_modpath("cannabis")
minetest.register_alias("canapa","cannabis:canapa")
--tools
cannabis = {} -- A global Object for the mod
cannabis.path = minetest.get_modpath("cannabis") -- The path of the mod
local path = cannabis.path
-- Get Boilerplate to translate
local S
if(minetest.get_translator) then
S = minetest.get_translator(minetest.get_current_modname())
else
S = function ( s ) return s end
end
cannabis.S = S -- Stores the boilerplate for global access
dofile(path.."/tools.lua")
dofile(path.."/canapa.lua")
dofile(path.."/node_ingot.lua")
dofile(path.."/craftitem.lua")
dofile(path.."/armor.lua")
dofile(path.."/joint.lua")
dofile(path.."/canapa_rossa.lua")
dofile(path.."/craftred.lua")
dofile(path.."/rope.lua")

185
joint.lua Normal file
View File

@ -0,0 +1,185 @@
-- get Boilerplate for Translations
local S = cannabis.S
minetest.register_craftitem("cannabis:joint_fumo_acceso", {
description = S("Joint fumo acceso"),
inventory_image = "joint_joint_fac.png",
stack_max = 1 ,
on_use = function(itemstack, user, pointed_thing)
itemstack:add_wear(1000)
return itemstack
end
})
minetest.register_craftitem("cannabis:joint_erba_spento", {
description = S("Joint erba spento"),
inventory_image = "joint_joint_csp.png",
})
minetest.register_craftitem("cannabis:joint_fumo_spento", {
description = S("Joint fumo spento"),
inventory_image = "joint_joint_fsp.png",
})
minetest.register_craftitem("cannabis:joint_cima", {
description = S("Joint cima triturata"),
inventory_image = "joint_cima_s.png",
})
minetest.register_craftitem("cannabis:joint_fumo", {
description = S("Joint fumo triturato"),
inventory_image = "joint_fumo_s.png",
})
minetest.register_craftitem("cannabis:joint_cartina", {
description = S("Joint cartina"),
inventory_image = "joint_cartina.png",
})
minetest.register_craftitem("cannabis:joint_cartina_cima", {
description = S("Joint cartina con erba"),
inventory_image = "joint_cartina_cima.png",
})
minetest.register_craftitem("cannabis:joint_cartina_fumo", {
description = S("Joint cartina con fumo"),
inventory_image = "joint_cartina_fumo.png",
})
minetest.register_craftitem("cannabis:joint_filter_box", {
description = S("Joint filter confezione"),
inventory_image = "joint_filter_p.png",
})
minetest.register_craftitem("cannabis:joint_filter", {
description = S("Joint filto"),
inventory_image = "joint_filter.png",
})
minetest.register_craftitem("cannabis:joint_accendino", {
description = S("Joint accendino"),
inventory_image = "joint_accendino.png",
})
--______________________________________________________________________________
--craft
--______________________________________________________________________________
minetest.register_craft({
output = "cannabis:joint_fumo 3 ",
recipe = {
{"","",""},
{"","cannabis:canapa_raisin",""},
{"","cannabis:joint_accendino",""},
}
})
minetest.register_craft({
output = "cannabis:joint_cima 3 ",
recipe = {
{"","cannabis:canapa_leaves",""},
{"","cannabis:canapa_flower",""},
{"","cannabis:canapa_leaves",""},
}
})
minetest.register_craft({
output = "cannabis:joint_accendino 5 ",
recipe = {
{"default:steel_ingot","fire:flint_and_steel","cannabis:canapa_plastic"},
{"cannabis:canapa_plastic","cannabis:canapa_fuel","cannabis:canapa_plastic"},
{"cannabis:canapa_plastic","cannabis:canapa_plastic","cannabis:canapa_plastic"},
}
})
minetest.register_craft({
output = "cannabis:joint_cartina 10 ",
recipe = {
{"","",""},
{"","",""},
{"cannabis:canapa_paper","cannabis:canapa_paper","cannabis:canapa_paper"},
}
})
minetest.register_craft({
output = "cannabis:joint_cartina_cima ",
recipe = {
{"","",""},
{"","cannabis:joint_cima",""},
{"","cannabis:joint_cartina",""},
}
})
minetest.register_craft({
output = "cannabis:joint_cartina_fumo ",
recipe = {
{"","",""},
{"","cannabis:joint_fumo","cannabis:canapa_leaves"},
{"","cannabis:joint_cartina",""},
}
})
minetest.register_craft({
output = "cannabis:joint_filter_box ",
recipe = {
{"","",""},
{"cannabis:canapa_paper","cannabis:canapa_paper",""},
{"cannabis:canapa_paper","cannabis:canapa_paper",""},
}
})
minetest.register_craft({
type = "shapeless",
output = "cannabis:joint_filter 10 ",
recipe = {"cannabis:joint_filter_box", "", "", ""}
})
minetest.register_craft({
output = "cannabis:joint_fumo_spento ",
recipe = {
{"","",""},
{"","",""},
{"cannabis:joint_filter","cannabis:joint_cartina_fumo",""},
}
})
minetest.register_craft({
output = "cannabis:joint_erba_spento ",
recipe = {
{"","",""},
{"","",""},
{"cannabis:joint_filter","cannabis:joint_cartina_cima",""},
}
})
minetest.register_craft({
output = "cannabis:joint_fumo_acceso ",
recipe = {
{"","",""},
{"","",""},
{"cannabis:joint_fumo_spento","cannabis:joint_accendino",""},
}
})
minetest.register_craft({
output = "cannabis:joint_erba_acceso ",
recipe = {
{"","",""},
{"","",""},
{"cannabis:joint_erba_spento","cannabis:joint_accendino",""},
}
})
-----------------------------------------
--local smokeCOLOR = {
-- green = { a=64, r=1, g=255, b=1 } ,
-- blue = { a=64, r=1, g=1, b=25 },
--}
-- Iterate through waters.
-- Color wll be the key (green or blue)
-- underwatercolor will be the value (one of the tables above)
--for color, smokecolor in pairs(smokeCOLOR) do
-- water
minetest.register_craftitem("cannabis:joint_erba_acceso", {
description = S("Joint erba acceso"),
inventory_image = "joint_joint_cac.png",
stack_max = 1 ,
-- post_effect_color = smokeCOLOR,
on_use = function(itemstack, user, pointed_thing)
itemstack:add_wear(1000)
return itemstack
end
})
--end

103
locale/cannabis.de.tr Normal file
View File

@ -0,0 +1,103 @@
# textdomain: cannabis
### armor.lua ###
Boots= Stiefel
Chestplate= Brustpanzer
Helmet= Helm
Hemp Shield= Hanfschild
Leggings= Hose
### canapa.lua ###
Hemp=Hanf
Hemp (climbing plant)=Hanf (kletternde Pflanze)
Hemp (seedling)=Hanf (Sämling)
Hemp (sproutling)=Hanf (Sprießend)
### canapa_rossa.lua ###
Hemp red=Roter Hanf
Hemp red (climbing plant)=Roter Hanf (kletternde Pflanze)
Hemp red (sproutling)=Roter Hanf (Sämling)
Hemp red(seedling)=Roter Hanf (Sprießend)
### craftitem.lua ###
Bread=Brot
Fiber=Faser
Flour=Mehl
Fuel=Kraftstoff
Hemp Flower=Hanfblume
Hemp Glue=Hanfkleber
Hemp Oil=Hanföl
Hemp Raisin=Hanfrosine
Paper=Papier
Plastic=Plastik
### craftitem.lua ###
### craftred.lua ###
Hemp Leaves=Hanfblätter
Hemp Seed=Hanfsamen
### craftred.lua ###
Hemp red Flower=Roter Hanf Blüte
### joint.lua ###
Joint accendino=
Joint cartina=
Joint cartina con erba=
Joint cartina con fumo=
Joint cima triturata=
Joint erba acceso=
Joint erba spento=
Joint filter confezione=
Joint filto=
Joint fumo acceso=
Joint fumo spento=
Joint fumo triturato=
### node_ingot.lua ###
Adminh Block=Adminh Block
Adminh Ingot=Adminh Barren
Fabric Block=Stoffblock
Fabric Ingot=Stoffbarren
Fiber Block=Faserblock
Fiber Ingot=Faserbarren
High Performance Block=Hochwertiger Block
High Performance Block Hemp=Hochwertiger Hanfblock
High Performance Ingot=Hochwertiger Barren
Leaves Block=Blätterblock
Leaves Ingot=Blätterbarren
Mixed HR Ingot=Gemischter HR Barren
Red Leaves Block=Roter Blätterblock
### tools.lua ###
Hemp Admin High Performance Sword=Hanf Admin hochwertiges Schwert
Hemp Adminh Pickaxe=Hanf Admin hochwertige Spitzhacke
Hemp Bronze Axe= Hanf Bronze Axt
Hemp Bronze Pickaxe=Hanf Bronze Spitzhacke
Hemp Bronze Shovel=Hanf Bronze Schaufel
Hemp Bronze Sword=Hanf Bronze Schaufel
Hemp Diamond Axe=Hanf Diamant Axt
Hemp Diamond Pickaxe=Hanf Diamant Spitzhacke
Hemp Diamond Shovel=Hanf Diamant Schaufel
Hemp Diamond Sword=Hanf Diamant Schwert
Hemp High Performance Axe=Hanf Hochwertige Axt
Hemp High Performance Sword=Hanf Hochwertiges Schwert
Hemp High Pickaxe=Hanf hochwertige Spitzhacke
Hemp High Shovel=Hanf hochwertige Schaufel
Hemp Mese Axe=Hanf Mese Axt
Hemp Mese Pickaxe=Hanf Mese Spitzhacke
Hemp Mese Shovel=Hanf Mese Schaufel
Hemp Mese Sword=Hanf Mese Schwert
Hemp Steel Axe=Hanf Eisen Axt
Hemp Steel Pickaxe=Hanf Eisen Spitzhacke
Hemp Steel Shovel=Hanf Eisen Schaufel
Hemp Steel Sword=Hanf Eisen Schwert

103
locale/cannabis.it.tr Normal file
View File

@ -0,0 +1,103 @@
# textdomain: cannabis
### armor.lua ###
Boots=
Chestplate=
Helmet=
Hemp Shield=
Leggings=
### canapa.lua ###
Hemp=Canapa
Hemp (climbing plant)=
Hemp (seedling)=
Hemp (sproutling)=
### canapa_rossa.lua ###
Hemp red=Canapa rosso
Hemp red (climbing plant)=
Hemp red (sproutling)=
Hemp red(seedling)=
### craftitem.lua ###
Bread=Pane
Fiber=
Flour=
Fuel=
Hemp Flower=
Hemp Glue=
Hemp Oil=
Hemp Raisin=
Paper=
Plastic=
### craftitem.lua ###
### craftred.lua ###
Hemp Leaves=
Hemp Seed=
### craftred.lua ###
Hemp red Flower=
### joint.lua ###
Joint accendino=Joint accendino
Joint cartina=Joint cartina
Joint cartina con erba=Joint cartina con erba
Joint cartina con fumo=Joint cartina con fumo
Joint cima triturata=Joint cima triturata
Joint erba acceso=Joint erba acceso
Joint erba spento=Joint erba spento
Joint filter confezione=Joint filter confezione
Joint filto=Joint filto
Joint fumo acceso=Joint fumo acceso
Joint fumo spento=Joint fumo spento
Joint fumo triturato=Joint fumo triturato
### node_ingot.lua ###
Adminh Block=
Adminh Ingot=
Fabric Block=
Fabric Ingot=
Fiber Block=
Fiber Ingot=
High Performance Block=
High Performance Block Hemp=
High Performance Ingot=
Leaves Block=
Leaves Ingot=
Mixed HR Ingot=
Red Leaves Block=
### tools.lua ###
Hemp Admin High Performance Sword=
Hemp Adminh Pickaxe=
Hemp Bronze Axe=
Hemp Bronze Pickaxe=
Hemp Bronze Shovel=
Hemp Bronze Sword=
Hemp Diamond Axe=
Hemp Diamond Pickaxe=
Hemp Diamond Shovel=
Hemp Diamond Sword=
Hemp High Performance Axe=
Hemp High Performance Sword=
Hemp High Pickaxe=
Hemp High Shovel=
Hemp Mese Axe=
Hemp Mese Pickaxe=
Hemp Mese Shovel=
Hemp Mese Sword=
Hemp Steel Axe=
Hemp Steel Pickaxe=
Hemp Steel Shovel=
Hemp Steel Sword=

103
locale/template.txt Normal file
View File

@ -0,0 +1,103 @@
# textdomain: cannabis
### armor.lua ###
Boots=
Chestplate=
Helmet=
Hemp Shield=
Leggings=
### canapa.lua ###
Hemp=
Hemp (climbing plant)=
Hemp (seedling)=
Hemp (sproutling)=
### canapa_rossa.lua ###
Hemp red=
Hemp red (climbing plant)=
Hemp red (sproutling)=
Hemp red(seedling)=
### craftitem.lua ###
Bread=
Fiber=
Flour=
Fuel=
Hemp Flower=
Hemp Glue=
Hemp Oil=
Hemp Raisin=
Paper=
Plastic=
### craftitem.lua ###
### craftred.lua ###
Hemp Leaves=
Hemp Seed=
### craftred.lua ###
Hemp red Flower=
### joint.lua ###
Joint accendino=
Joint cartina=
Joint cartina con erba=
Joint cartina con fumo=
Joint cima triturata=
Joint erba acceso=
Joint erba spento=
Joint filter confezione=
Joint filto=
Joint fumo acceso=
Joint fumo spento=
Joint fumo triturato=
### node_ingot.lua ###
Adminh Block=
Adminh Ingot=
Fabric Block=
Fabric Ingot=
Fiber Block=
Fiber Ingot=
High Performance Block=
High Performance Block Hemp=
High Performance Ingot=
Leaves Block=
Leaves Ingot=
Mixed HR Ingot=
Red Leaves Block=
### tools.lua ###
Hemp Admin High Performance Sword=
Hemp Adminh Pickaxe=
Hemp Bronze Axe=
Hemp Bronze Pickaxe=
Hemp Bronze Shovel=
Hemp Bronze Sword=
Hemp Diamond Axe=
Hemp Diamond Pickaxe=
Hemp Diamond Shovel=
Hemp Diamond Sword=
Hemp High Performance Axe=
Hemp High Performance Sword=
Hemp High Pickaxe=
Hemp High Shovel=
Hemp Mese Axe=
Hemp Mese Pickaxe=
Hemp Mese Shovel=
Hemp Mese Sword=
Hemp Steel Axe=
Hemp Steel Pickaxe=
Hemp Steel Shovel=
Hemp Steel Sword=

3
mod.conf Normal file
View File

@ -0,0 +1,3 @@
name = cannabis
depends = default, fire
optional_default = 3d_armor, maptools

193
node_ingot.lua Normal file
View File

@ -0,0 +1,193 @@
-- get Boilerplate for Translations
local S = cannabis.S
minetest.register_craftitem("cannabis:mixed_hr_ingot", {
description = S("Mixed HR Ingot"),
inventory_image = "cannabis_mixed_hr_ingot.png",
})
minetest.register_craftitem(":cannabis:fibra_ingot", {
description = S("Fiber Ingot"),
inventory_image = "cannabis_fibra_ingot.png",
})
minetest.register_craftitem(":cannabis:foglie_ingot", {
description = S("Leaves Ingot"),
inventory_image = "cannabis_foglie_ingot.png",
})
minetest.register_craftitem("cannabis:high_performance_ingot", {
description = S("High Performance Ingot"),
inventory_image = "cannabis_high_performance_ingot.png",
})
minetest.register_craftitem(":cannabis:tessuto_ingot", {
description = S("Fabric Ingot"),
inventory_image = "cannabis_tessuto_ingot.png",
})
minetest.register_craftitem(":cannabis:adminh_ingot", {
description = S("Adminh Ingot"),
inventory_image = "cannabis_adminh_ingot.png",
})
local function for_each_registered_item(action)
local already_reg = {}
for k, _ in pairs(minetest.registered_items) do
table.insert(already_reg, k)
end
local really_register_craftitem = minetest.register_craftitem
minetest.register_craftitem = function(name, def)
really_register_craftitem(name, def)
action(string.gsub(name, "^:", ""))
end
local really_register_tool = minetest.register_tool
minetest.register_tool = function(name, def)
really_register_tool(name, def)
action(string.gsub(name, "^:", ""))
end
local really_register_node = minetest.register_node
minetest.register_node = function(name, def)
really_register_node(name, def)
action(string.gsub(name, "^:", ""))
end
for _, name in ipairs(already_reg) do
action(name)
end
end
local function register_block(block, ingot)
minetest.register_craft({
output = block,
recipe = {
{ingot, ingot, ingot},
{ingot, ingot, ingot},
{ingot, ingot, ingot},
}
})
minetest.register_craft({
output = ingot.." 9",
recipe = {
{block}
}
})
end
register_block("cannabis:cannabis_fibra_block", "cannabis:fibra_ingot")
register_block("cannabis:cannabis_high_performance_block", "cannabis:high_performance_ingot")
register_block("cannabis:cannabis_tessuto_block", "cannabis:tessuto_ingot")
--register_block("cannabis:cannabis_foglie_block", "cannabis:foglie_ingot")
register_block("cannabis:cannabis_adminh_block", "cannabis:adminh_ingot")
minetest.register_node("cannabis:hp_block_canapa",
{
description = S("High Performance Block Hemp"),
tiles = {"hp_block_canapa.png"},
is_ground_content = false,
groups = {choppy = 30, oddly_breakable_by_hand = 1, flammable = 3, wood = 1},
sounds = "cannabis:cannabis_canapa_s2",
})
minetest.register_node("cannabis:cannabis_foglie_block", {
description = S("Leaves Block"),
tiles = { "cannabis_foglie_block.png" },
is_ground_content = false,
groups = {cracky=1, level=2},
sounds = "cannabis:cannabis_canapa_s3"
})
minetest.register_node("cannabis:cannabis_foglie_red_block", {
description = S("Red Leaves Block"),
tiles = { "cannabis_foglie_red_block.png" },
is_ground_content = false,
groups = {cracky=1, level=2},
sounds = "cannabis:cannabis_canapa_s3"
})
minetest.register_node("cannabis:cannabis_tessuto_block", {
description = S("Fabric Block"),
tiles = { "cannabis_tessuto_block.png" },
is_ground_content = false,
groups = {cracky=1, level=2},
sounds = "cannabis_canapa_s3"
})
minetest.register_node("cannabis:cannabis_high_performance_block", {
description = S("High Performance Block"),
tiles = { "cannabis_high_performance_block.png" },
is_ground_content = false,
groups = {cracky=1, level=2},
sounds = "cannabis_canapa_s3"
})
minetest.register_node("cannabis:cannabis_fibra_block", {
description = S("Fiber Block"),
tiles = { "cannabis_fibra_block.png" },
is_ground_content = false,
groups = {cracky=1, level=2},
sounds = "cannabis_canapa_s3"
})
minetest.register_node("cannabis:cannabis_adminh_block", {
description = S("Adminh Block"),
tiles = { "cannabis_adminh_block.png" },
is_ground_content = false,
groups = {unbreackable =1},
sounds = "cannabis:cannabis_canapa_s3"
})
minetest.register_craft({
type = 'cooking',
recipe = "cannabis:canapa_fiber",
output = "cannabis:fibra_ingot",
})
minetest.register_craft({
type = 'cooking',
recipe = "cannabis:canapa_leaves",
output = "cannabis:foglie_ingot",
})
minetest.register_craft({
type = 'cooking',
recipe = "cannabis:canapa_paper",
output = "cannabis:tessuto_ingot",
})
minetest.register_craft({
type = 'cooking',
recipe = "cannabis:canapa_plastic",
cooktime = 2,
output = "cannabis:high_performance_ingot",
})
minetest.register_craft({
type = 'cooking',
recipe = "cannabis:canapa_oil",
cooktime = 1000,
output = "cannabis:adminh_ingot",
})
minetest.register_craft({
type = 'cooking',
recipe = "cannabis:canapa_red_oil",
cooktime = 1000,
output = "cannabis:adminh_ingot",
})
local function for_each_registered_item(action)
local already_reg = {}
for k, _ in pairs(minetest.registered_items) do
table.insert(already_reg, k)
end
local really_register_craftitem = minetest.register_craftitem
minetest.register_craftitem = function(name, def)
really_register_craftitem(name, def)
action(string.gsub(name, "^:", ""))
end
local really_register_tool = minetest.register_tool
minetest.register_tool = function(name, def)
really_register_tool(name, def)
action(string.gsub(name, "^:", ""))
end
local really_register_node = minetest.register_node
minetest.register_node = function(name, def)
really_register_node(name, def)
action(string.gsub(name, "^:", ""))
end
for _, name in ipairs(already_reg) do
action(name)
end
end

10
rope.lua Normal file
View File

@ -0,0 +1,10 @@
if minetest.get_modpath("ropes") then
minetest.register_craft({
output = 'ropes:ropesegment',
recipe = {
{'cannabis:canapa_fiber'},
{'cannabis:canapa_fiber'},
{'cannabis:canapa_fiber'},
}
})
end

BIN
schematics/canapa.mts Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

4
textures/.directory Normal file
View File

@ -0,0 +1,4 @@
[Dolphin]
PreviewsShown=true
Timestamp=2016,10,30,14,48,47
Version=3

BIN
textures/1hemp_seedling.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
textures/adminh.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 188 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 291 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 232 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 269 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 412 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 740 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 343 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 402 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 373 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 631 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Some files were not shown because too many files have changed in this diff Show More