Add _misc and u_skins
- Backup de u_skins pas update (ne pas l’update pour l’instant) - ajout d’un _misc à jour
19
mods/_misc/aliases.lua
Normal file
@ -0,0 +1,19 @@
|
||||
-- Remove stone_with_tin from default carbone subgame => virer doublon minerais brutes
|
||||
minetest.register_alias("default:stone_with_tin", "default:stone")
|
||||
minetest.register_alias("default:stone_with_silver", "default:stone")
|
||||
|
||||
-- Remove lump from default carbone subgame => virer doublon minerais
|
||||
minetest.register_alias("default:tin_lump", "default:stone")
|
||||
minetest.register_alias("default:silver_lump", "default:stone")
|
||||
|
||||
-- Remove ingot from default carbone subgame => virer doublon lingots
|
||||
minetest.register_alias("default:tin_ingot", "default:stone")
|
||||
minetest.register_alias("default:silver_ingot", "default:stone")
|
||||
|
||||
-- Remove torch from torches => remise des torches par défaut
|
||||
minetest.register_alias("torches:floor", "default:torch")
|
||||
minetest.register_alias("torches:wand", "default:torch")
|
||||
|
||||
-- Remove copper_rail from moreores => utilisation des rail_copper du mod carts
|
||||
minetest.register_alias("moreores:copper_rail", "carts:rail_copper")
|
||||
|
136
mods/_misc/chatcommands.lua
Normal file
@ -0,0 +1,136 @@
|
||||
--
|
||||
-- Edited chat commands from core
|
||||
--
|
||||
|
||||
-- /me
|
||||
-- /help
|
||||
-- /privs
|
||||
-- /grant
|
||||
-- /revoke
|
||||
-- /setpassword
|
||||
-- /clearpassword
|
||||
-- /auth_reload
|
||||
-- /teleport
|
||||
-- /set
|
||||
-- /mods
|
||||
-- /give
|
||||
-- /giveme
|
||||
-- /spawnentity
|
||||
-- /pulverize
|
||||
-- /rollback_check
|
||||
-- /rollback
|
||||
-- /status
|
||||
|
||||
minetest.register_chatcommand("time", {
|
||||
params = "<0...24000>",
|
||||
description = "set time of day",
|
||||
privs = {settime=true},
|
||||
func = function(name, param)
|
||||
if param == "" then
|
||||
return false, "Missing time."
|
||||
end
|
||||
local newtime = tonumber(param)
|
||||
if newtime == nil then
|
||||
return false, "Invalid time."
|
||||
end
|
||||
minetest.set_timeofday((newtime % 24000) / 24000)
|
||||
minetest.log("action", name .. " sets time " .. newtime)
|
||||
minetest.chat_send_all(name .. " changed the time of day.")
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_chatcommand("shutdown", {
|
||||
description = "shutdown server",
|
||||
privs = {server=true},
|
||||
func = function(name, param)
|
||||
minetest.log("action", name .. " shuts down server")
|
||||
minetest.request_shutdown()
|
||||
minetest.chat_send_all(name .. " just shut down the server.")
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_chatcommand("ban", {
|
||||
params = "<name>",
|
||||
description = "Ban IP of player",
|
||||
privs = {ban=true},
|
||||
func = function(name, param)
|
||||
if param == "" then
|
||||
return true, "Ban list: " .. minetest.get_ban_list()
|
||||
end
|
||||
if not minetest.get_player_by_name(param) then
|
||||
return false, "This player is not online at the moment. Use a /future_ban instead."
|
||||
end
|
||||
if not minetest.ban_player(param) then
|
||||
return false, "Failed to ban player."
|
||||
end
|
||||
local desc = minetest.get_ban_description(param)
|
||||
minetest.log("action", name .. " bans " .. desc .. ".")
|
||||
return true, "Banned " .. desc .. "."
|
||||
end,
|
||||
})
|
||||
|
||||
-- /unban
|
||||
-- /kick
|
||||
-- /clearobjects
|
||||
-- /msg
|
||||
|
||||
--
|
||||
-- Other chat commands
|
||||
--
|
||||
|
||||
-- Spawn command
|
||||
--minetest.register_chatcommand("spawn", {
|
||||
-- params = "",
|
||||
-- description = "Teleport to the spawn location.",
|
||||
-- privs = {shout=true},
|
||||
-- func = function(name, param)
|
||||
-- local player = minetest.env:get_player_by_name(name)
|
||||
-- minetest.chat_send_player(name, "Teleported to spawn!")
|
||||
-- player:setpos({x=0.0, y=5.0, z=0.0})
|
||||
-- return true
|
||||
-- end,
|
||||
--})
|
||||
--[[
|
||||
-- Sethome command
|
||||
minetest.register_chatcommand("sethome", {
|
||||
params = "",
|
||||
description = "Set your home location.",
|
||||
privs = {shout=true},
|
||||
func = function(name, param)
|
||||
player = minetest.env:get_player_by_name(name)
|
||||
test = player:getpos()
|
||||
local file = io.open(minetest.get_worldpath().."/home/"..player:get_player_name().."_home", "w")
|
||||
if not file then
|
||||
minetest.chat_send_player(name, "Il y a eut une erreur, s'il vous plait contactez le detenteur du serveur.")
|
||||
return
|
||||
end
|
||||
file:write(minetest.pos_to_string(test))
|
||||
file:close()
|
||||
minetest.chat_send_player(name, "Votre emplacement 'home' est definit ! Tapez /home pour vous y teleporter.")
|
||||
end
|
||||
})
|
||||
|
||||
-- Home command
|
||||
minetest.register_chatcommand("home", {
|
||||
params = "",
|
||||
description = "Vous teleporte a l'emplacement de votre 'home'.",
|
||||
privs = {shout=true},
|
||||
func = function(name, param)
|
||||
player = minetest.env:get_player_by_name(name)
|
||||
local file = io.open(minetest.get_worldpath().."/home/"..player:get_player_name().."_home", "r")
|
||||
if not file then
|
||||
minetest.chat_send_player(name, "Vous devez definir votre emplacement 'home' ! Pour ce faire, utilisez la commande /sethome.")
|
||||
return
|
||||
end
|
||||
local line = file:read("*line")
|
||||
file:close()
|
||||
local pos = minetest.string_to_pos(string.sub(line, 1, string.find(line, ")")))
|
||||
if not pos or type(pos) ~= "table" then
|
||||
minetest.chat_send_player(name, "Il y a eut une erreur, s'il vous plait contactez le detenteur du serveur.")
|
||||
return
|
||||
end
|
||||
minetest.env:get_player_by_name(name):setpos(pos)
|
||||
minetest.chat_send_player(name, "Vous voilà chez vous.")
|
||||
end
|
||||
})
|
||||
--]]
|
10
mods/_misc/craft_obsidian.lua
Normal file
@ -0,0 +1,10 @@
|
||||
-- Craft obsidian
|
||||
minetest.register_craft({
|
||||
output = "default:obsidian",
|
||||
recipe = {
|
||||
{"bucket:bucket_lava"},
|
||||
},
|
||||
replacements = {
|
||||
{"bucket:bucket_lava", "bucket:bucket_empty"}
|
||||
},
|
||||
})
|
10
mods/_misc/give_initial_stuff.lua
Normal file
@ -0,0 +1,10 @@
|
||||
minetest.register_on_newplayer(function(player)
|
||||
print("Un nouveau joueur vient de nous rejoindre !")
|
||||
if minetest.setting_getbool("give_initial_stuff") then
|
||||
print("Equipement de depart transmis")
|
||||
player:get_inventory():add_item("main", "default:axe_wood")
|
||||
player:get_inventory():add_item("main", "default:torch 10")
|
||||
player:get_inventory():add_item("main", "default:sapling 2")
|
||||
player:get_inventory():add_item("main", "default:apple 5")
|
||||
end
|
||||
end)
|
28
mods/_misc/init.lua
Normal file
@ -0,0 +1,28 @@
|
||||
---------------------
|
||||
-- Server Misc Mod --
|
||||
---------------------
|
||||
|
||||
-- Give initial stuff
|
||||
dofile(minetest.get_modpath("_misc").."/give_initial_stuff.lua")
|
||||
|
||||
-- Chat Commands
|
||||
dofile(minetest.get_modpath("_misc").."/chatcommands.lua")
|
||||
|
||||
-- Rules
|
||||
dofile(minetest.get_modpath("_misc").."/rules.lua")
|
||||
-- No Interact Messages
|
||||
dofile(minetest.get_modpath("_misc").."/nointeract_messages.lua")
|
||||
|
||||
-- irc
|
||||
--dofile(minetest.get_modpath("_misc").."/irc.lua")
|
||||
-- No Shout Messages
|
||||
--dofile(minetest.get_modpath("_misc").."/noshout_messages.lua")
|
||||
|
||||
-- Aliases
|
||||
dofile(minetest.get_modpath("_misc").."/aliases.lua")
|
||||
|
||||
-- Craft Obsidian
|
||||
dofile(minetest.get_modpath("_misc").."/craft_obsidian.lua")
|
||||
|
||||
-- UnCraft Woll
|
||||
dofile(minetest.get_modpath("_misc").."/uncraft_woll.lua")
|
81
mods/_misc/irc.lua
Normal file
@ -0,0 +1,81 @@
|
||||
# Based on https://github.com/ChaosWormz/mt_terms_of_use
|
||||
|
||||
local IRC = [[
|
||||
-~= Règles du salon de chat IRC #minetestforfun@irc.inchra.net =~-
|
||||
(Ces règles ont été établies le 1er Novembre 2014 par les opérateurs du canal Mg et MinetestForFun)
|
||||
|
||||
1) Il ne sera toléré aucune transgressions aux règles du réseau InchraNet, sous peine de la sanction prévue par les administrateurs du réseau.
|
||||
2) Il ne sera toléré aucune forme de violation des lois en vigueur dans les pays de résidence des participants, ainsi que ceux des hébergeurs des serveurs.
|
||||
3) Il ne sera toléré aucune sorte d'insulte, de provocation gratuite, d'incitation à la haine, au meurtre, au suicide, ou toute autre forme d'atteinte au respect mutuel des utilisateurs de l'IRC.
|
||||
4) Il ne sera toléré aucune forme de flood ainsi que de spam. Rappelez-vous qu'il est préférable d'utiliser un site de téléversion de texte (aussi nommé "pastebin"), tel que "pastebin.ubuntu.com" à chaque fois que vous désirez transmettre du code ou un long texte.
|
||||
Le flood est l'action de saturer le chat de messages répétitifs, inutiles, y compris les join/part, grossiers, sans aucun rapport avec la conversation et au détriment des participants
|
||||
Le spam est l'action de faire de la publicité pour quelque chose que ce soit sans l'accord d'un ayant droit ou d'un opérateur de canal.
|
||||
5) Il ne sera toléré aucun pseudonyme à caractère sexuel, haineux, contenant des termes ou propos indésirables sur le salon.
|
||||
6) Il ne sera toléré aucune forme d'harcèlement moral ou à caractère sexuel, y compris par messages privés.
|
||||
7) Il ne sera toléré aucun type de discrimination contre quelque participant que ce soit, ni aucune forme d'insulte envers les opérateurs, semi-opérateurs et administrateurs d'InchraNet.
|
||||
|
||||
Voici les sanctions prévues pour les infractions aux règles ci-dessus.
|
||||
+-----------------------+-----------------------------------+---------------------------------------+
|
||||
| Niveau d'infraction : | Infraction(s) commise(s) : | Sanctions appliquées : |
|
||||
| | Manque de respect enver autrui | Devoice une demi-journée |
|
||||
| Niveau DIRT | Provocation envers autrui | Devoie une journée |
|
||||
| | Insultes envers autrui | Kick + devoice une journée |
|
||||
+-----------------------+-----------------------------------+---------------------------------------+
|
||||
| | Récidive d'infraction niveau dirt | Kick + Ban 1/2 journée |
|
||||
| Niveau STONE | Flood, Discrimination | Kick + devoice deux heures |
|
||||
| | Spam | Kick + devoice 1 jour + ban 1/2 journée |
|
||||
+-----------------------+-----------------------------------+---------------------------------------+
|
||||
| | Récidive d'infraction niveau stone | Kick + Ban 4 jours + devoice 5 jours |
|
||||
| Niveau MESE | Contenu à caractère sexuel | Kick + Ban 1 semaine + devoice 5 jours |
|
||||
| | Irrespect envers l'équipe | Kick + Ban 10 jours + devoice 8 jours |
|
||||
+-----------------------+-----------------------------------+---------------------------------------+
|
||||
| | Récidive d'infraction niveau mese | Kick + Ban 1 mois + devoice 2 semaines |
|
||||
| Niveau OBSIDIAN | Violation des lois en vigueur | Kick + Ban définitif + Gline |
|
||||
| | Violation des règles d'InchraNet | Kick + Ban définitif + Gline |
|
||||
+-----------------------+-----------------------------------+---------------------------------------+
|
||||
|
||||
Autres règles de bienséances :
|
||||
- Ne demandez pas à faire partie des opérateurs/semi-opérateurs du canal.
|
||||
- Attention, l'abus de query et msg est dangereux pour la santé.
|
||||
- Inutile de faire étalage de votre vie privée si c'est hors contexte ou si personne n'est intéressé par celle ci.
|
||||
- Nous ne sanctionnons bien évidemment pas le hors-sujet, toutefois, s'il est évitable ça ne peut qu’être toujours un plus !
|
||||
- Le respect d'autrui est important à nos yeux.
|
||||
- En cas de problème, n'hésitez pas à contacter le staff.
|
||||
]]
|
||||
|
||||
local function make_formspec()
|
||||
local size = { "size[10,8]" }
|
||||
table.insert(size, "textarea[0.5,0.5;9.5,8;TOS;Voici les regles, cliquez sur Accepter si vous etes d'accord avec;"..minetest.formspec_escape(IRC).."]")
|
||||
table.insert(size, "button_exit[6,7.4;1.5,0.5;accept;J'accepte]")
|
||||
table.insert(size, "button[7.5,7.4;1.5,0.5;decline;Je refuse]")
|
||||
return table.concat(size)
|
||||
end
|
||||
|
||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
if formname ~= "irc" then return end
|
||||
local name = player:get_player_name()
|
||||
if fields.accept then
|
||||
minetest.chat_send_player(name, "Merci d'avoir accepte les regles, vous etes maintenant capable de parler.")
|
||||
minetest.chat_send_player(name, "Pour plus d'informations tapez /news")
|
||||
local privs = minetest.get_player_privs(name)
|
||||
privs.shout = true
|
||||
minetest.set_player_privs(name, privs)
|
||||
end
|
||||
return
|
||||
elseif fields.decline then
|
||||
minetest.kick_player(name, "Aurevoir ! Vous devez accepter les règles de l'irc pour jouer sur le serveur (revennez si vous changez d'avis).")
|
||||
return
|
||||
end
|
||||
end)
|
||||
|
||||
minetest.register_chatcommand("irc",{
|
||||
params = "",
|
||||
description = "Montre les regles de l'irc",
|
||||
privs = {spawn=true},
|
||||
func = function (name,params)
|
||||
local player = minetest.get_player_by_name(name)
|
||||
minetest.after(1, function()
|
||||
minetest.show_formspec(name, "irc", make_formspec())
|
||||
end)
|
||||
end
|
||||
})
|
12
mods/_misc/nointeract_messages.lua
Normal file
@ -0,0 +1,12 @@
|
||||
local TIMER = 0
|
||||
minetest.register_globalstep(function(dtime)
|
||||
TIMER = TIMER + dtime
|
||||
if TIMER < 20 then return end
|
||||
TIMER = 0
|
||||
for _,player in ipairs(minetest.get_connected_players()) do
|
||||
local name = player:get_player_name()
|
||||
if not minetest.check_player_privs(name, {interact=true}) then
|
||||
minetest.chat_send_player(name, "Hey " .. name .. " ! Pour pouvoir construire et intéragir sur ce serveur, tu dois lire les règles du serveur et les accepter. Tape /rules.")
|
||||
end
|
||||
end
|
||||
end)
|
12
mods/_misc/noshout_messages.lua
Normal file
@ -0,0 +1,12 @@
|
||||
local TIMER = 0
|
||||
minetest.register_globalstep(function(dtime)
|
||||
TIMER = TIMER + dtime
|
||||
if TIMER < 25 then return end
|
||||
TIMER = 0
|
||||
for _,player in ipairs(minetest.get_connected_players()) do
|
||||
local name = player:get_player_name()
|
||||
if not minetest.check_player_privs(name, {interact=true}) then
|
||||
minetest.chat_send_player(name, "Hey " .. name .. " ! Pour pouvoir communiquer avec les autres joueurs sur ce serveur, tu dois lire les règles de l'irc et les accepter. Tape /irc.")
|
||||
end
|
||||
end
|
||||
end)
|
55
mods/_misc/rules.lua
Normal file
@ -0,0 +1,55 @@
|
||||
# Based on https://github.com/ChaosWormz/mt_terms_of_use
|
||||
|
||||
local RULES = [[
|
||||
Voici les règles :
|
||||
|
||||
1) Aucune atteinte intentionnelle au bon fonctionnement du serveur ne sera admise. (lag, crash, exploit de bug, etc...)
|
||||
2) La triche (hack, client modifié, etc...) n'est pas tolérée sur le serveur. Soyez fair-play et apprenez à jouer selon les règles.
|
||||
3) Sur le serveur, le PVP est autorisé, le vole/grief est aussi autorisé. (pensez au mod areas pour protéger vos biens)
|
||||
4) Merci de ne pas spammer ou flooder.
|
||||
5) Chaque joueur à l'entière responsabilité de son compte, nous ne sommes en aucun cas responsable d'une utilisation frauduleuse de votre compte dans le jeu.
|
||||
6) Si possible, évitez les constructions de tours en 1x1 et, poser des blocs gâchant le décor n'importe ou. Ceci pour que le serveur reste le plus beau, sauvage et naturel possibe.
|
||||
7) Ne demandez pas à être membre de l'equipe du serveur.
|
||||
8) Aucune forme d'insulte ou de racisme n'est admise.
|
||||
|
||||
Cliquez sur le bouton "Accepter" pour pouvoir construire et intéragir sur le serveur.
|
||||
]]
|
||||
|
||||
local function make_formspec()
|
||||
local size = { "size[10,8]" }
|
||||
table.insert(size, "textarea[0.5,0.5;9.5,8;TOS;Voici les regles, cliquez sur Accepter si vous etes d'accord avec;"..RULES.."]")
|
||||
table.insert(size, "button_exit[6,7.4;1.5,0.5;accept;J'accepte]")
|
||||
table.insert(size, "button[7.5,7.4;1.5,0.5;decline;Je refuse]")
|
||||
return table.concat(size)
|
||||
end
|
||||
|
||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
if formname ~= "rules" then return end
|
||||
local name = player:get_player_name()
|
||||
if fields.accept then
|
||||
if minetest.check_player_privs(name, {shout=true}) then
|
||||
minetest.chat_send_player(name, "Merci d'avoir accepte les regles, vous etes maintenant capable de construire et d'interagir avec le serveur.")
|
||||
minetest.chat_send_player(name, "Amusez vous bien a survivre et construire !")
|
||||
minetest.chat_send_player(name, "Pour plus d'informations tapez /news")
|
||||
local privs = minetest.get_player_privs(name)
|
||||
privs.interact = true
|
||||
minetest.set_player_privs(name, privs)
|
||||
end
|
||||
return
|
||||
elseif fields.decline then
|
||||
minetest.kick_player(name, "Aurevoir ! Vous devez accepter les règles pour jouer sur le serveur (revennez si vous changez d'avis).")
|
||||
return
|
||||
end
|
||||
end)
|
||||
|
||||
minetest.register_chatcommand("rules",{
|
||||
params = "",
|
||||
description = "Montre les regles du serveur",
|
||||
privs = {shout=true},
|
||||
func = function (name,params)
|
||||
local player = minetest.get_player_by_name(name)
|
||||
minetest.after(1, function()
|
||||
minetest.show_formspec(name, "rules", make_formspec())
|
||||
end)
|
||||
end
|
||||
})
|
119
mods/_misc/uncraft_woll.lua
Normal file
@ -0,0 +1,119 @@
|
||||
-- récupéré les "cotton" des "wool" faite (récupère 3 aulieu de 4 et perte du colorant)
|
||||
minetest.register_craft({
|
||||
output = "farming:cotton 3",
|
||||
recipe = {
|
||||
{"wool:black"},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "farming:cotton 3",
|
||||
recipe = {
|
||||
{"wool:white"},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "farming:cotton 3",
|
||||
recipe = {
|
||||
{"wool:grey"},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "farming:cotton 3",
|
||||
recipe = {
|
||||
{"wool:dark_grey"},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "farming:cotton 3",
|
||||
recipe = {
|
||||
{"wool:blue"},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "farming:cotton 3",
|
||||
recipe = {
|
||||
{"wool:brown"},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "farming:cotton 3",
|
||||
recipe = {
|
||||
{"wool:cyan"},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "farming:cotton 3",
|
||||
recipe = {
|
||||
{"wool:green"},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "farming:cotton 3",
|
||||
recipe = {
|
||||
{"wool:dark_green"},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "farming:cotton 3",
|
||||
recipe = {
|
||||
{"wool:dark_grey"},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "farming:cotton 3",
|
||||
recipe = {
|
||||
{"wool:dark_grey"},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "farming:cotton 3",
|
||||
recipe = {
|
||||
{"wool:magenta"},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "farming:cotton 3",
|
||||
recipe = {
|
||||
{"wool:orange"},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "farming:cotton 3",
|
||||
recipe = {
|
||||
{"wool:pink"},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "farming:cotton 3",
|
||||
recipe = {
|
||||
{"wool:red"},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "farming:cotton 3",
|
||||
recipe = {
|
||||
{"wool:violet"},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "farming:cotton 3",
|
||||
recipe = {
|
||||
{"wool:yellow"},
|
||||
},
|
||||
})
|
BIN
mods/u_skins/MT_skins_updater.exe
Executable file
BIN
mods/u_skins/Newtonsoft.Json.dll
Executable file
28
mods/u_skins/README
Executable file
@ -0,0 +1,28 @@
|
||||
minetest-u_skins
|
||||
================
|
||||
An skin extention for the Minetest mod unified_inventory by Dean Montgomery
|
||||
It downloads the skins from the Minetest skin database. (http://minetest.fensta.bplaced.net)
|
||||
|
||||
Requires latest unified_inventory from:
|
||||
https://github.com/minetest-technic/unified_inventory
|
||||
|
||||
To download the latest skins you need to run:
|
||||
"./update_from_db.py" OR
|
||||
the win32.NET client
|
||||
|
||||
Licenses:
|
||||
--------
|
||||
|
||||
cornernote:
|
||||
Lua source code (GPLv3)
|
||||
|
||||
Fritigern:
|
||||
update_skins_db.sh (CC-BY-NC-SA 4.0)
|
||||
|
||||
Krock:
|
||||
Lua source code (GPLv3)
|
||||
MT_skins_updater.exe (WTFPL)
|
||||
|
||||
Credits:
|
||||
--------
|
||||
RealyBadAngel unified_inventory and Zeg9 skinsdb
|
48
mods/u_skins/generate_previews.sh
Executable file
@ -0,0 +1,48 @@
|
||||
#!/bin/sh
|
||||
# This script is used to generate the previews needed by the mod
|
||||
# It requires blender with the latest python API (2.6x is tested)
|
||||
# A script that works with older blenders and, maybe, without python, is available in older commits.
|
||||
# This script can also use pngcrush and imagemagick to reduce output size,
|
||||
# please enable them if you want to push to the git repository of the mod.
|
||||
# Pngcrush output will be written to .previews/pngcrush_output
|
||||
# Warning: any file in .previews/ and u_skins/textures might be deleted without asking.
|
||||
PNGCRUSH=true
|
||||
IMAGEMAGICK=true
|
||||
cd .previews
|
||||
rm ../u_skins/textures/*_preview*.png # Remove all previous previews
|
||||
blender -b skin_previews.blend --python-text "Generate previews" > /dev/null
|
||||
if $IMAGEMAGICK
|
||||
then echo "Stripping metadata from generated files..."
|
||||
else echo "Moving files..."
|
||||
fi
|
||||
rm -rf output # remove my output
|
||||
mkdir -p output
|
||||
for i in blender_out/character_*_00.png;
|
||||
do
|
||||
out_name=$(basename $i | sed -e 's/_00.png//g')
|
||||
out_file=output/"$out_name"_preview.png
|
||||
if $IMAGEMAGICK
|
||||
then
|
||||
convert -strip $i $out_file
|
||||
else
|
||||
mv $i $out_file
|
||||
fi
|
||||
done
|
||||
for i in blender_out/character_*_01.png;
|
||||
do
|
||||
out_name=$(basename $i | sed -e 's/_01.png//g')
|
||||
out_file=output/"$out_name"_preview_back.png
|
||||
if $IMAGEMAGICK
|
||||
then
|
||||
convert -strip $i $out_file
|
||||
else
|
||||
mv $i $out_file
|
||||
fi
|
||||
done
|
||||
if $PNGCRUSH
|
||||
then
|
||||
echo "Running pngcrush..."
|
||||
pngcrush -d ../u_skins/textures/ output/*_preview*.png 2> pngcrush_output
|
||||
else mv output/*_preview*.png ../u_skins/textures/
|
||||
fi
|
||||
echo "Done !"
|
0
mods/u_skins/modpack.txt
Executable file
59
mods/u_skins/set_meta.sh
Executable file
@ -0,0 +1,59 @@
|
||||
#!/bin/bash
|
||||
SPRITES=$(find -regextype sed -regex '.*/player_[0-9]\{1,\}.png' | sort -V)
|
||||
MODELS=$(find -regextype sed -regex '.*/character_[0-9]\{1,\}.png' | sort -V)
|
||||
function ask_for_meta {
|
||||
convert $2 -scale 100x200 /tmp/skins_set_meta
|
||||
SNAME=$(basename $1)
|
||||
SNAME=${SNAME%.*}
|
||||
METAFILE=u_skins/meta/$SNAME.txt
|
||||
FORCE=$3
|
||||
if $FORCE || ! [ -f $METAFILE ]
|
||||
then
|
||||
echo $METAFILE
|
||||
YADOUT=$(yad --form --image=/tmp/skins_set_meta --field $SNAME:LBL --field=Name --field=Author --field=Description --field=Comment)
|
||||
if [ -z "$YADOUT" ]; then exit; fi # canceled
|
||||
OIFS="$IFS"
|
||||
IFS='|'
|
||||
read -a VALUES <<< "$YADOUT"
|
||||
IFS="$OIFS"
|
||||
NAME=${VALUES[1]}
|
||||
AUTHOR=${VALUES[2]}
|
||||
DESCRIPTION=${VALUES[3]}
|
||||
COMMENT=${VALUES[4]}
|
||||
if [ -n "$NAME" ] && [ -n "$AUTHOR" ]
|
||||
then
|
||||
echo -n > $METAFILE # clear it
|
||||
echo 'name = "'$NAME'",' >> $METAFILE
|
||||
echo 'author = "'$AUTHOR'",' >> $METAFILE
|
||||
# only write description and comment if they are specified
|
||||
if [ -n "$DESCRIPTION" ]
|
||||
then
|
||||
echo 'description = "'$DESCRIPTION'",' >> $METAFILE
|
||||
fi
|
||||
if [ -n "$COMMENT" ]
|
||||
then
|
||||
echo 'comment = "'$COMMENT'",' >> $METAFILE
|
||||
fi
|
||||
echo "Saved !"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
if [ -z $1 ]
|
||||
then
|
||||
for i in $SPRITES
|
||||
do
|
||||
ask_for_meta $i $i false
|
||||
done
|
||||
for i in $MODELS
|
||||
do
|
||||
ask_for_meta $i ${i%.*}_preview.png false
|
||||
done
|
||||
else
|
||||
if [ -f ${1%.*}_preview.png ]
|
||||
then
|
||||
ask_for_meta $1 ${1%.*}_preview.png true
|
||||
else
|
||||
ask_for_meta $1 $1 true
|
||||
fi
|
||||
fi
|
||||
rm /tmp/skins_set_meta
|
BIN
mods/u_skins/skins_enlevés/character_160.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
3
mods/u_skins/skins_enlevés/character_160.txt
Normal file
@ -0,0 +1,3 @@
|
||||
Jovens
|
||||
Ailton Junior
|
||||
CC BY-SA 3.0
|
BIN
mods/u_skins/skins_enlevés/character_160_preview.png
Normal file
After Width: | Height: | Size: 207 B |
BIN
mods/u_skins/skins_enlevés/character_231.png
Normal file
After Width: | Height: | Size: 523 B |
3
mods/u_skins/skins_enlevés/character_231.txt
Normal file
@ -0,0 +1,3 @@
|
||||
old skin in 3D
|
||||
DS
|
||||
CC BY-SA 3.0
|
BIN
mods/u_skins/skins_enlevés/character_231_preview.png
Normal file
After Width: | Height: | Size: 143 B |
BIN
mods/u_skins/skins_enlevés/character_303.png
Normal file
After Width: | Height: | Size: 347 B |
3
mods/u_skins/skins_enlevés/character_303.txt
Normal file
@ -0,0 +1,3 @@
|
||||
Kirby
|
||||
Rhys
|
||||
CC BY-SA 3.0
|
BIN
mods/u_skins/skins_enlevés/character_303_preview.png
Normal file
After Width: | Height: | Size: 224 B |
BIN
mods/u_skins/skins_enlevés/character_348.png
Normal file
After Width: | Height: | Size: 919 B |
3
mods/u_skins/skins_enlevés/character_348.txt
Normal file
@ -0,0 +1,3 @@
|
||||
Cool Bacon
|
||||
Ghanastripes1
|
||||
CC BY-SA 3.0
|
BIN
mods/u_skins/skins_enlevés/character_348_preview.png
Normal file
After Width: | Height: | Size: 434 B |
BIN
mods/u_skins/skins_enlevés/character_353.png
Normal file
After Width: | Height: | Size: 258 B |
3
mods/u_skins/skins_enlevés/character_353.txt
Normal file
@ -0,0 +1,3 @@
|
||||
Invisibility Ninja
|
||||
Minetestian
|
||||
CC 0 (1.0)
|
BIN
mods/u_skins/skins_enlevés/character_353_preview.png
Normal file
After Width: | Height: | Size: 116 B |
BIN
mods/u_skins/skins_enlevés/character_354.png
Normal file
After Width: | Height: | Size: 393 B |
3
mods/u_skins/skins_enlevés/character_354.txt
Normal file
@ -0,0 +1,3 @@
|
||||
Lil Ghast
|
||||
Blitzfan
|
||||
CC 0 (1.0)
|
BIN
mods/u_skins/skins_enlevés/character_354_preview.png
Normal file
After Width: | Height: | Size: 125 B |
BIN
mods/u_skins/skins_enlevés/character_375.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
3
mods/u_skins/skins_enlevés/character_375.txt
Normal file
@ -0,0 +1,3 @@
|
||||
Mummy
|
||||
TandT
|
||||
CC BY-SA 3.0
|
BIN
mods/u_skins/skins_enlevés/character_375_preview.png
Normal file
After Width: | Height: | Size: 844 B |
BIN
mods/u_skins/skins_enlevés/character_63.png
Normal file
After Width: | Height: | Size: 5.5 KiB |
3
mods/u_skins/skins_enlevés/character_63.txt
Normal file
@ -0,0 +1,3 @@
|
||||
Diamond Armor Sam
|
||||
Block_Guy
|
||||
CC BY-SA 3.0
|
BIN
mods/u_skins/skins_enlevés/character_63_preview.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
mods/u_skins/skins_enlevés/character_63_preview_back.png
Normal file
After Width: | Height: | Size: 27 KiB |
BIN
mods/u_skins/skins_enlevés/character_68.png
Normal file
After Width: | Height: | Size: 6.4 KiB |
3
mods/u_skins/skins_enlevés/character_68.txt
Normal file
@ -0,0 +1,3 @@
|
||||
Diamond Armor Sam
|
||||
Block_Guy
|
||||
CC BY-SA 3.0
|
BIN
mods/u_skins/skins_enlevés/character_68_preview.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
mods/u_skins/skins_enlevés/character_68_preview_back.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
mods/u_skins/skins_enlevés/character_85.png
Normal file
After Width: | Height: | Size: 280 B |
3
mods/u_skins/skins_enlevés/character_85.txt
Normal file
@ -0,0 +1,3 @@
|
||||
HurtedOerkki
|
||||
AMMOnym
|
||||
CC BY-SA 3.0
|
BIN
mods/u_skins/skins_enlevés/character_85_preview.png
Normal file
After Width: | Height: | Size: 198 B |
BIN
mods/u_skins/skins_enlevés/character_85_preview_back.png
Normal file
After Width: | Height: | Size: 5.8 KiB |
BIN
mods/u_skins/skins_enlevés/character_89.png
Normal file
After Width: | Height: | Size: 162 B |
3
mods/u_skins/skins_enlevés/character_89.txt
Normal file
@ -0,0 +1,3 @@
|
||||
Black
|
||||
Calinou
|
||||
CC BY 4.0
|
BIN
mods/u_skins/skins_enlevés/character_89_preview.png
Normal file
After Width: | Height: | Size: 121 B |
BIN
mods/u_skins/skins_enlevés/character_89_preview_back.png
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
mods/u_skins/skins_enlevés/character_93.png
Normal file
After Width: | Height: | Size: 245 B |
3
mods/u_skins/skins_enlevés/character_93.txt
Normal file
@ -0,0 +1,3 @@
|
||||
ShadowNinja
|
||||
ShadowNinja
|
||||
CC BY-SA 4.0
|
BIN
mods/u_skins/skins_enlevés/character_93_preview.png
Normal file
After Width: | Height: | Size: 130 B |
BIN
mods/u_skins/skins_enlevés/character_93_preview_back.png
Normal file
After Width: | Height: | Size: 22 KiB |
2
mods/u_skins/u_skins/depends.txt
Executable file
@ -0,0 +1,2 @@
|
||||
unified_inventory
|
||||
default
|
165
mods/u_skins/u_skins/init.lua
Executable file
@ -0,0 +1,165 @@
|
||||
-- Unified Skins for Minetest - based modified Bags from unfied_inventory and skins from inventory_plus
|
||||
|
||||
-- Copyright (c) 2012 cornernote, Dean Montgomery
|
||||
-- License: GPLv3
|
||||
u_skins = {}
|
||||
u_skins.modpath = minetest.get_modpath("u_skins")
|
||||
u_skins.file = minetest.get_worldpath().."/u_skins.mt"
|
||||
u_skins.default = "character_1"
|
||||
u_skins.pages = {}
|
||||
u_skins.u_skins = {}
|
||||
u_skins.file_save = false
|
||||
|
||||
-- ( Deprecated
|
||||
u_skins.type = { SPRITE=0, MODEL=1, ERROR=99 }
|
||||
u_skins.get_type = function(texture)
|
||||
if not u_skins.is_skin(texture) then
|
||||
return u_skins.type.ERROR
|
||||
end
|
||||
return u_skins.type.MODEL
|
||||
end
|
||||
-- )
|
||||
|
||||
u_skins.is_skin = function(texture)
|
||||
if not texture then
|
||||
return false
|
||||
end
|
||||
if not u_skins.meta[texture] then
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
dofile(u_skins.modpath.."/skinlist.lua")
|
||||
dofile(u_skins.modpath.."/players.lua")
|
||||
|
||||
u_skins.update_player_skin = function(player)
|
||||
local name = player:get_player_name()
|
||||
if not u_skins.is_skin(u_skins.u_skins[name]) then
|
||||
u_skins.u_skins[name] = u_skins.default
|
||||
end
|
||||
player:set_properties({
|
||||
textures = {u_skins.u_skins[name]..".png"},
|
||||
})
|
||||
u_skins.file_save = true
|
||||
end
|
||||
|
||||
-- Display Current Skin
|
||||
unified_inventory.register_page("u_skins", {
|
||||
get_formspec = function(player)
|
||||
local name = player:get_player_name()
|
||||
if not u_skins.is_skin(u_skins.u_skins[name]) then
|
||||
u_skins.u_skins[name] = u_skins.default
|
||||
end
|
||||
|
||||
local formspec = ("background[0.06,0.99;7.92,7.52;ui_misc_form.png]"
|
||||
.."image[0,.75;1,2;"..u_skins.u_skins[name].."_preview.png]"
|
||||
.."label[6,.5;Raw texture:]"
|
||||
.."image[6,1;2,1;"..u_skins.u_skins[name]..".png]")
|
||||
|
||||
local meta = u_skins.meta[u_skins.u_skins[name]]
|
||||
if meta then
|
||||
if meta.name ~= "" then
|
||||
formspec = formspec.."label[2,.5;Name: "..minetest.formspec_escape(meta.name).."]"
|
||||
end
|
||||
if meta.author ~= "" then
|
||||
formspec = formspec.."label[2,1;Author: "..minetest.formspec_escape(meta.author).."]"
|
||||
end
|
||||
if meta.license ~= "" then
|
||||
formspec = formspec.."label[2,1.5;License: "..minetest.formspec_escape(meta.license).."]"
|
||||
end
|
||||
if meta.description ~= "" then --what's that??
|
||||
formspec = formspec.."label[2,2;Description: "..minetest.formspec_escape(meta.description).."]"
|
||||
end
|
||||
end
|
||||
local page = 0
|
||||
if u_skins.pages[name] then
|
||||
page = u_skins.pages[name]
|
||||
end
|
||||
formspec = formspec .. "button[.75,3;6.5,.5;u_skins_page$"..page..";Change]"
|
||||
return {formspec=formspec}
|
||||
end,
|
||||
})
|
||||
|
||||
unified_inventory.register_button("u_skins", {
|
||||
type = "image",
|
||||
image = "u_skins_button.png",
|
||||
})
|
||||
|
||||
-- Create all of the skin-picker pages.
|
||||
|
||||
u_skins.generate_pages = function(texture)
|
||||
local page = 0
|
||||
local pages = {}
|
||||
for i, skin in ipairs(u_skins.list) do
|
||||
local p_index = (i - 1) % 16
|
||||
if p_index == 0 then
|
||||
page = page + 1
|
||||
pages[page] = {}
|
||||
end
|
||||
pages[page][p_index + 1] = {i, skin}
|
||||
end
|
||||
local total_pages = page
|
||||
page = 1
|
||||
for page, arr in ipairs(pages) do
|
||||
local formspec = "background[0.06,0.99;7.92,7.52;ui_misc_form.png]"
|
||||
local y = -0.1
|
||||
for i, skin in ipairs(arr) do
|
||||
local x = (i - 1) % 8
|
||||
if i > 1 and x == 0 then
|
||||
y = 1.8
|
||||
end
|
||||
formspec = (formspec.."image_button["..x..","..y..";1,2;"
|
||||
..skin[2].."_preview.png;u_skins_set$"..skin[1]..";]")
|
||||
end
|
||||
local page_prev = page - 2
|
||||
local page_next = page
|
||||
if page_prev < 0 then
|
||||
page_prev = total_pages - 1
|
||||
end
|
||||
if page_next >= total_pages then
|
||||
page_next = 0
|
||||
end
|
||||
formspec = (formspec
|
||||
.."button[0,3.8;1,.5;u_skins_page$"..page_prev..";<<]"
|
||||
.."button[.75,3.8;6.5,.5;u_skins_null;Page "..page.."/"..total_pages.."]"
|
||||
.."button[7,3.8;1,.5;u_skins_page$"..page_next..";>>]")
|
||||
|
||||
unified_inventory.register_page("u_skins_page$"..(page - 1), {
|
||||
get_formspec = function(player)
|
||||
return {formspec=formspec}
|
||||
end
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
-- click button handlers
|
||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
if fields.u_skins then
|
||||
unified_inventory.set_inventory_formspec(player, "craft")
|
||||
return
|
||||
end
|
||||
for field, _ in pairs(fields) do
|
||||
local current = string.split(field, "$", 2)
|
||||
if current[1] == "u_skins_set" then
|
||||
u_skins.u_skins[player:get_player_name()] = u_skins.list[tonumber(current[2])]
|
||||
u_skins.update_player_skin(player)
|
||||
unified_inventory.set_inventory_formspec(player, "u_skins")
|
||||
elseif current[1] == "u_skins_page" then
|
||||
u_skins.pages[player:get_player_name()] = current[2]
|
||||
unified_inventory.set_inventory_formspec(player, "u_skins_page$"..current[2])
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
-- Change skin on join - reset if invalid
|
||||
minetest.register_on_joinplayer(function(player)
|
||||
local player_name = player:get_player_name()
|
||||
if not u_skins.is_skin(u_skins.u_skins[player_name]) then
|
||||
u_skins.u_skins[player_name] = u_skins.default
|
||||
end
|
||||
u_skins.update_player_skin(player)
|
||||
end)
|
||||
|
||||
u_skins.generate_pages()
|
||||
u_skins.load_players()
|
15
mods/u_skins/u_skins/meta.lua
Executable file
@ -0,0 +1,15 @@
|
||||
u_skins.meta = {}
|
||||
for _, i in ipairs(u_skins.list) do
|
||||
u_skins.meta[i] = {}
|
||||
local f = io.open(u_skins.modpath.."/meta/"..i..".txt")
|
||||
local data = nil
|
||||
if f then
|
||||
data = minetest.deserialize("return {"..f:read('*all').."}")
|
||||
f:close()
|
||||
end
|
||||
data = data or {}
|
||||
u_skins.meta[i].name = data.name or ""
|
||||
u_skins.meta[i].author = data.author or ""
|
||||
u_skins.meta[i].description = data.description or nil
|
||||
u_skins.meta[i].comment = data.comment or nil
|
||||
end
|
3
mods/u_skins/u_skins/meta/character_1.txt
Executable file
@ -0,0 +1,3 @@
|
||||
Sam 0
|
||||
Jordach
|
||||
CC BY-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_10.txt
Executable file
@ -0,0 +1,3 @@
|
||||
Tuxedo Sam
|
||||
Jordach
|
||||
CC BY-NC-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_100.txt
Executable file
@ -0,0 +1,3 @@
|
||||
Franklin
|
||||
Ferdi Napoli
|
||||
CC BY-NC-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_101.txt
Executable file
@ -0,0 +1,3 @@
|
||||
Trevor
|
||||
Ferdi Napoli
|
||||
CC BY-NC-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_102.txt
Executable file
@ -0,0 +1,3 @@
|
||||
Bart Simpson
|
||||
Ferdi Napoli
|
||||
CC BY-NC-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_103.txt
Executable file
@ -0,0 +1,3 @@
|
||||
Creeper
|
||||
Ferdi Napoli
|
||||
CC BY-NC-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_104.txt
Executable file
@ -0,0 +1,3 @@
|
||||
War Machine
|
||||
Ferdi Napoli
|
||||
CC BY-NC-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_105.txt
Executable file
@ -0,0 +1,3 @@
|
||||
Gangnam Style
|
||||
Ferdi Napoli
|
||||
CC BY-NC-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_106.txt
Executable file
@ -0,0 +1,3 @@
|
||||
Sonic The Hedgehog
|
||||
Ferdi Napoli
|
||||
CC BY-NC-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_107.txt
Executable file
@ -0,0 +1,3 @@
|
||||
Charizard
|
||||
Ferdi Napoli
|
||||
CC BY-NC-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_108.txt
Executable file
@ -0,0 +1,3 @@
|
||||
Scarlet Spider-man
|
||||
Ferdi Napoli
|
||||
CC BY-NC-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_109.txt
Executable file
@ -0,0 +1,3 @@
|
||||
Ferdi Napoli
|
||||
Ferdi Napoli
|
||||
CC BY-NC-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_11.txt
Executable file
@ -0,0 +1,3 @@
|
||||
Semmett9
|
||||
Infinatum
|
||||
CC BY-NC-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_110.txt
Executable file
@ -0,0 +1,3 @@
|
||||
Finn The Adventured
|
||||
Ferdi Napoli
|
||||
CC BY-NC-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_111.txt
Executable file
@ -0,0 +1,3 @@
|
||||
Jake
|
||||
Ferdi Napoli
|
||||
CC BY-NC-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_112.txt
Executable file
@ -0,0 +1,3 @@
|
||||
Ferdi Napoli Reserve
|
||||
Ferdi Napoli
|
||||
CC BY-NC-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_113.txt
Executable file
@ -0,0 +1,3 @@
|
||||
Joker
|
||||
Ferdi Napoli
|
||||
CC BY-NC-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_114.txt
Executable file
@ -0,0 +1,3 @@
|
||||
Bleau Steve
|
||||
Ferdi Napoli
|
||||
CC BY-NC-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_115.txt
Executable file
@ -0,0 +1,3 @@
|
||||
Deadpool Bleau
|
||||
Ferdi Napoli
|
||||
CC BY-NC-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_116.txt
Executable file
@ -0,0 +1,3 @@
|
||||
Seth Rollins
|
||||
Ferdi Napoli
|
||||
CC BY-NC-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_117.txt
Executable file
@ -0,0 +1,3 @@
|
||||
Daffy Duck
|
||||
LuxAtheris
|
||||
CC BY-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_118.txt
Executable file
@ -0,0 +1,3 @@
|
||||
DareDevil
|
||||
Ferdi Napoli
|
||||
CC BY-NC-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_119.txt
Executable file
@ -0,0 +1,3 @@
|
||||
Clone
|
||||
Ferdi Napoli
|
||||
CC BY-NC-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_12.txt
Executable file
@ -0,0 +1,3 @@
|
||||
John
|
||||
Evergreen
|
||||
CC BY-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_120.txt
Executable file
@ -0,0 +1,3 @@
|
||||
Banana Guy
|
||||
Ferdi Napoli
|
||||
CC BY-NC-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_121.txt
Executable file
@ -0,0 +1,3 @@
|
||||
Rubber
|
||||
Ferdi Napoli
|
||||
CC BY-NC-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_122.txt
Executable file
@ -0,0 +1,3 @@
|
||||
Gothic Sam
|
||||
GingerHunter797
|
||||
CC BY-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_123.txt
Executable file
@ -0,0 +1,3 @@
|
||||
Tails
|
||||
Ferdi Napoli
|
||||
CC BY-NC-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_124.txt
Executable file
@ -0,0 +1,3 @@
|
||||
Aguia Explorer
|
||||
Davizinho
|
||||
CC BY-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_125.txt
Executable file
@ -0,0 +1,3 @@
|
||||
Toad
|
||||
Ferdi Napoli
|
||||
CC BY-NC-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_126.txt
Executable file
@ -0,0 +1,3 @@
|
||||
oOChainLynxOo
|
||||
oOChainLynxOo
|
||||
CC BY-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_127.txt
Executable file
@ -0,0 +1,3 @@
|
||||
amazing spiderman
|
||||
mateus
|
||||
CC BY-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_128.txt
Executable file
@ -0,0 +1,3 @@
|
||||
black spiderman
|
||||
mateus
|
||||
CC BY-NC-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_129.txt
Executable file
@ -0,0 +1,3 @@
|
||||
Sam Mese Tee
|
||||
oOChainLynxOo
|
||||
CC BY-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_13.txt
Executable file
@ -0,0 +1,3 @@
|
||||
rotor112
|
||||
rotor112
|
||||
CC BY-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_130.txt
Executable file
@ -0,0 +1,3 @@
|
||||
Jesus
|
||||
Ferdi Napoli
|
||||
CC BY-NC-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_131.txt
Executable file
@ -0,0 +1,3 @@
|
||||
Wires
|
||||
Geopbyte
|
||||
CC BY-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_132.txt
Executable file
@ -0,0 +1,3 @@
|
||||
Vector
|
||||
Ferdi Napoli
|
||||
CC BY-NC-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_133.txt
Executable file
@ -0,0 +1,3 @@
|
||||
Fire Mario
|
||||
Ferdi Napoli
|
||||
CC BY-NC-SA 3.0
|
3
mods/u_skins/u_skins/meta/character_134.txt
Executable file
@ -0,0 +1,3 @@
|
||||
skin minecraft
|
||||
lestouem
|
||||
CC BY-SA 3.0
|