diff options
author | Howaner <franzi.moos@googlemail.com> | 2014-09-23 14:39:49 +0200 |
---|---|---|
committer | Howaner <franzi.moos@googlemail.com> | 2014-09-23 14:39:49 +0200 |
commit | 4b38e077cf8d27d1c7ef26d4148f7825c5aeaabd (patch) | |
tree | cd86062eb50ba870f73b6f29dec0205f87205bf8 /MCServer | |
parent | Merge branch 'master' into EntityCustomName (diff) | |
parent | QtBiomeVisualiser: Fixed confusion about Globals.h. (diff) | |
download | cuberite-4b38e077cf8d27d1c7ef26d4148f7825c5aeaabd.tar cuberite-4b38e077cf8d27d1c7ef26d4148f7825c5aeaabd.tar.gz cuberite-4b38e077cf8d27d1c7ef26d4148f7825c5aeaabd.tar.bz2 cuberite-4b38e077cf8d27d1c7ef26d4148f7825c5aeaabd.tar.lz cuberite-4b38e077cf8d27d1c7ef26d4148f7825c5aeaabd.tar.xz cuberite-4b38e077cf8d27d1c7ef26d4148f7825c5aeaabd.tar.zst cuberite-4b38e077cf8d27d1c7ef26d4148f7825c5aeaabd.zip |
Diffstat (limited to 'MCServer')
-rw-r--r-- | MCServer/Plugins/APIDump/APIDesc.lua | 26 | ||||
-rw-r--r-- | MCServer/Plugins/APIDump/Hooks/OnSpawningEntity.lua | 5 | ||||
-rw-r--r-- | MCServer/Plugins/APIDump/Writing-a-MCServer-plugin.html | 6 | ||||
-rw-r--r-- | MCServer/Plugins/Debuggers/Debuggers.lua | 67 | ||||
-rw-r--r-- | MCServer/crafting.txt | 29 | ||||
-rw-r--r-- | MCServer/items.ini | 274 | ||||
-rw-r--r-- | MCServer/lang/items_de.ini | 603 | ||||
-rw-r--r-- | MCServer/webadmin/files/background.gif | bin | 0 -> 57 bytes | |||
-rw-r--r-- | MCServer/webadmin/files/favicon.ico | bin | 0 -> 32038 bytes | |||
-rw-r--r-- | MCServer/webadmin/files/logo.png | bin | 0 -> 3315 bytes | |||
-rw-r--r-- | MCServer/webadmin/files/mc-logo.png | bin | 0 -> 66137 bytes | |||
-rw-r--r-- | MCServer/webadmin/files/style.css | 326 | ||||
-rw-r--r-- | MCServer/webadmin/login_template.html | 25 | ||||
-rw-r--r-- | MCServer/webadmin/template.lua | 344 |
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 Binary files differnew file mode 100644 index 000000000..cab9bed56 --- /dev/null +++ b/MCServer/webadmin/files/background.gif diff --git a/MCServer/webadmin/files/favicon.ico b/MCServer/webadmin/files/favicon.ico Binary files differnew file mode 100644 index 000000000..ea4bde926 --- /dev/null +++ b/MCServer/webadmin/files/favicon.ico diff --git a/MCServer/webadmin/files/logo.png b/MCServer/webadmin/files/logo.png Binary files differnew file mode 100644 index 000000000..50733e824 --- /dev/null +++ b/MCServer/webadmin/files/logo.png diff --git a/MCServer/webadmin/files/mc-logo.png b/MCServer/webadmin/files/mc-logo.png Binary files differnew file mode 100644 index 000000000..9a77a490f --- /dev/null +++ b/MCServer/webadmin/files/mc-logo.png 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 |