summaryrefslogtreecommitdiffstats
path: root/MCServer
diff options
context:
space:
mode:
Diffstat (limited to 'MCServer')
-rw-r--r--MCServer/Plugins/APIDump/APIDesc.lua26
-rw-r--r--MCServer/Plugins/APIDump/Hooks/OnSpawningEntity.lua5
-rw-r--r--MCServer/Plugins/APIDump/Writing-a-MCServer-plugin.html6
-rw-r--r--MCServer/Plugins/Debuggers/Debuggers.lua67
-rw-r--r--MCServer/crafting.txt29
-rw-r--r--MCServer/items.ini274
-rw-r--r--MCServer/lang/items_de.ini603
-rw-r--r--MCServer/webadmin/files/background.gifbin0 -> 57 bytes
-rw-r--r--MCServer/webadmin/files/favicon.icobin0 -> 32038 bytes
-rw-r--r--MCServer/webadmin/files/logo.pngbin0 -> 3315 bytes
-rw-r--r--MCServer/webadmin/files/mc-logo.pngbin0 -> 66137 bytes
-rw-r--r--MCServer/webadmin/files/style.css326
-rw-r--r--MCServer/webadmin/login_template.html25
-rw-r--r--MCServer/webadmin/template.lua344
14 files changed, 1272 insertions, 433 deletions
diff --git a/MCServer/Plugins/APIDump/APIDesc.lua b/MCServer/Plugins/APIDump/APIDesc.lua
index f109638e9..e6ee4ca10 100644
--- a/MCServer/Plugins/APIDump/APIDesc.lua
+++ b/MCServer/Plugins/APIDump/APIDesc.lua
@@ -524,6 +524,7 @@ end
Functions =
{
GenerateOfflineUUID = { Params = "Username", Return = "string", Notes = "(STATIC) Generates an UUID based on the player name provided. This is used for the offline (non-auth) mode, when there's no UUID source. Each username generates a unique and constant UUID, so that when the player reconnects with the same name, their UUID is the same. Returns a 32-char UUID (no dashes)." },
+ GetIPString = { Params = "", Return = "string", Notes = "Returns the IP address of the connection, as a string. Only the address part is returned, without the port number." },
GetLocale = { Params = "", Return = "Locale", Notes = "Returns the locale string that the client sends as part of the protocol handshake. Can be used to provide localized strings." },
GetPing = { Params = "", Return = "number", Notes = "Returns the ping time, in ms" },
GetPlayer = { Params = "", Return = "{{cPlayer|cPlayer}}", Notes = "Returns the player object connected to this client. Note that this may be nil, for example if the player object is not yet spawned." },
@@ -1188,7 +1189,7 @@ These ItemGrids are available in the API and can be manipulated by the plugins,
constructor =
{
{ Params = "", Return = "cItem", Notes = "Creates a new empty cItem object" },
- { Params = "ItemType, Count, Damage, EnchantmentString", Return = "cItem", Notes = "Creates a new cItem object of the specified type, count (1 by default), damage (0 by default) and enchantments (non-enchanted by default)" },
+ { Params = "ItemType, Count, Damage, EnchantmentString, CustomName, Lore", Return = "cItem", Notes = "Creates a new cItem object of the specified type, count (1 by default), damage (0 by default), enchantments (non-enchanted by default), CustomName (empty by default) and Lore (string, empty by default)" },
{ Params = "cItem", Return = "cItem", Notes = "Creates an exact copy of the cItem object in the parameter" },
} ,
AddCount = { Params = "AmountToAdd", Return = "cItem", Notes = "Adds the specified amount to the item count. Returns self (useful for chaining)." },
@@ -1201,12 +1202,14 @@ These ItemGrids are available in the API and can be manipulated by the plugins,
IsDamageable = { Params = "", Return = "bool", Notes = "Returns true if this item does account for its damage" },
IsEmpty = { Params = "", Return = "bool", Notes = "Returns true if this object represents an empty item (zero count or invalid ID)" },
IsEqual = { Params = "cItem", Return = "bool", Notes = "Returns true if the item in the parameter is the same as the one stored in the object (type, damage, lore, name and enchantments)" },
- IsEnchantable = { Params = "", Return = "bool", Notes = "Returns true if the item is enchantable" },
IsFullStack = { Params = "", Return = "bool", Notes = "Returns true if the item is stacked up to its maximum stacking" },
IsSameType = { Params = "cItem", Return = "bool", Notes = "Returns true if the item in the parameter is of the same ItemType as the one stored in the object. This is true even if the two items have different enchantments" },
IsBothNameAndLoreEmpty = { Params = "", Return = "bool", Notes = "Returns if both the custom name and lore are not set." },
IsCustomNameEmpty = { Params = "", Return = "bool", Notes = "Returns if the custom name of the cItem is empty." },
IsLoreEmpty = { Params = "", Return = "", Notes = "Returns if the lore of the cItem is empty." },
+ GetEnchantability = { Params = "", Return = "number", Notes = "Returns the enchantability of the item. When the item hasn't a enchantability, it will returns 0" },
+ EnchantByXPLevels = { Params = "NumXPLevels", Return = "bool", Notes = "Enchants the item using the specified number of XP levels. Returns true if item enchanted, false if not." },
+ IsEnchantable = { Params = "ItemType, WithBook", Return = "bool", Notes = "(STATIC) Returns true if the specified item type is enchantable. If WithBook is true, the function is used in the anvil inventory with book enchantments. So it checks the \"only book enchantments\" too. Example: You can only enchant a hoe with a book." },
},
Variables =
{
@@ -1214,8 +1217,10 @@ These ItemGrids are available in the API and can be manipulated by the plugins,
m_ItemCount = { Type = "number", Notes = "Number of items in this stack" },
m_ItemDamage = { Type = "number", Notes = "The damage of the item. Zero means no damage. Maximum damage can be queried with GetMaxDamage()" },
m_ItemType = { Type = "number", Notes = "The item type. One of E_ITEM_ or E_BLOCK_ constants" },
- m_CustomName = { Type = "string", Notes = "The custom name for an item." },
- m_Lore = { Type = "string", Notes = "The lore for an item. Line breaks are represented by the ` character." },
+ m_CustomName = { Type = "string", Notes = "The custom name for an item." },
+ m_Lore = { Type = "string", Notes = "The lore for an item. Line breaks are represented by the ` character." },
+ m_RepairCost = { Type = "number", Notes = "The repair cost of the item. The anvil need this value" },
+ m_Enchantments = { Type = "{{cEnchantments|cEnchantments}}}", Notes = "The enchantments of the item." },
},
AdditionalInfo =
{
@@ -1641,6 +1646,8 @@ a_Player:OpenWindow(Window);
MobTypeToString = { Params = "{{cMonster#MobType|MobType}}", Return = "string", Notes = "(STATIC) Returns the string representing the given mob type ({{cMonster#MobType|mtXXX}} constant), or empty string if unknown type." },
MoveToPosition = { Params = "Position", Return = "", Notes = "Moves mob to the specified position" },
StringToMobType = { Params = "string", Return = "{{cMonster#MobType|MobType}}", Notes = "(STATIC) Returns the mob type ({{cMonster#MobType|mtXXX}} constant) parsed from the string type (\"creeper\"), or mtInvalidType if unrecognized." },
+ GetRelativeWalkSpeed = { Params = "", Return = "number", Notes = "Returns the relative walk speed of this mob. Standard is 1.0" },
+ SetRelativeWalkSpeed = { Params = "number", Return = "", Notes = "Sets the relative walk speed of this mob. Standard is 1.0" },
},
Constants =
{
@@ -1757,7 +1764,7 @@ a_Player:OpenWindow(Window);
ForceSetSpeed = { Params = "{{Vector3d|Direction}}", Notes = "Forces the player to move to the given direction." },
GetClientHandle = { Params = "", Return = "{{cClientHandle}}", Notes = "Returns the client handle representing the player's connection. May be nil (AI players)." },
GetColor = { Return = "string", Notes = "Returns the full color code to be used for this player's messages (based on their rank). Prefix player messages with this code." },
- GetTabListName = { Return = "string", Notes = "Returns the name that is used in the tablist." },
+ GetPlayerListName = { Return = "string", Notes = "Returns the name that is used in the playerlist." },
GetCurrentXp = { Params = "", Return = "number", Notes = "Returns the current amount of XP" },
GetEffectiveGameMode = { Params = "", Return = "{{Globals#GameMode|GameMode}}", Notes = "(OBSOLETE) Returns the current resolved game mode of the player. If the player is set to inherit the world's gamemode, returns that instead. See also GetGameMode() and IsGameModeXXX() functions. Note that this function is the same as GetGameMode(), use that function instead." },
GetEquippedItem = { Params = "", Return = "{{cItem}}", Notes = "Returns the item that the player is currently holding; empty item if holding nothing." },
@@ -1889,13 +1896,13 @@ cPluginManager.AddHook(cPluginManager.HOOK_CHAT, OnChatMessage);
},
BindCommand =
{
- { Params = "Command, Permission, Callback, HelpString", Return = "[bool]", Notes = "(STATIC) Binds an in-game command with the specified callback function, permission and help string. By common convention, providing an empty string for HelpString will hide the command from the /help display. Returns true if successful, logs to console and returns no value on error." },
- { Params = "Command, Permission, Callback, HelpString", Return = "[bool]", Notes = "Binds an in-game command with the specified callback function, permission and help string. By common convention, providing an empty string for HelpString will hide the command from the /help display. Returns true if successful, logs to console and returns no value on error." },
+ { Params = "Command, Permission, Callback, HelpString", Return = "[bool]", Notes = "(STATIC) Binds an in-game command with the specified callback function, permission and help string. By common convention, providing an empty string for HelpString will hide the command from the /help display. Returns true if successful, logs to console and returns no value on error. The callback uses the following signature: <pre class=\"prettyprint lang-lua\">function(Split, {{cPlayer|Player}})</pre> The Split parameter contains an array-table of the words that the player has sent, Player is the {{cPlayer}} object representing the player who sent the command. If the callback returns true, the command is assumed to have executed successfully; in all other cases the server sends a warning to the player that the command is unknown (this is so that subcommands can be implemented)." },
+ { Params = "Command, Permission, Callback, HelpString", Return = "[bool]", Notes = "Binds an in-game command with the specified callback function, permission and help string. By common convention, providing an empty string for HelpString will hide the command from the /help display. Returns true if successful, logs to console and returns no value on error. The callback uses the following signature: <pre class=\"prettyprint lang-lua\">function(Split, {{cPlayer|Player}})</pre> The Split parameter contains an array-table of the words that the player has sent, Player is the {{cPlayer}} object representing the player who sent the command. If the callback returns true, the command is assumed to have executed successfully; in all other cases the server sends a warning to the player that the command is unknown (this is so that subcommands can be implemented)." },
},
BindConsoleCommand =
{
- { Params = "Command, Callback, HelpString", Return = "[bool]", Notes = "(STATIC) Binds a console command with the specified callback function and help string. By common convention, providing an empty string for HelpString will hide the command from the \"help\" console command. Returns true if successful, logs to console and returns no value on error." },
- { Params = "Command, Callback, HelpString", Return = "[bool]", Notes = "Binds a console command with the specified callback function and help string. By common convention, providing an empty string for HelpString will hide the command from the \"help\" console command. Returns true if successful, logs to console and returns no value on error." },
+ { Params = "Command, Callback, HelpString", Return = "[bool]", Notes = "(STATIC) Binds a console command with the specified callback function and help string. By common convention, providing an empty string for HelpString will hide the command from the \"help\" console command. Returns true if successful, logs to console and returns no value on error. The callback uses the following signature: <pre class=\"prettyprint lang-lua\">function(Split)</pre> The Split parameter contains an array-table of the words that the admin has typed. If the callback returns true, the command is assumed to have executed successfully; in all other cases the server issues a warning to the console that the command is unknown (this is so that subcommands can be implemented)." },
+ { Params = "Command, Callback, HelpString", Return = "[bool]", Notes = "Binds a console command with the specified callback function and help string. By common convention, providing an empty string for HelpString will hide the command from the \"help\" console command. Returns true if successful, logs to console and returns no value on error. The callback uses the following signature: <pre class=\"prettyprint lang-lua\">function(Split)</pre> The Split parameter contains an array-table of the words that the admin has typed. If the callback returns true, the command is assumed to have executed successfully; in all other cases the server issues a warning to the console that the command is unknown (this is so that subcommands can be implemented)." },
},
CallPlugin = { Params = "PluginName, FunctionName, [FunctionArgs...]", Return = "[FunctionRets]", Notes = "(STATIC) Calls the specified function in the specified plugin, passing all the given arguments to it. If it succeeds, it returns all the values returned by that function. If it fails, returns no value at all. Note that only strings, numbers, bools, nils and classes can be used for parameters and return values; tables and functions cannot be copied across plugins." },
DisablePlugin = { Params = "PluginName", Return = "bool", Notes = "Disables a plugin specified by its name. Returns true if the plugin was disabled, false if it wasn't found or wasn't active." },
@@ -2349,6 +2356,7 @@ end
ForEachBlockEntityInChunk = { Params = "ChunkX, ChunkZ, CallbackFunction, [CallbackData]", Return = "bool", Notes = "Calls the specified callback for each block entity in the chunk. Returns true if all block entities in the chunk have been processed (including when there are zero block entities), or false if the callback has aborted the enumeration by returning true. The CallbackFunction has the following signature: <pre class=\"prettyprint lang-lua\">function Callback({{cBlockEntity|BlockEntity}}, [CallbackData])</pre> The callback should return false or no value to continue with the next block entity, or true to abort the enumeration. Use {{tolua}}.cast() to cast the Callback's BlockEntity parameter to the correct {{cBlockEntity}} descendant." },
ForEachChestInChunk = { Params = "ChunkX, ChunkZ, CallbackFunction, [CallbackData]", Return = "bool", Notes = "Calls the specified callback for each chest in the chunk. Returns true if all chests in the chunk have been processed (including when there are zero chests), or false if the callback has aborted the enumeration by returning true. The CallbackFunction has the following signature: <pre class=\"prettyprint lang-lua\">function Callback({{cChestEntity|ChestEntity}}, [CallbackData])</pre> The callback should return false or no value to continue with the next chest, or true to abort the enumeration." },
ForEachEntity = { Params = "CallbackFunction, [CallbackData]", Return = "bool", Notes = "Calls the specified callback for each entity in the loaded world. Returns true if all the entities have been processed (including when there are zero entities), or false if the callback function has aborted the enumeration by returning true. The callback function has the following signature: <pre class=\"prettyprint lang-lua\">function Callback({{cEntity|Entity}}, [CallbackData])</pre> The callback should return false or no value to continue with the next entity, or true to abort the enumeration." },
+ ForEachEntityInBox = { Params = "{{cBoundingBox|Box}}, CallbackFunction", Return = "bool", Notes = "Calls the specified callback for each entity in the specified bounding box. Returns true if all the entities have been processed (including when there are zero entities), or false if the callback function has aborted the enumeration by returning true. If any chunk within the bounding box is not valid, it is silently skipped without any notification. The callback function has the following signature: <pre class=\"prettyprint lang-lua\">function Callback({{cEntity|Entity}})</pre> The callback should return false or no value to continue with the next entity, or true to abort the enumeration." },
ForEachEntityInChunk = { Params = "ChunkX, ChunkZ, CallbackFunction, [CallbackData]", Return = "bool", Notes = "Calls the specified callback for each entity in the specified chunk. Returns true if all the entities have been processed (including when there are zero entities), or false if the chunk is not loaded or the callback function has aborted the enumeration by returning true. The callback function has the following signature: <pre class=\"prettyprint lang-lua\">function Callback({{cEntity|Entity}}, [CallbackData])</pre> The callback should return false or no value to continue with the next entity, or true to abort the enumeration." },
ForEachFurnaceInChunk = { Params = "ChunkX, ChunkZ, CallbackFunction, [CallbackData]", Return = "bool", Notes = "Calls the specified callback for each furnace in the chunk. Returns true if all furnaces in the chunk have been processed (including when there are zero furnaces), or false if the callback has aborted the enumeration by returning true. The CallbackFunction has the following signature: <pre class=\"prettyprint lang-lua\">function Callback({{cFurnaceEntity|FurnaceEntity}}, [CallbackData])</pre> The callback should return false or no value to continue with the next furnace, or true to abort the enumeration." },
ForEachPlayer = { Params = "CallbackFunction, [CallbackData]", Return = "bool", Notes = "Calls the specified callback for each player in the loaded world. Returns true if all the players have been processed (including when there are zero players), or false if the callback function has aborted the enumeration by returning true. The callback function has the following signature: <pre class=\"prettyprint lang-lua\">function Callback({{cPlayer|Player}}, [CallbackData])</pre> The callback should return false or no value to continue with the next player, or true to abort the enumeration." },
diff --git a/MCServer/Plugins/APIDump/Hooks/OnSpawningEntity.lua b/MCServer/Plugins/APIDump/Hooks/OnSpawningEntity.lua
index c4bff3916..e2bd1c940 100644
--- a/MCServer/Plugins/APIDump/Hooks/OnSpawningEntity.lua
+++ b/MCServer/Plugins/APIDump/Hooks/OnSpawningEntity.lua
@@ -6,8 +6,9 @@ return
DefaultFnName = "OnSpawningEntity", -- also used as pagename
Desc = [[
This hook is called before the server spawns an {{cEntity|entity}}. The plugin can either modify the
- entity before it is spawned, or disable the spawning altogether. If the entity spawning is a
- monster, the {{OnSpawningMonster|HOOK_SPAWNING_MONSTER}} hook is called before this hook.</p>
+ entity before it is spawned, or disable the spawning altogether. You can't disable the spawning if the
+ entity is a player. If the entity spawning is a monster, the {{OnSpawningMonster|HOOK_SPAWNING_MONSTER}}
+ hook is called before this hook.</p>
<p>
See also the {{OnSpawnedEntity|HOOK_SPAWNED_ENTITY}} hook for a similar hook called after the
entity is spawned.
diff --git a/MCServer/Plugins/APIDump/Writing-a-MCServer-plugin.html b/MCServer/Plugins/APIDump/Writing-a-MCServer-plugin.html
index 35c880b00..dd124e119 100644
--- a/MCServer/Plugins/APIDump/Writing-a-MCServer-plugin.html
+++ b/MCServer/Plugins/APIDump/Writing-a-MCServer-plugin.html
@@ -202,7 +202,7 @@ function Explode(Split, Player)
if (#Split ~= 2) then
-- There was more or less than one argument (excluding the "/explode" bit)
-- Send the proper usage to the player and exit
- SendMessage(Player, "Usage: /explode [playername]")
+ Player:SendMessage("Usage: /explode [playername]")
return true
end
@@ -213,7 +213,7 @@ function Explode(Split, Player)
if (Explodee:GetName() == Split[2]) then
-- Create an explosion at the same position as they are; see <a href="cWorld.html">API docs</a> for further details of this function
Player:GetWorld():DoExplosionAt(Explodee:GetPosX(), Explodee:GetPosY(), Explodee:GetPosZ(), false, esPlugin)
- SendMessageSuccess(Player, Split[2] .. " was successfully exploded")
+ Player:SendMessageSuccess(Split[2] .. " was successfully exploded")
HasExploded = true;
return true -- Signalize to MCS that we do not need to call this callback for any more players
end
@@ -224,7 +224,7 @@ function Explode(Split, Player)
if not(HasExploded) then
-- We have not broken out so far, therefore, the player must not exist, send failure
- SendMessageFailure(Player, Split[2] .. " was not found")
+ Player:SendMessageFailure(Split[2] .. " was not found")
end
return true
diff --git a/MCServer/Plugins/Debuggers/Debuggers.lua b/MCServer/Plugins/Debuggers/Debuggers.lua
index 65ce0993a..f66ac76a0 100644
--- a/MCServer/Plugins/Debuggers/Debuggers.lua
+++ b/MCServer/Plugins/Debuggers/Debuggers.lua
@@ -38,7 +38,7 @@ function Initialize(Plugin)
-- _X: Disabled so that the normal operation doesn't interfere with anything
-- PM:AddHook(cPluginManager.HOOK_CHUNK_GENERATED, OnChunkGenerated);
- PM:BindCommand("/cm", "debuggers", HandleCustomNameCmd, "- Gives you a custom name");
+ PM:BindCommand("/nick", "debuggers", HandleNickCmd, "- Gives you a custom name");
PM:BindCommand("/le", "debuggers", HandleListEntitiesCmd, "- Shows a list of all the loaded entities");
PM:BindCommand("/ke", "debuggers", HandleKillEntitiesCmd, "- Kills all the loaded entities");
PM:BindCommand("/wool", "debuggers", HandleWoolCmd, "- Sets all your armor to blue wool");
@@ -66,6 +66,8 @@ function Initialize(Plugin)
PM:BindCommand("/sb", "debuggers", HandleSetBiome, "- Sets the biome around you to the specified one");
PM:BindCommand("/wesel", "debuggers", HandleWESel, "- Expands the current WE selection by 1 block in X/Z");
PM:BindCommand("/rmitem", "debuggers", HandleRMItem, "- Remove the specified item from the inventory.");
+ PM:BindCommand("/pickups", "debuggers", HandlePickups, "- Spawns random pickups around you");
+ PM:BindCommand("/poof", "debuggers", HandlePoof, "- Nudges pickups close to you away from you");
Plugin:AddWebTab("Debuggers", HandleRequest_Debuggers)
Plugin:AddWebTab("StressTest", HandleRequest_StressTest)
@@ -769,14 +771,13 @@ end
-function HandleCustomNameCmd(Split, Player)
+function HandleNickCmd(Split, Player)
if (Split[2] == nil) then
- Player:SendMessage("Usage: /cm [CustomName]");
+ Player:SendMessage("Usage: /nick [CustomName]");
return true;
end
- local NewName = Split[2]
- Player:SetCustomName(NewName);
+ Player:SetCustomName(Split[2]);
Player:SendMessageSuccess("Custom name setted to " .. Player:GetCustomName() .. "!")
return true
end
@@ -1517,7 +1518,7 @@ function OnPlayerJoined(a_Player)
-- Test composite chat chaining:
a_Player:SendMessage(cCompositeChat()
:AddTextPart("Hello, ")
- :AddUrlPart(a_Player:GetName(), "www.mc-server.org", "u@2")
+ :AddUrlPart(a_Player:GetName(), "http://www.mc-server.org", "u@2")
:AddSuggestCommandPart(", and welcome.", "/help", "u")
:AddRunCommandPart(" SetDay", "/time set 0")
)
@@ -1575,3 +1576,57 @@ end
+
+local PossibleItems =
+{
+ cItem(E_ITEM_DIAMOND),
+ cItem(E_ITEM_GOLD),
+ cItem(E_ITEM_IRON),
+ cItem(E_ITEM_DYE, 1, E_META_DYE_BLUE), -- Lapis lazuli
+ cItem(E_ITEM_COAL),
+}
+
+
+
+
+
+function HandlePickups(a_Split, a_Player)
+ local PlayerX = a_Player:GetPosX()
+ local PlayerY = a_Player:GetPosY()
+ local PlayerZ = a_Player:GetPosZ()
+ local World = a_Player:GetWorld()
+ local Range = 12
+ for x = 0, Range do for z = 0, Range do
+ local px = PlayerX + x - Range / 2
+ local pz = PlayerZ + z - Range / 2
+ local Items = cItems()
+ Items:Add(PossibleItems[math.random(#PossibleItems)])
+ World:SpawnItemPickups(Items, px, PlayerY, pz, 0)
+ end end -- for z, for x
+ return true
+end
+
+
+
+
+function HandlePoof(a_Split, a_Player)
+ local PlayerPos = Vector3d(a_Player:GetPosition()) -- Create a copy of the position
+ PlayerPos.y = PlayerPos.y - 1
+ local Box = cBoundingBox(PlayerPos, 4, 2)
+ local NumEntities = 0
+ a_Player:GetWorld():ForEachEntityInBox(Box,
+ function (a_Entity)
+ if not(a_Entity:IsPlayer()) then
+ local AddSpeed = a_Entity:GetPosition() - PlayerPos -- Speed away from the player
+ a_Entity:AddSpeed(AddSpeed * 32 / (AddSpeed:SqrLength() + 1)) -- The further away, the less speed to add
+ NumEntities = NumEntities + 1
+ end
+ end
+ )
+ a_Player:SendMessage("Poof! (" .. NumEntities .. " entities)")
+ return true
+end
+
+
+
+
diff --git a/MCServer/crafting.txt b/MCServer/crafting.txt
index d29344b64..1236ab10e 100644
--- a/MCServer/crafting.txt
+++ b/MCServer/crafting.txt
@@ -40,8 +40,8 @@
# Need to list each of the four log types, otherwise all logs would get converted into apple planks (^0)
-ApplePlanks, 4 = AppleLog, *
-ConiferPlanks, 4 = ConiferLog, *
+OakPlanks, 4 = OakLog, *
+SprucePlanks, 4 = SpruceLog, *
BirchPlanks, 4 = BirchLog, *
JunglePlanks, 4 = JungleLog, *
AcaciaPlanks, 4 = AcaciaLog, *
@@ -67,6 +67,7 @@ DiamondBlock = Diamond, 1:1, 1:2, 1:3, 2:1, 2:2, 2:3, 3:1, 3:2, 3
LapisBlock = LapisLazuli, 1:1, 1:2, 1:3, 2:1, 2:2, 2:3, 3:1, 3:2, 3:3
EmeraldBlock = Emerald, 1:1, 1:2, 1:3, 2:1, 2:2, 2:3, 3:1, 3:2, 3:3
RedstoneBlock = RedstoneDust, 1:1, 1:2, 1:3, 2:1, 2:2, 2:3, 3:1, 3:2, 3:3
+CoalBlock = Coal, 1:1, 1:2, 1:3, 2:1, 2:2, 2:3, 3:1, 3:2, 3:3
QuartzBlock = NetherQuartz, 1:1, 1:2, 1:3, 2:1, 2:2, 2:3, 3:1, 3:2, 3:3
NetherBrick = netherbrickitem, 1:1, 1:2, 2:1, 2:2
Glowstone = GlowstoneDust, 1:1, 1:2, 2:1, 2:2
@@ -147,9 +148,6 @@ StoneBrickStairs, 4 = StoneBrick, 3:1, 2:2, 3:2, 1:3, 2:3, 3:3
RedSandstoneStairs, 4 = RedSandstone, 3:1, 2:2, 3:2, 1:3, 2:3, 3:3
RedSandstoneStairs, 4 = RedSandstone, 3:1, 2:2, 3:2, 1:3, 2:3, 3:3
-# Other
-Carpet = Wool, 1:3, 2:3
-
#******************************************************#
@@ -353,7 +351,7 @@ Clay, 4 = ClayBlock, *
Painting = Stick, 1:1, 1:2, 1:3, 2:1, 2:3, 3:1, 3:2, 3:3 | Wool, 2:2
ItemFrame = Stick, 1:1, 1:2, 1:3, 2:1, 2:3, 3:1, 3:2, 3:3 | Leather, 2:2
-Sign = Planks, 1:1, 2:1, 3:1, 1:2, 2:2, 3:2 | Stick, 2:3
+Sign, 3 = Planks, 1:1, 2:1, 3:1, 1:2, 2:2, 3:2 | Stick, 2:3
Ladder, 3 = Stick, 1:1, 3:1, 1:2, 2:2, 3:2, 1:3, 3:3
GlassPane, 16 = Glass, 1:1, 2:1, 3:1, 1:2, 2:2, 3:2
IronBars, 16 = IronIngot, 1:1, 2:1, 3:1, 1:2, 2:2, 3:2
@@ -451,13 +449,30 @@ PinkWool = Wool, * | PinkDye, *
GrayWool = Wool, * | GrayDye, *
LightGrayWool = Wool, * | LightGrayDye, *
CyanWool = Wool, * | CyanDye, *
-VioletWool = Wool, * | VioletDye, *
+PurpleWool = Wool, * | PurpleDye, *
BlueWool = Wool, * | BlueDye, *
BrownWool = Wool, * | BrownDye, *
GreenWool = Wool, * | GreenDye, *
RedWool = Wool, * | RedDye, *
BlackWool = Wool, * | BlackDye, *
+WhiteCarpet, 3 = WhiteWool, 1:1, 2:1
+OrangeCarpet, 3 = OrangeWool, 1:1, 2:1
+MagentaCarpet, 3 = MagentaWool, 1:1, 2:1
+LightBlueCarpet, 3 = LightBlueWool, 1:1, 2:1
+YellowCarpet, 3 = YellowWool, 1:1, 2:1
+LimeCarpet, 3 = LimeWool, 1:1, 2:1
+PinkCarpet, 3 = PinkWool, 1:1, 2:1
+GrayCarpet, 3 = GrayWool, 1:1, 2:1
+LightGrayCarpet, 3 = LightGrayWool, 1:1, 2:1
+CyanCarpet, 3 = CyanWool, 1:1, 2:1
+PurpleCarpet, 3 = PurpleWool, 1:1, 2:1
+BlueCarpet, 3 = BlueWool, 1:1, 2:1
+BrownCarpet, 3 = BrownWool, 1:1, 2:1
+GreenCarpet, 3 = GreenWool, 1:1, 2:1
+RedCarpet, 3 = RedWool, 1:1, 2:2
+BlackCarpet, 3 = BlackWool, 1:1, 2:1
+
#******************************************************#
# Stained Glass:
#
diff --git a/MCServer/items.ini b/MCServer/items.ini
index 6eb9eee6e..daf366654 100644
--- a/MCServer/items.ini
+++ b/MCServer/items.ini
@@ -1,5 +1,6 @@
[Items]
air=0
+stone=1
rock=1
granite=1:1
polishedgranite=1:2
@@ -7,7 +8,6 @@ diorite=1:3
polisheddiorite=1:4
andesite=1:5
polishedandesite=1:6
-stone=1
grass=2
dirt=3
coarseddirt=3:1
@@ -15,11 +15,11 @@ podzol=3:2
cobblestone=4
cobble=4
planks=5
-appleplanks=5:0
oakplanks=5:0
+appleplanks=5:0
+spruceplanks=5:1
coniferplanks=5:1
pineplanks=5:1
-spruceplanks=5:1
darkplanks=5:1
birchplanks=5:2
lightplanks=5:2
@@ -29,53 +29,59 @@ acaciaplanks=5:4
darkoakplanks=5:5
bigoakplanks=5:5
roofedoakplanks=5:5
-
-
-; Obsolete: do not use "wood", as its meaning is not clear - wiki uses log as wood, we use planks as wood.
-wood=5
-
sapling=6
-applesapling=6:0
oaksapling=6:0
+applesapling=6:0
+sprucesapling=6:1
conifersapling=6:1
pinesapling=6:1
-sprucesapling=6:1
+darkplanks=6:1
birchsapling=6:2
+whitesapling=6:2
junglesapling=6:3
-adminium=7
+redsapling=6:3
+acaciasapling=6:4
+darkoaksapling=6:5
+bigoaksapling=6:5
+roofedoaksapling=6:5
bedrock=7
+adminium=7
water=8
+flowingwater=8
+stationarywater=9
stillwater=9
swater=9
-stationarywater=9
lava=10
+flowinglava=10
+stationarylava=11
stilllava=11
slava=11
-stationarylava=11
sand=12
redsand=12:1
gravel=13
goldore=14
ironore=15
coalore=16
-tree=17
log=17
-applelog=17:0
+tree=17
oaklog=17:0
+applelog=17:0
+sprucelog=17:1
coniferlog=17:1
pinelog=17:1
-sprucelog=17:1
darklog=17:1
birchlog=17:2
whitelog=17:2
junglelog=17:3
leaves=18
-appleleaves=18:0
oakleaves=18:0
+appleleaves=18:0
+spruceleaves=18:1
coniferleaves=18:1
pineleaves=18:1
-spruceleaves=18:1
+darkleaves=18:1
birchleaves=18:2
+whiteleaves=18:2
jungleleaves=18:3
sponge=19
wetsponge=19:1
@@ -85,8 +91,9 @@ lapisblock=22
dispenser=23
sandstone=24
normalsandstone=24:0
-ornamentsandstone=24:1
+chiseledsandstone=24:1
decorativesandstone=24:1
+ornamentsandstone=24:1
smoothsandstone=24:2
noteblock=25
bedblock=26
@@ -101,14 +108,16 @@ deadbush=32
piston=33
pistonextension=34
pistonhead=34
-cloth=35
wool=35
+cloth=35
whitewool=35:0
orangewool=35:1
magentawool=35:2
lightbluewool=35:3
+ltbluewool=35:3
yellowwool=35:4
limewool=35:5
+ltbluewool=35:3
lightgreenwool=35:5
ltgreenwool=35:5
pinkwool=35:6
@@ -122,11 +131,13 @@ lightgraywool=35:8
lightgreywool=35:8
ltgraywool=35:8
ltgreywool=35:8
+silverwool=35:8
cyanwool=35:9
purplewool=35:10
violetwool=35:10
bluewool=35:11
darkbluewool=35:11
+dkbluewool=35:11
brownwool=35:12
greenwool=35:13
darkgreenwool=35:13
@@ -134,14 +145,12 @@ dkgreenwool=35:13
redwool=35:14
blackwool=35:15
dandelion=37
-
-; Renamed in 1.7, use "poppy" instead; kept for compatibility reasons, will be removed later on.
+poppy=38
rose=38
-
flower=38
-poppy=38
blueorchid=38:1
allium=38:2
+azurebluet=38:3
redtulip=38:4
orangetulip=38:5
whitetulip=38:6
@@ -149,11 +158,12 @@ pinktulip=38:7
oxeyedaisy=38:8
brownmushroom=39
redmushroom=40
-gold=41
goldblock=41
-iron=42
+gold=41
ironblock=42
+iron=42
doubleslab=43
+doublestep=43
stonedoubleslab=43:0
sandstonedoubleslab=43:1
wooddoubleslab=43:2
@@ -183,19 +193,19 @@ obsidian=49
torch=50
fire=51
mobspawner=52
-woodstairs=53
oakwoodstairs=53
+woodstairs=53
chest=54
-redstonedust=55
redstonewire=55
+redstonedust=55
diamondore=56
diamondblock=57
workbench=58
crop=59
crops=59
-soil=60
farmland=60
tilleddirt=60
+soil=60
furnace=61
litfurnace=62
signblock=63
@@ -207,11 +217,11 @@ track=66
tracks=66
cobblestonestairs=67
stairs=67
-signblocktop=68
wallsign=68
+signblocktop=68
lever=69
-rockplate=70
stoneplate=70
+rockplate=70
irondoorblock=71
woodplate=72
redstoneore=73
@@ -228,13 +238,13 @@ reedblock=83
jukebox=84
fence=85
pumpkin=86
-netherstone=87
netherrack=87
hellrock=87
-slowsand=88
+netherstone=87
soulsand=88
-lightstone=89
+slowsand=88
glowstone=89
+lightstone=89
portal=90
jackolantern=91
jacko=91
@@ -243,22 +253,39 @@ whitestainedglass=95
orangestainedglass=95:1
magentastainedglass=95:2
lightbluestainedglass=95:3
+ltbluestainedglass=95:3
yellowstainedglass=95:4
limestainedglass=95:5
+lightgreenstainedglass=95:5
+ltgreenstainedglass=95:5
pinkstainedglass=95:6
graystainedglass=95:7
+greystainedglass=95:7
+darkgraystainedglass=95:7
+darkgreystainedglass=95:7
+dkgraystainedglass=95:7
+dkgreystainedglass=95:7
lightgraystainedglass=95:8
+lightgreystainedglass=95:8
+ltgraystainedglass=95:8
+ltgreystainedglass=95:8
+silverstainedglass=95:8
cyanstainedglass=95:9
+purplestainedglass=95:10
violetstainedglass=95:10
bluestainedglass=95:11
+darkbluestainedglass=95:11
+dkbluestainedglass=95:11
brownstainedglass=95:12
greenstainedglass=95:13
+darkgreenstainedglass=95:13
+dkgreenstainedglass=95:13
redstainedglass=95:14
blackstainedglass=95:15
trapdoor=96
silverfishblock=97
-stonebricks=98
stonebrick=98
+stonebricks=98
mossystonebrick=98:1
crackedstonebrick=98:2
chiseledstonebrick=98:3
@@ -288,35 +315,36 @@ endstone=121
dragonegg=122
redstonelamp=123
redstonelampoff=123
+litredstonelamp=124
redstonelampon=124
woodendoubleslab=125
-appledoublewoodslab=125:0
oakwooddoubleslab=125:0
+appledoublewoodslab=125:0
+sprucewooddoubleslab=125:1
coniferwooddoubleslab=125:1
pinewooddoubleslab=125:1
-sprucewooddoubleslab=125:1
darkwooddoubleslab=125:1
birchwooddoubleslab=125:2
whitewooddoubleslab=125:2
junglewooddoubleslab=125:3
acaciawooddoubleslab=125:4
-bigoakwooddoubleslab=125:5
darkoakwooddoubleslab=125:5
+bigoakwooddoubleslab=125:5
roofedwooddoubleslab=125:5
woodenslab=126
-applewoodslab=126:0
oakwoodslab=126:0
+applewoodslab=126:0
+sprucewoodslab=126:1
coniferwoodslab=126:1
pinewoodslab=126:1
-sprucewoodslab=126:1
darkwoodslab=126:1
birchwoodslab=126:2
whitewoodslab=126:2
junglewoodslab=126:3
acaciawoodslab=126:4
-bigoakwoodslab=126:5
darkoakwoodslab=126:5
roofedwoodslab=126:5
+bigoakwoodslab=126:5
cocoabeans=127
sandstonestairs=128
emeraldore=129
@@ -324,9 +352,9 @@ enderchest=130
tripwirehook=131
tripwire=132
emeraldblock=133
+sprucewoodstairs=134
coniferwoodstairs=134
pinewoodstairs=134
-sprucewoodstairs=134
darkwoodstairs=134
birchwoodstairs=135
whitewoodstairs=135
@@ -342,6 +370,7 @@ woodenbutton=143
skeletonhead=144
witherhead=144:1
zombiehead=144:2
+playerhead=144:3
humanhead=144:3
stevehead=144:3
creeperhead=144:4
@@ -365,47 +394,84 @@ whitestainedclay=159
orangestainedclay=159:1
magentastainedclay=159:2
lightbluestainedclay=159:3
+ltbluestainedclay=159:3
yellowstainedclay=159:4
limestainedclay=159:5
+lightgreenstainedclay=159:5
+ltgreenstainedclay=159:5
pinkstainedclay=159:6
graystainedclay=159:7
+greystainedclay=159:7
+darkgraystainedclay=159:7
+darkgreystainedclay=159:7
+dkgraystainedclay=159:7
+dkgreystainedclay=159:7
lightgraystainedclay=159:8
+lightgreystainedclay=159:8
+ltgraystainedclay=159:8
+ltgreystainedclay=159:8
+silverstainedclay=159:8
cyanstainedclay=159:9
+purplestainedclay=159:10
violetstainedclay=159:10
bluestainedclay=159:11
+darkbluestainedclay=159:11
+dkbluestainedclay=159:11
brownstainedclay=159:12
greenstainedclay=159:13
+darkgreenstainedclay=159:13
+dkgreenstainedclay=159:13
redstainedclay=159:14
blackstainedclay=159:15
whitestainedglasspane=160
orangestainedglasspane=160:1
magentastainedglasspane=160:2
lightbluestainedglasspane=160:3
+ltbluestainedglasspane=160:3
yellowstainedglasspane=160:4
limestainedglasspane=160:5
+lightgreenstainedglasspane=160:5
+ltgreenstainedglasspane=160:5
pinkstainedglasspane=160:6
graystainedglasspane=160:7
+greystainedglasspane=160:7
+darkgraystainedglasspane=160:7
+darkgreystainedglasspane=160:7
+dkgraystainedglasspane=160:7
+dkgreystainedglasspane=160:7
lightgraystainedglasspane=160:8
+lightgreystainedglasspane=160:8
+ltgraystainedglasspane=160:8
+ltgreystainedglasspane=160:8
+silverstainedglasspane=160:8
cyanstainedglasspane=160:9
+purplestainedglasspane=160:10
violetstainedglasspane=160:10
bluestainedglasspane=160:11
+darkbluestainedglasspane=160:11
+dkbluestainedglasspane=160:11
brownstainedglasspane=160:12
greenstainedglasspane=160:13
+darkgreenstainedglasspane=160:13
+dkgreenstainedglasspane=160:13
redstainedglasspane=160:14
blackstainedglasspane=160:15
-acacialeaves=161
-bigoakleaves=161:1
+newleaves=161
+acacialeaves=161:0
darkoakleaves=161:1
+bigoakleaves=161:1
roofedoakleaves=161:1
-acacialog=162
-bigoaklog=162:1
+newlog=162
+acacialog=162:0
darkoaklog=162:1
+bigoaklog=162:1
roofedoaklog=162:1
acaciawoodstairs=163
-bigoakwoodstiars=164
darkoakwoodstairs=164
+bigoakwoodstiars=164
roofedoakwoodstairs=164
slimeblock=165
+barrier=166
irontrapdoor=167
prismarine=168
prismarinebricks=168:1
@@ -413,15 +479,58 @@ darkprismarine=168:2
sealantern=169
haybale=170
carpet=171
+whitecarpet=171:0
+orangecarpet=171:1
+magentacarpet=171:2
+lightbluecarpet=171:3
+ltbluecarpet=171:3
+yellowcarpet=171:4
+limecarpet=171:5
+lightgreencarpet=171:5
+ltgreencarpet=171:5
+pinkcarpet=171:6
+graycarpet=171:7
+greycarpet=171:7
+darkgraycarpet=171:7
+darkgreycarpet=171:7
+dkgraycarpet=171:7
+dkgreycarpet=171:7
+lightgraycarpet=171:8
+lightgreycarpet=171:8
+ltgraycarpet=171:8
+ltgreycarpet=171:8
+silvercarpet=171:8
+cyancarpet=171:9
+purplecarpet=171:10
+violetcarpet=171:10
+bluecarpet=171:11
+darkbluecarpet=171:11
+dkbluecarpet=171:11
+browncarpet=171:12
+greencarpet=171:13
+darkgreencarpet=171:13
+dkgreencarpet=171:13
+redcarpet=171:14
+blackcarpet=171:15
hardenedclay=172
+coalblock=173
+packedice=174
+doubleplant=175
+sunflower=175:0
+lilac=175:1
+doubletallgrass=175:2
+doubletallfern=175:3
+rosebush=175:4
+peony=175:5
redsandstone=179
chiseledredsandstone=179:1
smoothredsandstone=179:2
redsandstonestairs=180
-redsandstoneslab=182
+newstoneslab=182
+redsandstoneslab=182:0
+sprucefencegate=183
coniferfencegate=183
pinefencegate=183
-sprucefencegate=183
darkfencegate=183
birchfencegate=184
whitefencegate=184
@@ -430,9 +539,9 @@ darkoakfencegate=186
bigoakfencegate=186
roofedoakfencegate=186
acaciafencegate=187
+sprucefence=188
coniferfence=188
pinefence=188
-sprucefence=188
darkfence=188
birchfence=189
whitefence=189
@@ -453,7 +562,6 @@ redapple=260
bow=261
arrow=262
coal=263
-coalblock=173
charcoal=263:1
diamond=264
ironingot=265
@@ -466,9 +574,9 @@ ironsword=267
woodensword=268
woodsword=268
woodenshovel=269
+woodspade=269
woodshovel=269
woodenspade=269
-woodspade=269
woodenpickaxe=270
woodpickaxe=270
woodenpick=270
@@ -496,8 +604,8 @@ soup=282
goldensword=283
goldsword=283
goldenshovel=284
-goldshovel=284
goldenspade=284
+goldshovel=284
goldspade=284
goldenpickaxe=285
goldpickaxe=285
@@ -508,13 +616,13 @@ goldaxe=286
string=287
feather=288
gunpowder=289
-woodhoe=290
woodenhoe=290
+woodhoe=290
stonehoe=291
ironhoe=292
diamondhoe=293
-goldhoe=294
goldenhoe=294
+goldhoe=294
seeds=295
wheat=296
bread=297
@@ -543,19 +651,24 @@ goldpants=316
goldenboots=317
goldboots=317
flint=318
+porkchop=319
meat=319
pork=319
+cookedporkchop=320
cookedmeat=320
cookedpork=320
painting=321
paintings=321
goldenapple=322
goldapple=322
+notchapple=322:1
enchantedgoldenapple=322:1
enchantedgoldapple=322:1
sign=323
-wooddoor=324
+oakdoor=324
+appledoor=324
woodendoor=324
+wooddoor=324
bucket=325
waterbucket=326
lavabucket=327
@@ -569,32 +682,38 @@ leather=334
milkbucket=335
brick=336
clay=337
-reed=338
sugarcane=338
+reed=338
paper=339
book=340
-slimeorb=341
slimeball=341
+slimeorb=341
storageminecart=342
poweredminecart=343
egg=344
compass=345
fishingrod=346
watch=347
+glowstonedust=348
lightstonedust=348
lightdust=348
-glowstonedust=348
glowdust=348
-rawfish=349
fish=349
+rawfish=349
+rawsalmon=349:1
+clownfish=349:2
+pufferfish=349:3
cookedfish=350
+cookedsalmon=350:1
dye=351
inksac=351:0
blackdye=351:0
-reddye=351:1
rosered=351:1
-greendye=351:2
+reddye=351:1
cactusgreen=351:2
+greendye=351:2
+darkgreendye=351:2
+dkgreendye=351:2
cocoabeans=351:3
browndye=351:3
lapislazuli=351:4
@@ -604,12 +723,13 @@ dkbluedye=351:4
purpledye=351:5
violetdye=351:5
cyandye=351:6
-lightgreydye=351:7
lightgraydye=351:7
-ltgreydye=351:7
+lightgreydye=351:7
ltgraydye=351:7
-greydye=351:8
+ltgreydye=351:7
+silverdye=351:7
graydye=351:8
+greydye=351:8
darkgreydye=351:8
darkgraydye=351:8
dkgreydye=351:8
@@ -675,6 +795,7 @@ goldencarrot=396
skeletonhead=397
witherhead=397:1
zombiehead=397:2
+playerhead=397:3
stevehead=397:3
creeperhead=397:4
carrotonastick=398
@@ -709,30 +830,46 @@ banner=425
blackbanner=415:0
redbanner=415:1
greenbanner=415:2
+darkgreenbanner=415:2
+dkgreenbanner=415:2
brownbanner=415:3
bluebanner=415:4
+darkbluebanner=415:4
+dkbluebanner=415:4
purplebanner=415:5
+violetbanner=415:5
cyanbanner=415:6
-silverbanner=415:7
lightgraybanner=415:7
+lightgreybanner=415:7
+ltgraybanner=415:7
+ltgreybanner=415:7
+silverbanner=415:7
graybanner=415:8
+greybanner=415:8
+darkgraybanner=415:8
+darkgreybanner=415:8
+dkgraybanner=415:8
+dkgreybanner=415:8
pinkbanner=415:9
limebanner=415:10
+lightgreenbanner=415:10
+ltgreenbanner=415:10
yellowbanner=415:11
lightbluebanner=415:12
+ltbluebanner=415:12
magentabanner=415:13
orangebanner=415:14
whitebanner=415:15
+sprucedoor=427
coniferdoor=427
pinedoor=427
-sprucedoor=427
darkdoor=427
birchdoor=428
whitedoor=428
jungledoor=429
acaciadoor=430
-bigoakdoor=431
darkoakdoor=431
+bigoakdoor=431
roofedoakdoor=431
goldrecord=2256
greenrecord=2257
@@ -748,4 +885,3 @@ wardrecord=2265
-
diff --git a/MCServer/lang/items_de.ini b/MCServer/lang/items_de.ini
new file mode 100644
index 000000000..3c2ab87d1
--- /dev/null
+++ b/MCServer/lang/items_de.ini
@@ -0,0 +1,603 @@
+[Items]
+luft=0
+stein=1
+granit=1:1
+poliertergranit=1:2
+diorit=1:3
+polierterdiorit=1:4
+andesit=1:5
+polierterandesit=1:6
+grasblock=2
+erde=3
+grobeerde=3:1
+podsol=3:2
+bruchstein=4
+holzbretter=5
+eichenholzbretter=5:0
+fichtenholzbretter=5:1
+birkenholzbretter=5:2
+tropenholzbretter=5:3
+akazienholzbretter=5:4
+schwarzeichenholzbretter=5:5
+setzling=6
+eichensetzling=6:0
+fichtensetzling=6:1
+birkensetzling=6:2
+tropensetzling=6:3
+akaziensetzling=6:4
+schwarzeichensetzling=6:5
+grundgestein=7
+wasser=8
+fliessendeswasser=8
+stehendeswasser=9
+stilleswasser=9
+swasser=9
+lava=10
+fliessendelava=10
+stehendelava=11
+stillelava=11
+slava=11
+sand=12
+rotersand=12:1
+kies=13
+golderz=14
+eisenerz=15
+kohleerz=16
+stamm=17
+eichenholz=17:0
+fichtenholz=17:1
+birkenholz=17:2
+tropenholz=17:3
+laub=18
+eichenlaub=18:0
+fichtenlaub=18:1
+birkenlaub=18:2
+tropenlaub=18:3
+schwamm=19
+nasserschwamm=19:1
+glas=20
+lapislazulierz=21
+lapislazuliblock=22
+werfer=23
+sandstein=24
+normalersandstein=24:0
+gemeisseltersandstein=24:1
+glattersandstein=24:2
+notenblock=25
+bettblock=26
+antriebsschiene=27
+sensorschiene=28
+klebrigerkolben=29
+spinnenweben=30
+gras=31
+gras=31:1
+farn=31:2
+toterbusch=32
+kolben=33
+kolbenkopf=34
+wolle=35
+weissewolle=35:0
+orangenewolle=35:1
+magentawolle=35:2
+hellblauewolle=35:3
+gelbewolle=35:4
+hellgruene=35:5
+rosawolle=35:6
+grauwool=35:7
+greywool=35:7
+grauewolle=35:7
+hellgrauewolle=35:8
+tuerkisewolle=35:9
+violettewolle=35:10
+blauewolle=35:11
+braunewolle=35:12
+gruenewolle=35:13
+rotewolle=35:14
+schwarzewolle=35:15
+loewenzahn=37
+blume=38
+mohn=38:0
+blaueorchidee=38:1
+sternlauch=38:2
+porzellansternchen=38:3
+rotetulpe=38:4
+orangenetulpe=38:5
+weissetulpe=38:6
+rosatulpe=38:7
+margerite=38:8
+braunerpilz=39
+roterpilz=40
+goldblock=41
+eisenblock=42
+doppelstufe=43
+doppelsteinstufe=43:0
+doppelsandsteinstufe=43:1
+doppelholzstufe=43:2
+doppelbruchsteinstufe=43:3
+doppelziegelstufe=43:4
+doppelsteinziegelstufe=43:5
+doppelnetherziegelstufe=43:6
+doppelquarzstufe=43:7
+stufe=44
+steinstufe=44:0
+sandsteinstufe=44:1
+holzstufe=44:2
+bruchsteinstufe=44:3
+ziegelstufe=44:4
+steinziegelstufe=44:5
+netherziegelstufe=44:6
+quarzstufe=44:7
+ziegelsteine=45
+tnt=46
+buecherregal=47
+bemoosterbruchstein=48
+obsidian=49
+fackel=50
+feuer=51
+monsterspawner=52
+eichenholztreppe=53
+kiste=54
+rotstonekabel=55
+diamanterz=56
+diamantblock=57
+werkbank=58
+ernte=59
+farmland=60
+ofen=61
+brennenderofen=62
+schildblock=63
+holztuerblock=64
+leiter=65
+schiene=66
+bruchsteintreppe=67
+wandschild=68
+schalter=69
+steindruckplatte=70
+eisentuerblock=71
+holzdruckplatte=72
+rotstoneerz=73
+leuchtendesrotstoneerz=74
+erloschenerotstonefackel=75
+rotstonefackel=76
+setinknopf=77
+schnee=78
+eis=79
+schneeblock=80
+kaktus=81
+ton=82
+zuckerrohrblock=83
+plattenspieler=84
+eichenholzzaun=85
+kuerbis=86
+netherstein=87
+selensand=88
+leuchtstein=89
+portal=90
+kürbislaterne=91
+kuchenlock=92
+weissesglas=95
+orangenesglas=95:1
+magentaglas=95:2
+hellblauesglas=95:3
+gelbesglas=95:4
+hellgruenesglas=95:5
+rosagerfaerbtglas=95:6
+grauesglas=95:7
+hellgrauesglas=95:8
+tuerkisesglas=95:9
+violettesglas=95:10
+blauesglas=95:11
+braunesglas=95:12
+gruenesglas=95:13
+rotesglas=95:14
+schwarzesglas=95:15
+falltuer=96
+silberfischblock=97
+steinziegel=98
+bemoostesteinziegel=98:1
+rissigesteinziegel=98:2
+gemeisseltesteinziegel=98:3
+braunerpilzblock=99
+roterpilzblock=100
+eisengitter=101
+glasscheibe=102
+melone=103
+kuerbispflanze=104
+melonenpflanze=105
+ranken=106
+eichenholzzauntor=107
+ziegeltreppe=108
+steinziegeltreppe=109
+myzel=110
+seerosenblatt=111
+netherziegel=112
+netherziegelzaun=113
+netherziegeltreppe=114
+netherwarzenblock=115
+zaubertisch=116
+braustandblock=117
+kesselblock=118
+endportal=119
+endportalrahmen=120
+endstein=121
+drachenei=122
+redstonelampe=123
+erlosscheneredstonelampe=124
+doppelholzstufe=125
+doppeleichenholzstufe=125:0
+doppelfichtenholzstufe=125:1
+doppelbirkenholzstufe=125:2
+doppeltropenholzstufe=125:3
+doppelakazienholzstufe=125:4
+doppelschwarzeichenstufe=125:5
+holzstufe=126
+eichenholzstufe=126:0
+fichtenholzstufe=126:1
+birkenholzstufe=126:2
+tropenholzstufe=126:3
+akazienholzstufe=126:4
+schwarzeichenholzstufe=126:5
+kakaobohnen=127
+sandsteintreppe=128
+smaragderz=129
+endertruhe=130
+haken=131
+stolperdraht=132
+smaragdblock=133
+fichtenholztreppe=134
+birkenholztreppe=135
+tropenholztreppe=136
+kommandoblock=137
+leuchtfeuer=138
+bruchsteinmauer=139
+bemoostebruchsteinmauer=139:1
+blumentopfblock=140
+karottenpflanze=141
+kartoffelpflanze=142
+knopf=143
+skelettschaedel=144
+witherskelettschaedel=144:1
+zombieschaedel=144:2
+schaedel=144:3
+creeperschaedel=144:4
+amboss=145
+redstonetruhe=146
+waegeplatteniedrigegewichte=147 # WTF, that names are so stupid...
+waegeplattehohegewichte=148
+inaktiverkomparator=149
+aktiverkomparator=150
+tageslichtsensor=151
+redstoneblock=152
+netherquarzerz=153
+trichter=154
+quarzblock=155
+gemeisselterquarzblock=155:1
+quarzsaeule=155:2
+quarztreppe=156
+aktivierungsschiene=157
+spender=158
+weissgerfaerbterton=159
+orangegerfaerbterton=159:1
+magentagerfaerbterton=159:2
+hellblaugerfaerbterton=159:3
+gelbgerfaerbterton=159:4
+hellgruengerfaerbterton=159:5
+rosagerfaerbterton=159:6
+graugerfaerbterton=159:7
+hellgraugefaerbterton=159:8
+tuerkisgerfaerbterton=159:9
+purplegerfaerbterton=159:10
+violettegerfaerbterton=159:10
+blaugerfaerbterton=159:11
+braungerfaerbterton=159:12
+gruengerfaerbterton=159:13
+rotgerfaerbterton=159:14
+schwarzgerfaerbterton=159:15
+weisseglasscheibe=160
+orangeneglasscheibe=160:1
+magentaglasscheibe=160:2
+hellblaueglasscheibe=160:3
+gelbeglasscheibe=160:4
+hellgrueneglasscheibe=160:5
+rosaglasscheibe=160:6
+graueglasscheibe=160:7
+hellgraueglasscheibe=160:8
+tuerkiseglasscheibe=160:9
+violetteglasscheibe=160:10
+blaueglasscheibe=160:11
+brauneglasscheibe=160:12
+grueneglasscheibe=160:13
+roteglasscheibe=160:14
+schwarzeglasscheibe=160:15
+neueslaub=161
+akazienlaub=161:0
+schwarzeichenlaub=161:1
+neuestaemme=162
+akazienholz=162:0
+schwarzeichenholz=162:1
+akazientreppe=163
+schwarzeichentreppe=164
+schleimblock=165
+bartriere=166
+eisenfalltür=167
+prismarin=168
+prismarinziegel=168:1
+dunklerprismarin=168:2
+seelaterne=169
+strohballen=170
+teppich=171
+weisserteppich=171:0
+orangenerteppich=171:1
+magentateppich=171:2
+hellblauerteppich=171:3
+gelberteppich=171:4
+hellgruenerteppich=171:5
+rosateppich=171:6
+grauerteppich=171:7
+hellgrauerteppich=171:8
+tuerkiserteppich=171:9
+violetterteppich=171:10
+blauerteppich=171:11
+braunerteppich=171:12
+gruenerteppich=171:13
+roterteppich=171:14
+schwarzerteppich=171:15
+gebrannterton=172
+kohleblock=173
+packeis=174
+doppelpflanze=175
+sonnenblume=175:0
+Flieder=175:1
+hohesgras=175:2
+grosserfarn=175:3
+rosenstrauch=175:4
+pfingstrose=175:5
+rotersandstein=179
+gemeisselterrotersandstein=179:1
+glatterrotersandstein=179:2
+rotesandsteintreppe=180
+neuesteinstufe=182
+rotesandsteinstufe=182:0
+fichtenzauntor=183
+birkenzauntor=184
+tropenzauntor=185
+schwarzeichenzauntor=186
+akazienzauntor=187
+fichtenzaun=188
+birkenzaun=189
+tropenzaun=190
+schwarzeichenzaun=191
+akazienzaun=192
+eisenschaufel=256
+eisenspitzhacke=257
+eisenaxt=258
+feuerzeug=259
+apfel=260
+bogen=261
+pfeil=262
+kohle=263
+holzkohle=263:1
+diamant=264
+eisenbarren=265
+goldbarren=266
+eisenschwert=267
+holzschwert=268
+holzschaufel=269
+holzspitzhacke=270
+holzaxt=271
+steinschwert=272
+steinschaufel=273
+steinspitzhacke=274
+steinaxt=275
+diamantschwert=276
+diamantschaufel=277
+diamantspitzhacke=278
+diamantaxt=279
+stock=280
+schuessel=281
+pilzsuppe=282
+goldschwert=283
+goldschaufel=284
+goldspitzhacke=285
+goldaxt=286
+faden=287
+feder=288
+schwarzpulver=289
+holzhacke=290
+steinhacke=291
+eisenhacke=292
+diamanthacke=293
+goldhacke=294
+samen=295
+weizen=296
+brot=297
+lederkappe=298
+lederjacke=299
+lederhose=300
+lederstiefel=301
+kettenhaube=302
+kettenhemd=303
+kettenhose=304
+kettenstiefel=305
+eisenhelm=306
+eisenbrustplatte=307
+eisenbeinschutz=308
+eisenstiefel=309
+diamanthelm=310
+diamantbrustplatte=311
+diamantbeinschutz=312
+diamantstiefel=313
+goldhelm=314
+goldharnisch=315
+goldbeinschutz=316
+goldstiefel=317
+goldboots=317
+feuerstein=318
+rohesschweinefleisch=319
+gebratenesschweinefleisch=320
+gemaelde=321
+goldenerapfel=322
+goldenerapfel=322:1
+schild=323
+eichenholztuer=324
+eimer=325
+wassereimer=326
+lavaeimer=327
+lore=328
+sattel=329
+eisentuer=330
+redstone=331
+schneeballl=332
+boot=333
+leder=334
+milcht=335
+ziegel=336
+ton=337
+zuckercane=338
+papier=339
+buch=340
+schleimball=341
+gueterlore=342
+angetriebenelore=343
+ei=344
+kompass=345
+angel=346
+uhr=347
+glowstonestaub=348
+fisch=349
+roherfisch=349
+roherlachs=349:1
+clownfisch=349:2
+kugelfisch=349:3
+gebratenerfisch=350
+gebratenerlachs=350:1
+farbe=351
+tintenbeutel=351:0
+rosenrot=351:1
+kaktusgruen=351:2
+kakaobohnen=351:3
+lapislazuli=351:4
+violetterfarbstoff=351:5
+tuerkiserfarbstoff=351:6
+hellgrauerfarbstoff=351:7
+grauerfarbstoff=351:8
+rosafarbstoff=351:9
+hellgruenerfarbstoff=351:10
+gelberfarbstoff=351:11
+hellblauerfarbstoff=351:12
+magentafarbstoff=351:13
+orangenerfarbstoff=351:14
+knochenmehl=351:15
+knochen=352
+zucker=353
+kuchen=354
+bett=355
+redstoneverstaerker=356
+keks=357
+karte=358
+schere=359
+melone=360
+kürbiskerne=361
+melonenkerne=362
+rohesrindfleisch=363
+steak=364
+roheshühnchen=365
+gebrateneshühnchen=366
+verrottetesfleisch=367
+enderperle=368
+lohenrute=369
+ghasttraene=370
+goldnugget=371
+netherwarze=372
+trank=373
+glasflasche=374
+spinnenauge=375
+fermentiertesspinnenauge=376
+lohenstaub=377
+magmacreme=378
+braustand=379
+kessel=380
+enderauge=381
+glitzerndemelone=382
+spawnei=383
+erfahrungsfläschchen=384
+feuerkugel=385
+buchundfeder=386
+beschriebenesbuch=387
+smaragd=388
+rahmen=389
+blumentopf=390
+karotte=391
+kartoffel=392
+ofenkartoffel=393
+giftigekartoffel=394
+leerekarte=395
+goldenekarotte=396
+skelettschaedel=397
+witherschaedel=397:1
+zombieschaedel=397:2
+kopf=397:3
+creeperschaedel=397:4
+karottenrute=398
+netherstern=399
+kuerbiskuchen=400
+feuerwerksrakete=401
+feuerwerksstern=402
+verzauberungsbuch=403
+redstonekomparator=404
+netherziegelitem=405
+netherquarz=406
+tntlore=407
+trichterlore=408
+prismarinscherbe=409
+prismarinkristalle=410
+roheskaninchen=411
+gebrateneskaninchen=412
+kaninchenragout=413
+hasenpfote=414
+kaninchenfell=415
+ruestungsstaender=416
+eisernepferderuestung=417
+goldenepferderuestung=418
+diamantenepferderuestung=419
+leine=420
+namensschild=421
+kommandoblocklore=422
+roheshammelfleisch=423
+gebrateneshammelfleisch=424
+banner=425
+schwarzesbanner=415:0
+rotesbanner=415:1
+gruenesbanner=415:2
+braunbanner=415:3
+blauesbanner=415:4
+violettesbanner=415:5
+tuerkisesbanner=415:6
+hellgrauesbanner=415:7
+grauesbanner=415:8
+rosabanner=415:9
+hellgruenesbanner=415:10
+gelbesbanner=415:11
+hellblauesbanner=415:12
+magentabanner=415:13
+orangenesbanner=415:14
+weissesbanner=415:15
+fichtenholztuer=427
+birkenholztuer=428
+tropentuer=429
+akazientuer=430
+schwarzeichentuer=431
+goldeneschallplatte=2256
+grueneschallplatte=2257
+blocksschallplatte=2258
+chirpschallplatte=2259
+farschallplatte=2260
+mallschallplatte=2261
+mellohischallplatte=2262
+stalschallplatte=2263
+stradschallplatte=2264
+wardschallplatte=2265
+11schallplatte=2266
+
+
+
diff --git a/MCServer/webadmin/files/background.gif b/MCServer/webadmin/files/background.gif
new file mode 100644
index 000000000..cab9bed56
--- /dev/null
+++ b/MCServer/webadmin/files/background.gif
Binary files differ
diff --git a/MCServer/webadmin/files/favicon.ico b/MCServer/webadmin/files/favicon.ico
new file mode 100644
index 000000000..ea4bde926
--- /dev/null
+++ b/MCServer/webadmin/files/favicon.ico
Binary files differ
diff --git a/MCServer/webadmin/files/logo.png b/MCServer/webadmin/files/logo.png
new file mode 100644
index 000000000..50733e824
--- /dev/null
+++ b/MCServer/webadmin/files/logo.png
Binary files differ
diff --git a/MCServer/webadmin/files/mc-logo.png b/MCServer/webadmin/files/mc-logo.png
new file mode 100644
index 000000000..9a77a490f
--- /dev/null
+++ b/MCServer/webadmin/files/mc-logo.png
Binary files differ
diff --git a/MCServer/webadmin/files/style.css b/MCServer/webadmin/files/style.css
new file mode 100644
index 000000000..e7ffe3999
--- /dev/null
+++ b/MCServer/webadmin/files/style.css
@@ -0,0 +1,326 @@
+/* reset CSS */
+
+html, body, div, span, applet, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, code,
+del, dfn, em, font, img, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+b, u, i, center,
+dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ outline: 0;
+ font-size: 100%;
+ vertical-align: baseline;
+ background: transparent;
+}
+body {
+ line-height: 1;
+}
+ol, ul {
+ list-style: none;
+}
+blockquote, q {
+ quotes: none;
+}
+
+/* remember to define focus styles! */
+:focus {
+ outline: 0;
+}
+
+/* remove textarea resize at Safari */
+textarea {
+ resize: none;
+}
+
+/* remember to highlight inserts somehow! */
+ins {
+ text-decoration: none;
+}
+del {
+ text-decoration: line-through;
+}
+
+/* tables still need 'cellspacing="0"' in the markup */
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+
+/*
+ Origional from http://www.perspectived.com/
+ Modified by Ben Phelps
+ Made for FakeTruth - MCServer
+*/
+
+/* Basic ---------------------------------------- */
+
+.clear { clear: both; }
+
+body {
+ background: white;
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 12px;
+ color: #646464;
+ text-align: center;
+}
+
+#wrapper {
+ text-align: left;
+ width: 930px;
+ margin: 0 auto;
+}
+
+/* Logo ---------------------------------------- */
+
+h1 {
+ margin: 15px 0 10px 5px;
+ width: 180px;
+ height: 36px;
+ background: url(logo.png) no-repeat left top;
+}
+
+h1 a {
+ display: block;
+ width: 225px;
+ height: 28px;
+}
+
+h1 span { display: none; }
+
+a {
+ color: #646464;
+}
+
+/* Container ---------------------------------------- */
+
+#containerHolder {
+ background: #eee;
+ padding: 5px;
+}
+
+
+#container {
+ background: #fff url(background.gif) repeat-y left top;
+ border: 1px solid #ddd;
+ width: 918px;
+
+}
+
+#connectHolder {
+ background: #eee;
+ padding: 5px;
+ margin-bottom:8px;
+}
+
+
+#connect {
+ border: 1px solid #ddd;
+ background-color: #fff;
+ padding:5px;
+ width: 908px;
+}
+
+.pics {
+ height: 375px;
+ width: 600px;
+}
+
+.pics img {
+ padding: 5px;
+ border: 1px solid #ddd;
+ background-color: #eee;
+ width: 600px;
+ height: 375px;
+ margin-left: 15px;
+}
+
+/* Login -------------------------------------- */
+
+#loginLogo {
+ margin: 0 auto;
+ margin-top:100px;
+ width: 180px;
+ height: 36px;
+ background-image: url(logo.png);
+}
+
+#loginHolder {
+ background: #eee;
+ padding: 5px;
+ width: 310px;
+ margin: 0 auto;
+ height: 90px;
+ margin-top:20px;
+}
+
+#login {
+ padding:10px;
+ width: 288px;
+ height: 68px;
+ border: 1px solid #ddd;
+ background:#fff;
+ text-align: left;
+}
+
+
+/* Sidebar ---------------------------------------- */
+
+#sidebar {
+ width: 179px;
+ float: left;
+}
+
+#sidebar .sideNav { width: 179px; }
+
+#sidebar .sideNav li { border-bottom: 1px solid #ddd; width: 179px; }
+
+#sidebar .sideNav li a {
+ display: block;
+ color: #646464;
+ background: #f6f6f6;
+ text-decoration: none;
+ height: 29px;
+ line-height: 29px;
+ padding: 0 19px;
+ width: 141px;
+}
+
+#sidebar .sideNav li a:hover { background: #fdfcf6; }
+
+#sidebar .sideNav li a.active, #sidebar .sideNav li a.active:hover {
+ background: #f0f7fa;
+ color: #c66653;
+}
+
+/* Breadcrumb ---------------------------------------- */
+
+h2 {
+ width: 718px;
+ float: right;
+ color: #646464;
+ font-size: 16px;
+ line-height: 16px;
+ font-weight: bold;
+ margin: 20px 0 0 0;
+ padding: 0 0 10px 0;
+ border-bottom: 1px solid #ddd;
+}
+
+h2 a {
+ color: #646464;
+ text-decoration: none;
+}
+
+h2 a.active { color: #c66653; }
+
+h2 a:hover { text-decoration: underline; }
+
+/* Content ---------------------------------------- */
+
+#main {
+ width: 700px;
+ float: right;
+ padding: 0 19px 0 0;
+}
+
+#main p {
+
+ padding: 10px;
+
+}
+
+h3 {
+ font-size: 14px;
+ line-height: 14px;
+ font-weight: bold;
+ color: #5494af;
+ padding: 0 0 0 10px;
+ margin: 20px 0 10px;
+}
+
+h4 {
+ padding: 0 0 0 10px;
+ margin: 20px 0 10px;
+}
+
+#main ul {
+ padding: 0 0 0 10px;
+ list-style-type: circle;
+ list-style-position: inside;
+}
+
+#main table {
+ border-top: 1px solid #ddd;
+ width: 700px;
+}
+
+#main table tr th {
+ text-align: left;
+ background: #f6f6f6;
+ padding: 0px 20px;
+ height: 20px;
+ line-height: 20px;
+ border-bottom: 1px solid #ddd;
+}
+
+#main table tr td {
+ background: #f6f6f6;
+ padding: 0px 20px;
+ height: 29px;
+ line-height: 29px;
+ border-bottom: 1px solid #ddd;
+}
+
+#main table tr.odd td {
+ background: #fbfbfb;
+}
+
+#main table tr:hover td { background: #fdfcf6; }
+
+#main table .action {
+ text-align: right;
+ padding: 0 20px 0 10px;
+}
+
+#main table tr .action a { margin: 0 0 0 10px; text-decoration: none; color: #9b9b9b; }
+#main table tr:hover .action .edit { color: #c5a059; }
+#main table tr:hover .action .delete { color: #a02b2b; }
+#main table tr:hover .action .view { color: #55a34a; }
+
+#main table tr:hover .action a:hover { text-decoration: underline; }
+
+fieldset {
+ border: 1px solid #ddd;
+ padding: 19px;
+ margin: 0 0 20px 0;
+ background: #fbfbfb;
+}
+
+form p { margin: 0 0 14px 0; float: left; width: 100%; }
+
+label {
+ display: block;
+ width: 100%;
+ margin: 0 0 7px 0;
+ line-height: 12px;
+}
+
+/* Footer ---------------------------------------- */
+
+#footer {
+ margin: 10px 0 30px 0;
+ font-size: 11px;
+ line-height: 11px;
+ color: #9B9B9B;
+ padding: 0 0 0 5px;
+}
+
+#footer a { color: #9B9B9B; }
+
+#footer a:hover { text-decoration: none; }
diff --git a/MCServer/webadmin/login_template.html b/MCServer/webadmin/login_template.html
new file mode 100644
index 000000000..913a85db0
--- /dev/null
+++ b/MCServer/webadmin/login_template.html
@@ -0,0 +1,25 @@
+<html>
+<head>
+ <title>MCServer WebAdmin - Login</title>
+ <meta charset="UTF-8">
+ <link rel="icon" href="favicon.ico">
+ <style type="text/css">
+ header {
+ margin: 0 auto;
+ text-align: center;
+ vertical-align: middle;
+ }
+ </style>
+</head>
+
+<body>
+ <header>
+ <img src="mc-logo.png" alt="MCServer Logo" class="logo">
+ <h1>MCServer - WebAdmin</h1>
+ <form method="get" action="webadmin/">
+ <input type="submit" value="Log in">
+ </form>
+ </header>
+</body>
+
+</html>
diff --git a/MCServer/webadmin/template.lua b/MCServer/webadmin/template.lua
index a066d8b33..a7480f83e 100644
--- a/MCServer/webadmin/template.lua
+++ b/MCServer/webadmin/template.lua
@@ -57,7 +57,7 @@ end
function ShowPage(WebAdmin, TemplateRequest)
SiteContent = {}
local BaseURL = WebAdmin:GetBaseURL(TemplateRequest.Request.Path)
- local Title = "MCServer"
+ local Title = "MCServer WebAdmin"
local MemoryUsageKiB = cRoot:GetPhysicalRAMUsage()
local NumChunks = cRoot:Get():GetTotalChunkCount()
local PluginPage = WebAdmin:GetPage(TemplateRequest.Request)
@@ -74,339 +74,9 @@ function ShowPage(WebAdmin, TemplateRequest)
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<link rel="icon" href="data:application/octet-stream;base64,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">
+<link rel="icon" href="/favicon.ico">
<title>]] .. Title .. [[</title>
-
-<style type="text/css" media="screen">
-
- /* reset CSS */
-
- html, body, div, span, applet, object, iframe,
- h1, h2, h3, h4, h5, h6, p, blockquote, pre,
- a, abbr, acronym, address, big, cite, code,
- del, dfn, em, font, img, ins, kbd, q, s, samp,
- small, strike, strong, sub, sup, tt, var,
- b, u, i, center,
- dl, dt, dd, ol, ul, li,
- fieldset, form, label, legend,
- table, caption, tbody, tfoot, thead, tr, th, td {
- margin: 0;
- padding: 0;
- border: 0;
- outline: 0;
- font-size: 100%;
- vertical-align: baseline;
- background: transparent;
- }
- body {
- line-height: 1;
- }
- ol, ul {
- list-style: none;
- }
- blockquote, q {
- quotes: none;
- }
-
- /* remember to define focus styles! */
- :focus {
- outline: 0;
- }
-
- /* remove textarea resize at Safari */
- textarea {
- resize: none;
- }
-
- /* remember to highlight inserts somehow! */
- ins {
- text-decoration: none;
- }
- del {
- text-decoration: line-through;
- }
-
- /* tables still need 'cellspacing="0"' in the markup */
- table {
- border-collapse: collapse;
- border-spacing: 0;
- }
-
-
- /*
- Origional from http://www.perspectived.com/
- Modified by Ben Phelps
- Made for FakeTruth - MCServer
- */
-
- /* Basic ---------------------------------------- */
-
- .clear { clear: both; }
-
- body {
- background: white;
- font-family: Arial, Helvetica, sans-serif;
- font-size: 12px;
- color: #646464;
- text-align: center;
- }
-
- #wrapper {
- text-align: left;
- width: 930px;
- margin: 0 auto;
- }
-
- /* Logo ---------------------------------------- */
-
- h1 {
- margin: 15px 0 10px 5px;
- width: 180px;
- height: 36px;
- background: url(data:image/png;base64,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) no-repeat left top;
- }
-
- h1 a {
- display: block;
- width: 225px;
- height: 28px;
- }
-
- h1 span { display: none; }
-
- a {
- color: #646464;
- }
-
- /* Container ---------------------------------------- */
-
- #containerHolder {
- background: #eee;
- padding: 5px;
- }
-
-
- #container {
- background: #fff url(data:image/gif;base64,R0lGODlhtAABAIAAAN3d3f///yH5BAAAAAAALAAAAAC0AAEAAAIMjI+py+0Po5y0WgYKADs%3D) repeat-y left top;
- border: 1px solid #ddd;
- width: 918px;
-
- }
-
- #connectHolder {
- background: #eee;
- padding: 5px;
- margin-bottom:8px;
- }
-
-
- #connect {
- border: 1px solid #ddd;
- background-color: #fff;
- padding:5px;
- width: 908px;
- }
-
- .pics {
- height: 375px;
- width: 600px;
- }
-
- .pics img {
- padding: 5px;
- border: 1px solid #ddd;
- background-color: #eee;
- width: 600px;
- height: 375px;
- margin-left: 15px;
- }
-
- /* Login -------------------------------------- */
-
- #loginLogo {
- margin: 0 auto;
- margin-top:100px;
- width: 180px;
- height: 36px;
- background-image: url(data:image/png;base64,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);
- }
-
- #loginHolder {
- background: #eee;
- padding: 5px;
- width: 310px;
- margin: 0 auto;
- height: 90px;
- margin-top:20px;
- }
-
- #login {
- padding:10px;
- width: 288px;
- height: 68px;
- border: 1px solid #ddd;
- background:#fff;
- text-align: left;
- }
-
-
- /* Sidebar ---------------------------------------- */
-
- #sidebar {
- width: 179px;
- float: left;
- }
-
- #sidebar .sideNav { width: 179px; }
-
- #sidebar .sideNav li { border-bottom: 1px solid #ddd; width: 179px; }
-
- #sidebar .sideNav li a {
- display: block;
- color: #646464;
- background: #f6f6f6;
- text-decoration: none;
- height: 29px;
- line-height: 29px;
- padding: 0 19px;
- width: 141px;
- }
-
- #sidebar .sideNav li a:hover { background: #fdfcf6; }
-
- #sidebar .sideNav li a.active, #sidebar .sideNav li a.active:hover {
- background: #f0f7fa;
- color: #c66653;
- }
-
- /* Breadcrumb ---------------------------------------- */
-
- h2 {
- width: 718px;
- float: right;
- color: #646464;
- font-size: 16px;
- line-height: 16px;
- font-weight: bold;
- margin: 20px 0 0 0;
- padding: 0 0 10px 0;
- border-bottom: 1px solid #ddd;
- }
-
- h2 a {
- color: #646464;
- text-decoration: none;
- }
-
- h2 a.active { color: #c66653; }
-
- h2 a:hover { text-decoration: underline; }
-
- /* Content ---------------------------------------- */
-
- #main {
- width: 700px;
- float: right;
- padding: 0 19px 0 0;
- }
-
- #main p {
-
- padding: 10px;
-
- }
-
- h3 {
- font-size: 14px;
- line-height: 14px;
- font-weight: bold;
- color: #5494af;
- padding: 0 0 0 10px;
- margin: 20px 0 10px;
- }
-
- h4 {
- padding: 0 0 0 10px;
- margin: 20px 0 10px;
- }
-
- #main ul {
- padding: 0 0 0 10px;
- list-style-type: circle;
- list-style-position: inside;
- }
-
- #main table {
- border-top: 1px solid #ddd;
- width: 700px;
- }
-
- #main table tr th {
- text-align: left;
- background: #f6f6f6;
- padding: 0px 20px;
- height: 20px;
- line-height: 20px;
- border-bottom: 1px solid #ddd;
- }
-
- #main table tr td {
- background: #f6f6f6;
- padding: 0px 20px;
- height: 29px;
- line-height: 29px;
- border-bottom: 1px solid #ddd;
- }
-
- #main table tr.odd td {
- background: #fbfbfb;
- }
-
- #main table tr:hover td { background: #fdfcf6; }
-
- #main table .action {
- text-align: right;
- padding: 0 20px 0 10px;
- }
-
- #main table tr .action a { margin: 0 0 0 10px; text-decoration: none; color: #9b9b9b; }
- #main table tr:hover .action .edit { color: #c5a059; }
- #main table tr:hover .action .delete { color: #a02b2b; }
- #main table tr:hover .action .view { color: #55a34a; }
-
- #main table tr:hover .action a:hover { text-decoration: underline; }
-
- fieldset {
- border: 1px solid #ddd;
- padding: 19px;
- margin: 0 0 20px 0;
- background: #fbfbfb;
- }
-
- form p { margin: 0 0 14px 0; float: left; width: 100%; }
-
- label {
- display: block;
- width: 100%;
- margin: 0 0 7px 0;
- line-height: 12px;
- }
-
- /* Footer ---------------------------------------- */
-
- #footer {
- margin: 10px 0 30px 0;
- font-size: 11px;
- line-height: 11px;
- color: #9B9B9B;
- padding: 0 0 0 5px;
- }
-
- #footer a { color: #9B9B9B; }
-
- #footer a:hover { text-decoration: none; }
-</style>
-
+<link rel="stylesheet" type="text/css" media="screen" href="/style.css">
</head>
<body>
@@ -421,16 +91,16 @@ function ShowPage(WebAdmin, TemplateRequest)
<ul class="sideNav">
]])
-
+
local AllPlugins = WebAdmin:GetPlugins()
for key,value in pairs(AllPlugins) do
local PluginWebTitle = value:GetWebTitle()
local TabNames = value:GetTabNames()
if (GetTableSize(TabNames) > 0) then
- Output("<li>"..PluginWebTitle.."</li>");
+ Output("<li>"..PluginWebTitle.."</li>\n");
for webname,prettyname in pairs(TabNames) do
- Output("<li><a href='" .. BaseURL .. PluginWebTitle .. "/" .. webname .. "'>" .. prettyname .. "</a></li>")
+ Output("<li><a href='" .. BaseURL .. PluginWebTitle .. "/" .. webname .. "'>" .. prettyname .. "</a></li>\n")
end
end
end
@@ -464,4 +134,4 @@ function ShowPage(WebAdmin, TemplateRequest)
]])
return table.concat(SiteContent)
-end \ No newline at end of file
+end